Extended bed levelling code for FlashForge Creator Pro

by DrLex, published

Extended bed levelling code for FlashForge Creator Pro by DrLex Aug 1, 2016
0 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

5284Views 1652Downloads Found in 3D Printing Tests


This is a set of x3g files that are intended to offer much more flexibility, as well reliability, than the default plate levelling file that comes with the FFCP. The improvements are:

  1. There are specific files for levelling only the right (R), left (L), or both (LR) nozzles.
  2. There are specific files for different levelling sheet thicknesses.
  3. The nozzles, or the center between them, are positioned (nearly) exactly above each adjustment screw.
  4. The nozzles are not placed inside the recessed zone around each screw, but just outside of it. This avoids inaccurate levelling if your printing bed is covered by a non-rigid material like tape or BuildTak.
  5. There are also advanced files that keep the bed, and optionally the extruders, heated during levelling.

Next to the levelling files, there is a set of ‘BedProbe’ files that position the nozzles over a grid of 9 points. This can be used to check how level and flat your printing platform really is. Ideally, after you have levelled your platform in the usual 3-point way and you run this file, the levelling sheet should reveal similar friction for each of the nine points. In reality though, at least in my reality, the bed proves not perfect and the nozzles are higher or lower in some areas. This file can be used as an extra test before starting a print that covers a large area of the platform, to ensure that some parts won't be detaching because the nozzles are too high there. The general advice though, is to use a sufficiently thick first layer to be robust against unevenness in the platform.

These files are meant for the FlashForge Creator Pro, but will probably work for similar printers with a 230x155 mm build plate as well.

(I included a simple cube STL file because Thingiverse requires at least one 3D model per Thing.)


The procedure for using these files is as follows:

  1. Choose the correct levelling file(s) and put it (them) on your SD card.
  2. Each time you're going to print with a different extruder, or a different bed temperature than previously, do the following.
  3. Preheat the bed (approximately) to the temperature you will be using during the print. You do not need to preheat the extruders, in fact I advise against it unless you know what you're doing.
  4. ‘Print’ the levelling file and follow the instructions on the LCD. The nozzle will be positioned above each adjustment knob. Make sure you can move your levelling sheet under the nozzle, then adjust the knob until you feel a good deal of friction, but can still easily move the sheet. Depending on the bed surface and particular filament, you may need to aim for slightly more or slightly less friction, but you should never tighten the knobs to the point where the sheet can no longer get under the nozzle.

The most important step is the first one: pick the appropriate file. There are a lot of them, but I have packaged the less important ones in separate zip files, those are only for advanced use (see below). The regular files are named like: “Level-{extruders}-{sheet_thickness}”. If you're going to print with the left extruder only, use the ‘L’ files. Same for ‘R’ for right, and ‘LR’ for dual extrusions.

The sheet thickness should match the thickness in micrometers of your levelling sheet, divided by 10. If you don't know how thick your sheet is, you really should consider buying an accurate caliper. You can make an educated guess however: typical plain paper is usually 0.1 mm thick, the plastic levelling sheet that came with my FFCP is 0.2 mm thick, and some magazine covers and flyers are 0.15 mm thick.

An example: “Level-R-20.x3g” is the file for printing with the right extruder, when using a levelling sheet that is 0.2 mm (or 200 µm) thick.


