Tips for 3D Printing with the FlashForge Creator Pro

This article contains general advice about how to get started with the FlashForge Creator Pro 3D printer, as well as more advanced usage tips to improve print quality and reliability. The instructions are independent of what software you use, although some may only be applicable to PrusaSlicer (I provide a ready-to-use PrusaSlicer config bundle in the software section). Many tips are also applicable to other printers.



Around 2011, 3D printing broke through to the mainstream, partially thanks to certain patents expiring. As usual a bit of a hype emerged and less-than-well-informed journalists started claiming that traditional stores would disappear and everyone would be downloading products and printing them at home. Of course reality slowly returned and it became clear that 3D printers are not the ultimate solution to everything, yet they are useful for specific applications. I waited for the dust to settle and in 2016, I decided to buy a commercial 3D printer built with know-how accumulated over those five years. After evaluating different models, I picked the FlashForge Creator Pro due to its competitive price point and good reviews.

Slicing software: your options

To convert a 3D model into a set of instructions your printer understands, you need a ‘slicer.’ As the name implies, it is a program that slices the model into layers and then derives an optimal path for the extruders to follow to deposit each layer of material. When it comes to slicers, there are many options.

When I started out with my FFCP, it came with an installer for ReplicatorG on the SD card. Although I don't believe FlashForge still distributes this program, do not use it for printing even if you have it. There are much better slicers.

FlashForge has been developing their own slicing program called FlashPrint which is pretty decent for beginner use. If you want to do more advanced things however and don't want to be locked into the FlashForge ecosystem, you'll need to upgrade to a different slicer.

A popular one is Simplify3D but it is paid software and rather pricy. Many are enthusiastic about it because it “just works” (and of course because they paid a lot for it). This means that if you want to actually learn about the intricacies of 3D printing, it may be a bad choice because the software will shield you from all the things that can go wrong, which are usually also the things you learn the most from. If you just want to print things in the same way as you drive a car without knowing what makes it move, then you can just buy S3D, skip the rest of this chapter and move on to the hints.

There is also Cura which is developed by Ultimaker and optimised for their printers. Theoretically it is possible to use it with the FFCP, but I do not recommend it. You would need to find or create a set of Cura configs specifically made for the FFCP.

PrusaSlicerIf you want to go the slightly more adventurous way of using a free and open-source program, I recommend PrusaSlicer. Many new 3D printing features are pioneered in Slic3r and its PrusaSlicer fork, and only later on blatantly mimicked by the competition, so you'll often be ahead of the curve. PrusaSlicer started out as a fork of Slic3r with some minor changes, but it is quite different now. Although obviously primarily meant to be used with Prusa printers, it is as extensible as the original Slic3r and does not lock you into a certain printer vendor. It is being actively developed so if you find a bug or have a feature request, you can report it on GitHub and the developers will probably look into it. Or you can even fix it yourself if you have the skills.
If you decide to give PrusaSlicer a try, make sure to look ay my PrusaSlicer config bundle.

Other useful software and tools

Depending on what slicer you use, you may still need to convert the text-based G-code files into the binary X3G format. The best tool for this, is GPX. It is included into many software packages. On my PrusaSlicer config page, you'll find instructions on how to make GPX work together with PrusaSlicer (or Slic3r).

Even though ReplicatorG is obsolete as a slicer, it is still useful for changing firmware parameters through the USB interface, but even then you must obtain the latest compatible release because versions not specifically built for the Sailfish firmware are incompatible with the FFCP.

Some slicing programs can send commands directly to the FFCP over a USB serial connection. Neither FlashPrint (at the time of this writing), Slic3r, nor PrusaSlicer support this. This means if you're going to use one of those slicers, you either need to copy the X3G files to an SD card to print from, or connect to your printer in another way. If you are in my situation where there is no need for a hyper-efficient large volume printing pipeline, I consider printing from SD card the preferred method. It does not suffer from typical problems of a serial connection like limited command throughput, and it does not require to keep a computer running near the printer and ensuring it does not crash or reboot. When using a WiFi-enabled SD card like the Toshiba FlashAir, you can even upload files to the printer without touching the SD card (see the hints section). If you do have a dedicated computer connected to your printer, then the best option is probably OctoPrint. I haven't tried it yet, but it looks very interesting and can be run from a cheap and power-efficient computer like a Raspberry Pi.

A word about dualstrusion

