This article describes how to use the FlashForge Creator Pro with the open-source PrusaSlicer (based on Slic3r), by means of a configuration bundle I created. If you want to see what kinds of results I get with my FFCP + PrusaSlicer, check out my makes on Thingiverse.
Once you have this running, you may also want to check out my article with general advice about how to improve print quality and reliability, regardless of what software you use.
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, on a whim I decided to buy a 3D printer, assuming that enough know-how should have been accumulated over those five years to produce a good commercial printer. After evaluating different models, I picked the FlashForge Creator Pro due to its competitive price point and good reviews.
To convert a 3D model into a set of instructions the printer understands, a ‘slicer’ program is needed. As the name implies, it chops up the model into layers and then derives a good path for the extruders to deposit each layer of material. The first problem I was facing back then, was that the printer came with the outdated ReplicatorG program and I wanted to use a better slicer. I didn't like the cost and closed nature of Simplify3D, therefore I looked for an open source alternative. None of the options at that time had good support for the FFCP though. Slic3r looked promising because it was actively developed and had many cutting-edge features. Hence I decided to create my own configuration from scratch for it. Later on, Prusa made their own fork of Slic3r which became ‘Slic3r PE’ and eventually ‘PrusaSlicer.’ It was even more actively developed, and therefore I switched to PrusaSlicer instead.
The main reasons why I like Slic3r and its PrusaSlicer fork, are that many new 3D printing features are pioneered in them and only later on blatantly mimicked by the competition. 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 the user 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.
There are other guides about setting up Slic3r with the Creator Pro, but I have noticed that many of them are outdated or keep copying the same old configuration bits full of Cargo Cult while lacking certain necessary improvements. This is why I started making my own configuration and post-processing scripts shortly after I had bought my printer, and I have been improving them ever since. I now share all these configs and scripts for everyone to use.
I only support using these configurations with recent releases of PrusaSlicer because it is much more actively developed and contains extra features compared to the regular Slic3r. Because both projects share the same source code base, my configs might also work with Slic3r 1.3.x, but I give no guarantees whatsoever.
Important: keep in mind that the filament presets in my config bundle are tweaked for specific filaments, all-metal hot-ends, a glass printing bed, and my personal preferences. Some temperatures are too high for an unmodified Creator Pro! As a rule of thumb, you should not exceed 240°C on the standard extruders. To print at higher temperatures for extended periods, an all-metal upgrade is a must.
Although this config bundle may work for you out-of-the-box, it should be considered a starting point only. You must adjust the settings according to your setup and possibly your specific prints. I rarely use the profiles as-is, I usually tweak things per print. For a guide on tweaking Slic3r's settings, I refer to the Slic3r manual although it might be outdated. A concise how-to can be found below.
Beware: this configuration will move the extruders along a line at the front edge of the platform. If you use a glass plate, ensure the nozzles will not knock any mounting clips off the front corners during the start procedure. Mount the clips at the sides, about 10 mm from the front edge. Or better: use side-mounted clamps (like these) that do not stick out above the plate. If the glass plate is wider than the platform, you may have to tweak the start G-code to ensure the ‘chop’ works.
You need a set of programs and files to make PrusaSlicer work with the FFCP.
PrusaSlicer itself, obviously. The best place to download the latest release is from their GitHub page. Avoid downloading alpha releases, they may not work with my configs yet. Beta releases should be OK, but take the latest stable version if you want to avoid any issues.
GPX: PrusaSlicer can only produce text-based GCode files, but the FFCP only understands the binary X3G file format. You need GPX to do the translation. There are multiple ways to install it, one is to download it from GitHub. Do not use the 2.0-alpha version that is distributed with some older Linux distros. I recommend version 2.5 or newer. If you will be using WSL in Windows to run the post-processing script, you must install the Linux version of GPX inside the WSL environment.
In Mac OS X, you can install
gpx through Homebrew. You can also use GpxUi which is available for Windows and Linux as well. If you won't be using my make_fcp_x3g script, you will need to manually run gpx. You must invoke it with the argument “
-m r1d” to produce correct x3g files for the FFCP.
ReplicatorG (optional): even though you shouldn't use this as a slicer, it is still useful for changing firmware parameters through the USB interface. You can probably ignore this but if you do need it, make sure to download the Sailfish-compatible version because other versions can cause corrupt settings.
And last but not least, the thing you probably came here for in the first place:
My configs and scripts: they are also maintained and downloadable from GitHub. There are multiple ways to download the files, simplest is to download a ZIP file through the ‘Clone or download’ button, but if you are familiar with git, you can also clone the repository.
This is not just on GitHub to offer downloads: it is because this is open source. If you want to contribute to these configs, feel free to make a pull request.
Follow the instructions on the GitHub project page. When you have reached the end of the instructions, come back to this page for info on how to use what you will have installed.
A description of what is in the repository:
This can be either the
make_fcp_x3g script or a simpler BAT file for older versions of Windows that don't have WSL. Its two most essential functions are:
Next to this, the
make_fcp_x3g script can also invoke other post-processing scripts and it can adapt end G-code to allow printing objects taller than the theoretical 150 mm limit (see the hints article for more information). It is not mandatory to use this script, but I highly recommend it. If you don't want to use the script and run into problems when doing things your own way, it will be much harder for me to help you out.
It comes in two variants: most likely you need the regular one. You only need the ‘MVF’ one if you have installed the MightyVariableFan system.
It contains the start and end G-code and sensible presets for various materials and print qualities. You need to modify the .ini file to set the post-processing script path (even if you're not going to use a script). Follow the instructions on GitHub. When done, you can load the .ini file using ‘Load Config Bundle’ in PrusaSlicer's File menu.
These are included in the main config bundle, it's just easier to track changes in separate files. In the unlikely case that changes in these files were not yet included in the bundles, you can still update the snippets separately if you really want to.
The repository also contains another post-processing script that may help improve print quality. This script, as well as my other post-processing scripts available elsewhere like the one for dualstrusion, can be invoked by the main
make_fcp_x3g script. If you cannot use that script but still want to use the other scripts, you will somehow have to run the other scripts manually.
I will not give a full manual for PrusaSlicer here, you should be able to find good manuals online. I will give some remarks about using it with the configs I provide above.
Before trying to actually print something, you should first do a ‘smoke test’ to test whether everything you installed works: load a simple model and hit the ‘Slice now’ button, then ‘Export G-code’. If everything is set up correctly and you have set up the post-processing script, you should find an .x3g file next to the exported .gcode file. If something went wrong, information may be found in a ‘WARN’ or ‘FAIL’ file if present. If you run the make_fcp_x3g script yourself with the ‘-c’ argument, it might be able to diagnose problems.
Next, repeat this test but with the “FFCP Single Material L” printer profile selected. If it worked for ‘R’ but this produces no output, you are probably using the simplified BAT file and have either forgotten to install Perl, or misconfigured its path. Go through those instructions again to fix this.
My workflow is as follows. The above screenshot shows where in the UI each step occurs. Things may be in different places in the latest releases, but the same principles do hold.
The right nozzle is ‘extruder 1’ and is the default; the left one is ‘2’. When you select filament in the Plater tab for a dual extrusion profile, the topmost one is extruder 1 (right), the second one is 2 (left). When dualstruding, the filament selected for extruder 1 (right) determines bed temperature unless there is only extruder 2 material in the first layer.
After importing the config bundle, you'll have a list of ready-to-use print settings to choose from. They are grouped per material, and per general print quality. The profiles for ABS, PLA and rigid.ink ‘Bioflex’ are the most well-tweaked, the PETG ones may still need some tweaking, and the polycarbonate (PC) and NinjaFlex ones were only used for a few small prints and can probably be improved. Here is a short explanation of the various profiles:
All settings are tweaked for 0.4 mm nozzles. I have not done any extensive tests with other nozzle sizes. If you swap out your stock nozzles for a different size, you will need to modify the configs. Of course, feel free to create your own presets. If you want to keep my pre-made print settings up-to-date, keep in mind that any changes you make to them will be overwritten the next time you load an updated config bundle. Save modified presets as copies with unique names if you don't want them to be overwritten.
The dual nozzle design of the FFCP 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 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, and removing all the extraneous weight from the carriage results in a very noticeable reduction in ringing artifacts (see my hints page).
It is possible to get good quality dualstrusions despite the limitations of the single-carriage-dual-extruder setup, by sacrificing print speed and material. The current editions of PrusaSlicer however do not have the right provisions for this extruder setup, because the multi-material functionality is only optimised for Prusa printers that use a single nozzle that swaps filaments. If you attempt to use PrusaSlicer's multi-material system as-is on a FFCP, you risk ending up with a print full of ugly ooze and possibly holes as well.
To work around this, I wrote a 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. You can find the script and instructions on another page.
The G-code snippets are responsible for preparing the whole printer up to the point where it can start extruding the very first layer of your model, as well as for finishing the print and tool changes for dual extrusion. The config bundle you installed, already contains this G-code but it might not be the very latest. If you notice a more recent commit date on the Slic3r-GCode folder in GitHub than on the Slic3r-configBundles, and you badly want the latest and greatest, you can update the configs to the latest G-code as follows.
In PrusaSlicer, go to Printer Settings, set mode to ‘Expert,’ and copy the snippets from the Slic3r-GCode folder in Github to the correct places: copy each ‘Start’ snippet to the ‘Custom G-code’ section of each corresponding printer profile (left to L, right to R, dual to LR). Remember to click the save button and overwrite the config after each change. Copy the ‘End’ code to all profiles. Copy ‘ToolChange’ to both ‘Dual Material LR’ profiles. Press the ‘Save’ button when done with each profile.
If you look around on the internet, you will find copies of the same old GCode endlessly circulated with minor changes that often do not make sense. If you find GCode with the codes G130 or M108 in them, do not use them with your FFCP. Those snippets have been pasted together in a cargo cult manner by people who barely had a clue what they were doing.
The code I provide has been tweaked over several months to greatly reduce the risk of prints that fail already before actual printing begins. Changes compared to the typical code snippets, are:
Long story short, the person who wrote this code, for the most part did know what he was doing. I explicitly waited to publish this code until I knew what each line did and why. There is no cargo cult in here, at best one or two lines that are redundant.
Another side note: the make_fcp_x3g script invokes GPX with the ‘-p’ option. This causes it to override the print percentage shown on the LCD display by estimating how long each print move takes, and making a wild guess at the pre-print warm-up time. Because of this guess and it being unaware of acceleration for print moves, it is usually overly optimistic especially at the start of the print. It is however a whole lot better than just mapping the Z axis to a percentage as Slic3r does.
Head over to my page with hints and tips for using the Creator Pro if you want to get more out of the machine.
The GCode snippets and config bundle are released under the Creative Commons Attribution license. (In a nutshell, this means you can distribute them freely as long as you mention the origin.)
Of course, there is no guarantee whatsoever of fitness for any purpose and so on, use at your own risk.