To verify that everything works correctly, do a test print with only one layer. Measure how thick this printed layer is, using an accurate caliper or a micrometer (again, if you don't have one, you really should). It should correspond roughly to the first layer thickness as configured in your slicer program. If it is way off, check the next paragraph.

By ensuring that your first layer is printed at the correct thickness, you can reliably tweak the following things to get optimal adhesion:

  1. First layer extrusion width. I usually take 150% of the nozzle diameter, i.e. 0.6 mm for a .4 nozzle.
  2. First layer thickness. I never go below 0.25 mm for a 0.4 mm nozzle. You shouldn't make it higher than 2/3 of the extrusion width either.
  3. First layer speed. I usually stay within the range of 20 to 30 mm/s.

If your first layer is consistently too thick or thin…

… then check the “Home offsets” setting in the printer's LCD menu and adjust the value for Z until your first layer has the expected thickness when following the above levelling procedure.
For instance, after upgrading my FFCP's firmware, all my prints suddenly had way too tall first layers with horribly bad adhesion as a result. I measured the thickness of single-layer test prints, and they were consistently too thick by 0.15 mm. Somehow, the new firmware had changed the Z homing offset. By changing it to -0.15 mm in the menu, things were back to normal.

Advanced Files

One problem with the regular files (and any other levelling file), is that they abort any preheating you had previously started, because the printer treats them like any other print file. Usually this is not a problem. Even if you repeat the levelling procedure a few times in a row, the bed will not cool down significantly enough to cause notable inaccuracies. But, it can be annoying to have to wait for the bed to heat again while starting your actual print, and some people do want to eliminate any possible variations due to the cooling-down. Also, some people like to preheat their extruders as well. Even though I don't, I still offer this option in these extra files.

The files are available for bed temperatures (indicated by the ‘b’ part in their names) of 50, 60, 80, and 95°C. The available extruder temperatures are 190, 220, 230, and 240°C. Not all combinations are available because as you may have guessed, the 50°C and 60°C bed files are meant for PLA, the 80°C files for PETG, and 95°C for ABS, therefore they are only mixed with appropriate temperatures for those materials.

A Perl script that generates all the variations on the files from the .gcode template files, is also available for download. You can use this to generate other combinations of temperatures or sheet thicknesses. Don't be afraid of the Perl file, it is straightforward to edit and I'm not the kind of person who likes to make ‘write-only’ code.

Background Info

Why preheat the bed before levelling?

There is enough thermal expansion that the distance between the bed and nozzles changes when heating the bed. This is especially significant when you go above 60°C, so you might get away with not preheating if you only print PLA.

Why not preheat the extruders too?

If you do believe heating the extruders improves accuracy, feel free to do it, but I prefer not to. The effect of thermal expansion is much less significant for the extruders. Moreover, they will probably start oozing, which makes levelling messy and difficult. Moreover, at temperatures of 190°C and above, you risk burning your levelling sheet.

Why the weird ‘music’ at the end of the files?

This is actually necessary to avoid that you will see the ‘print finished’ LCD screen before the levelling procedure is completed. The printer doesn't consider a print finished when its last command is executed, but instead when the command input buffer is empty. By appending enough extra beep commands at the end, the buffer remains filled for longer. This is only really necessary for the advanced files, but even for the regular ones it reduces the risk that you accidentally activate a menu option instead of moving the nozzle to the next levelling spot.



Each file now comes in three variations to allow more accurate levelling depending on how thick your levelling sheet is.


Increased the clearance for travel moves from 3 mm to 6 mm. This is to avoid that the nozzle will carve into your build surface in case you have mounted something extra on top (like glass) and forgot to install a shim to lower the Z endstop. (Of course this will still happen if your added height is 6 mm or more.)
Also added a more verbose LCD message at the start of each file.


Added extra files that can also heat the bed and optionally the extruders. Included the script to generate the variations, so you can make your own if you have some basic Perl skills.

More from 3D Printing Tests

view more

File Name



All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Treatstock is an online platform that offers decentralized manufacturing services such as 3D printing and CNC machining for clients all over the world. We offer free and instant access to comparati...

App Info Launch App

3D print your favourite design with NinjaPrototype, a professional 3D manufacture with consistent quality and speed.

App Info Launch App

Thank you very much for sharing your hard work with the community. These leveling files look really good and are well needed by anyone who has a FFCP printer.
Thanks again, DrLex,

This is fantastic! So much better than the default one!
Could I make a suggestion?

That you make another set of them which heats the nozzles both to 190 and the bed to 50 within the actual script?
I only suggest this as as soon as you run the script, even if you've pre-heated, everything begins to cool down and if you need to run 2-3 times it can get frustrating having to reheat between (this is not a reflection on your script in any way, this in an issue with all leveling scripts I've used).

Whilst temperatures may vary from those I've suggested, I think as a ballpark they'd be a great one to work with?

I have added the files that activate the heaters. They are available for 50, 60, 80, 95, and 110°C bed temperatures, and 190, 220, 230, and 240°C extruder temperatures. Only the most probable combinations are available. I packaged these files in zip files to avoid confusion for people who just want to use the non-heated files. Enjoy!

Fantastic work! Thanks so much for doing this, Really useful!

The levelling files are treated as any regular print, so preheating is aborted when starting them. I have checked whether this can be avoided, but found no solution.
I have considered making files that heat the bed and perhaps the nozzles also, but I don't preheat the nozzles for levelling because the oozing filament makes it messy and difficult, and the levelling sheet gets damaged from the heat. The bed doesn't cool down significantly enough during levelling to cause inaccuracies, even when doing it 3 times in a row.

It isn't much effort however to make a bunch of files with common bed and nozzle temperatures. I will have to limit the possibilities though, because the number of possible combinations will quickly become huge. It will be something for after Christmas.

THANK YOU SO Much! My FFCP cam with a very BASIC cal file - so basic as to be relatively useless.
This set is awesome and I tip my hat to you sir!

You say that " This only works reliably if you preheat the bed; " why is that?

Heating the bed will cause parts to expand and the Z position of the bed to change. The amount of movement depends on the temperature. You want the bed to be levelled at the temperature it will have during the print. My guess is that FlashForge provides a 0.2 mm thick levelling sheet because this more or less compensates for the movement that occurs when heating it from room temperature to 110°C. If you deviate from that scenario in any way, e.g. heat to a different temperature or try to level while the bed is hot, the levelling becomes unreliable.