If you specifically bought the FFCP for its dual extrusion capability, you may be in for a bit of a disappointment. The single-carriage-dual-nozzle design is not a very good solution for dual material printing, partly because it was one of the first attempts at it. Originally I found the FFCP's dual nozzle setup mostly useful to always have two filaments ready for use. Eventually though, I made it a habit to always print with the left nozzle and remove the right nozzle and stepper motor except for the very rare occasions when I do a dualstrusion print. Removing the unused nozzle eliminates the risk that it will cause various problems by bumping into the printed part. Removing all the extraneous weight from the carriage results in a very noticeable reduction in ringing artifacts (see below), and it also reduces sagging of the X axis.

It is possible to get good quality dualstrusions despite the limitations of the single-carriage-dual-extruder setup, but this requires sacrificing print speed and material. Your particular slicing program may have built-in solutions for better dual extrusions. If you're using my PrusaSlicer configs, you can use my post-processing script that does all the necessary things to get the most quality out of the single-carriage-dual-nozzle setup for a dual extrusion print.

Printing with the FFCP: getting started and maintenance

As a general recommendation, make sure you have a good calliper or micrometer. It is essential to know the exact diameter of filament you buy, so you can configure it in your slicer program. It is also extremely useful to accurately measure parts you are trying to make a 3D model of, and to check whether the first layer is printed at the expected thickness. I recommend a mechanical calliper with a clock-like dial. This is accurate, easy to read, and has no stupid batteries that die at the wrong moments.


Another good investment is a small infrared thermometer. This allows to check whether the temperature of the printing bed is correct, which is especially important when using glass (see the adhesion hints).

New spool ritual

When you start using a new spool of filament, even if it is the same material and manufacturer as a previous spool, the very first thing you should always do is use your calliper or micrometer to measure the filament diameter at several positions. Either create a new filament profile or update your existing one, and enter the average of your measured diameter in the profile. Use the extrusion multiplier to adjust for under-extrusion (see below for more info). If the filament is high quality, the diameter should remain consistent across the entire spool. For cheaper brands, it may be wise to occasionally re-measure the diameter.

When it is a new material, print some standard things to get a feel for optimal settings. Start with a simple cube or some other small thing, if this works out then try something more complex. I use a modified 20×20×10mm cube, followed by the good old Marvin (or this variation). The latter has overhangs and short layers, which help to see if the material needs special care w.r.t. print speed and cooling.

Calibrating your home offsets

This is not essential but ensures you can use the maximum available area of your print bed, as well as the maximum vertical range of the printer. When everything has been set up, print a small symmetrical object (like a cube) at the exact centre of the bed. My current PrusaSlicer configs make this even easier, they prime the extruder by printing a line across the front of the bed at exactly 3 mm from the front edge. Either check this line, or whether the object is exactly at the centre of the bed. If not, go to ‘Home offsets’ in your printer's LCD menu and adjust as follows. If the object is closer to the back of the bed than the front, or the line is printed at more than 3 mm from the front edge, increase the Y home offset. If the object or line is closer to the front edge (or extruded in free air in front of the bed), decrease the Y home offset.

To calibrate the X home offset, measure with a ruler whether the printed object is at equal distances from the left and right bed edges. If it is nearer to the left edge than the right, decrease the X offset and vice versa.

If you have a glass plate that is smaller than the bed, you should adjust the bed dimensions in your slicing program accordingly (for instance ‘Bed shape’ in the PrusaSlicer printer profiles).

Similarly, you should also determine how much vertical range you actually have: most likely it is more than the advertised 150 mm. My printer can print objects up to 170 mm tall. This seems to depend on the firmware though: some older versions of Sailfish are hard-coded to refuse to move the bed beyond 150 mm. My custom build does not have this limitation. If you are using PrusaSlicer and know how high you can go, modify the ‘Max print height’ value in all PrusaSlicer printer settings, and also update Z_MAX in my make_fcp_x3g script if you use it.

Aligning the Y axis belts

A common problem that is not always easily noticed, is that the two Y axis belts (the ones at the top left and right of your printer) can become misaligned. This may happen if something has caused the belts to slip over their pulleys, for instance if the carriage has bumped into the front of the printer. Also, if you have detached these belts for some reason, it is pretty much impossible to re-mount them aligned right away. Misaligned Y belts have two undesirable consequences:

  1. Your X axis can become non-perpendicular to the Y axis, hence if you try to print a square, you'll end up with a parallelogram. If you use my start G-code, you'll see that the initial priming line is not parallel with the edge of the bed.
  2. There can be a noticeable ripple on walls printed parallel to the Y axis. The ripple will have a 2 mm period, because this is the pitch of the belts. You can also feel this ripple when manually pushing the carriage back and forth.

Next to checking whether the X axis rods are skewed w.r.t. the bed or printer housing, or noticing the 2 mm ripple, you can also easily detect misalignment by plucking the Y belts like a string. If they have considerably different pitches, they are misaligned. Correcting this would have been easy if FlashForge would have incorporated a detachable coupler on the rod that connects the two pulleys to the Y stepper motor but they haven't. Therefore one possible solution is to add such a coupler, but there is also a less drastic but more cumbersome solution.

Aligning the Y belts

Simple but cumbersome: cut two strips from a piece of blister packaging, 6 mm wide and about 5 cm long. Bring the carriage forward. Stick the strips in between both Y belts and the underside of their rear pulleys. Then push the carriage backwards until the strips are rolled around the pulleys, see the above photo. Now the belts can slip over the pulleys and you can wiggle the X axis bars until they are perfectly parallel to the frame, and the belts have the same pitch when plucked. Finally, simply pull the carriage forward again to roll out the blister strips. Check the result and repeat the procedure if necessary.

More drastic but more practical in the end: add a coupler that provides easier and more accurate adjustment. This is not for the faint of heart because you must disassemble the upper part of the printer and saw the narrow rod that connects the two Y axis belt pulleys in half. Reconnect it through a 5 mm axis coupler as shown in the photos below. Then if the belts become misaligned, you only need to loosen the coupler, align the X axis, and tighten the coupler again.

Coupler on the Y connector rod

Daily use: tweaks you should really consider

After many years of 3D printing with the FFCP, I consider these the most important tweaks to improve quality, reliability, and ease-of-use. I'm not saying you absolutely must do these things, but I would never want to revert them.

  1. When you are not dual extruding (in my case, about 99% of the time), unload and unscrew the idle nozzle. Clamp the heater block, e.g. with a crescent wrench, while unscrewing the nozzle with a 9 mm wrench. Really, you won't know how important this is until you have seen prints fail in very frustrating ways due to the unused nozzle knocking over delicate structures, or causing horrible top surfaces by skating on them. This is the single most important step to improve reliability. Unscrewing the nozzle takes a minute or so. Restarting prints takes hours. Your choice.
  2. Seriously consider installing a glass bed or some other detachable bed surface. I was sceptical about glass even when many kept recommendeding it. After my umpteenth frustration with the default blue surface and equivalents like BuildTak, eventually I tried glass anyway and now I want to slap my former self for being stubborn for so long. Printing on glass with a hairspray-like layer has multiple advantages. It results in very reliable adhesion as long as the plate is heated. When it cools down, the adhesion goes away and the print simply pops off, often spontaneously. Prints have a beautiful smooth bottom surface. If you have multiple plates with identical thickness, you can immediately start a new print by merely swapping them out so you don't need to immediately remove the previous print from its plate.
    You should use borosilicate glass of approximately 230×150 mm. Avoid thick plates, I use 3 mm which works fine. You can get away with regular glass if you're not going to heat the bed above 60°C, but I would not trust it at ABS temperatures, borosilicate is safer. Apply a thin layer of 3DLac or the right brand of hairspray (e.g. Aquanet) before each print. (Never spray inside the printer, do it outside before mounting the plate!) For some filaments (PLA, PETG) you only need a very thin layer, more for others like ABS. Add a Z endstop shim to compensate for the thickness of the glass. I also recommend using brackets that clamp the glass from the sides, so you don't need to worry about anything sticking out above the surface. Only for certain filaments like flexible ones, it is recommended to use painter's tape as surface and not hairspray. You can stick the tape to the glass, or leave out the glass and shim, and stick the tape directly to the bare bed.
  3. Install a better cooling fan duct. The stock duct is pretty worthless and only cools the left nozzle. See the ‘cooling’ section below.
  4. Use my custom plate levelling code files. They allow to align the left or right nozzle separately with more sensible probing positions. Different versions are available depending on the thickness of your levelling sheet, and also for different bed temperatures (and even heated extruders, although I do not recommend levelling with heated extruders).
  5. Filament loading and unloading: the temperatures set in the LCD menu for preheating are also the ones used during filament loading. Never use the filament ‘unload’ function, also unload filament with the ‘load’ function! Wait until it starts extruding, then push the extruder lever and yank out the filament quickly. Otherwise you risk that the filament will have a thick blob at the end that gets jammed inside the hot-end.
  6. Ensure the Y axis belts are properly aligned as explained above.
  7. Seriously consider installing some method to obtain variable fan speed. With variable fan speed, the Creator Pro becomes a wholly different beast. See the cooling section below.
  8. Print a filament feeding spacer. It ensures filament is unwound from the spool in a more symmetrical manner, reducing risk of tangles. Mount it in the two topmost clamps. You will need to cut a bit off the guide tubes to compensate for their higher mounting point, I shortened the tubes by about 35 mm.
    Filament guide and filters
    Other models of this spacer exist with multiple holes to allow exact centring regardless of spool width, but that is overkill.
  9. Print filament filters. These keep dust from reaching and possibly clogging the nozzles. Place the filter where the filament enters the guide tubes (see photo). I never had any filament jams anymore after doing this.
  10. Print adjustable spool holders. When buying spools, you will notice that every manufacturer uses spools of slightly different widths, while some have a recessed axle hole and some do not. My adjustable holders can handle any spool with a 54 mm hole that is between 35 and 80 mm long.
  11. Install a Toshiba FlashAir W-03 WiFi SD card to turn your printer into a WiFi base station or client, so you can wirelessly upload and manage X3G files. You may want to install my Web UI on the card to upload and manage files, it also comes with the necessary config templates to get the card working. You still need to start prints from the printer itself but I consider starting prints while you're not in front of the printer a bad idea anyway.
  12. Consider installing an all-metal hot-end upgrade if you want to print with materials like PETG or flexible filaments. Some materials only print well at temperatures of 240°C or higher, and the standard teflon-lined extruders quickly degrade above that temperature. When going above 260°C they will even risk producing toxic vapours that may kill pet birds and probably increase risk of cancer in other living things. Also consider using a hardened steel nozzle instead of brass. It will last much longer even if you're not going to print particularly abrasive materials. The A2 hardened steel nozzle from Micro Swiss is also very pointy which improves print quality on sticky materials like PETG. The only caveat is that you may need to print at slightly higher temperatures.

About cooling

Print quality can be greatly improved by properly cooling the freshly printed material. For some filaments this is essential. For others, too much cooling will ruin the print but a little cooling will improve quality. Ideally the freshly extruded filament should be cooled as quickly as possible to the point where it solidifies and no longer shrinks significantly, but not beyond that point. This could theoretically be done by blasting the printed object with air just below the glass transition temperature, but that is not feasible with a consumer printer like the FFCP. We have to make do with a simpler fan that blows whatever air happens to be inside the enclosure.

Dual ductTo make things worse, the fan on an unmodified FFCP has two major problems. The first is that it only blows at the left nozzle. This can be easily remedied by printing my dual fan duct. Not only does this direct airflow at both nozzles so you can provide proper cooling when dualstruding, even for single extrusion it also provides a better airflow than the stock duct. This is not just recommended, I consider it essential. For printing with a single extruder, I have made a variation on this duct that provides even better cooling, but it only works with the left extruder.

The second problem is harder: a standard FFCP has no fan speed control. The fan can only run at either 100% or 0%, no matter what configurability your slicing software pretends to offer. Don't bother setting different speeds in PrusaSlicer or Simplify3D, any speed higher than 0 will result in full throttle. You can get away with this on/off toggle in many cases, as long as you are using the stock hot-ends with undemanding filaments. PLA and flex work fine with the fan at 100% (all my PLA filament presets keep the fan enabled). Prints in ABS and PETG will however usually be destroyed when cooled too much. Only when printing at 0.1 mm layers, good results might be obtained because extra cooling is usually needed when printing at very fine layers to avoid deformation. For thicker layers with ABS and PETG, cooling is usually a no-go if you cannot reduce fan speed.

If you can accurately control fan speed though, you will obtain better results than without cooling, even with ABS and PETG. (If you are using my PrusaSlicer configs: this is why I provide ABS and PETG profiles with a “-fan” suffix. Do not use these if you have not somehow modified your printer to vary fan speed, except maybe for small objects printed at the ‘extrafine’ settings.)

The best solution to obtain variable fan speed is to have the printer communicate with a dedicated PWM controller. The MightyVariableFan system uses a Raspberry Pi as the controller.
A simpler but more cumbersome solution is to install a manual PWM controller in between the ‘EXTRA’ output on the PCB and the fan.
Another alternative is to install a recent build of the Sailfish firmware, like this one. By performing PWM in software, it allows to change fan speed from within the LCD menu but not during printing, and it will not respond to fan speed commands in the G-code. It is better than nothing but even worse than a manual PWM controller.

General hints and smaller tweaks

This is the sequel to the tweaks I gave above, but I consider these less essential. That does not mean they are unimportant though…

Hints for better adhesion

One of the most common problems with 3D printing despite many years of evolution is the first layer sticking insufficiently (or sometimes too much) to the platform. Here are some tips in case you suffer from prints that won't stick or that you cannot remove from the platform without resorting to hammers or power tools.

Maximising Quality

Finally, a few specific hints to obtain better prints.

©2016/09-2019/09 Alexander Thomas