3D Printing Tool Chain

Step 1: Create or download model

Create Model

Use software such as Fusion 360 or TinkerCAD to create your 3D model. The software will usually save the model in its own format. When you’re ready to print you’ll need to export it as .STL so your model can be sliced into layers to be printed.

Download Model

Models can be downloaded from Thingyverse and many other online respositories. Other file formats can be used but the standard is .STL

Step 2: Slice model

Again, lots of software out there… I recommend Cura but also found Slic3r very capable.

The slicer software has settings to allow you to specify nozzle size, temperature, bed temperature layer height, brim, wall thicknesses……… and a few hundred other settings.

Cura has default settings for lots of printer models. You will need to tweak the settings though based upon what you’re printing, in what material, in what quality.

So the slicer takes the input file (.STL) and processes it based on a few hundred setting to the output file (.GCODE). The GCODE file contains instructions that your printer should follow, it is this file that you send to the printer

Step 3: Print Model

Print from SD/TF card

Simplest way to print on the Ender 3 V2 is by writing the GCODE file to a TF card, insert card, select print, find the GCODE file and wait…..

Print over USB

It is also possible to print directly from your computer over USB, for this I use Pronterface. If you choose to do this remember to turn off power saving on the PC (sleep mode, screen savers etc) and preferably windows update.

With this method the GCODE is buffered & streamed live to the printer. If the PC stops or stutters your print will be affected. This will often cause the printer to pause / stutter usually resulting in a blob of filament just where you don’t want it.

Also recommended not to use the PC while printing as some processes take enough time to interrupt the transfer of GCODE.

Update Ender 3 V2 Firmware

See tail end of Compiling Marlin for Ender 3 V2 and copy the Firmware_########.bin created after compiling Marlin to your TF card. But first reformat the card (not always necessary, but if the update fails, reformat for sure then try another TF card if it fails again. Update can be finicky). If you choose not to reformat be sure to remove any old firmware .bin files.

‘Safely’ remove your TF card (don’t just take it out, files get corrupted that way).

With your printer turned OFF insert the TF card.

Switch printer ON, it’ll take a little longer to boot up as it will be updating your firmware. If all goes well you have updated your firmware – Congratulations.

NOTE: If you rename the firmware before putting on your flash card be sure to name it something different each time else the printer will ignore it.

Configuring Marlin for Ender 3 V2

BL Touch Configuration

If you haven’t already set up Visual Studio Code or something to compile the Marlin firmware see these instruction Compiling Marlin for Ender 3 V2


NOTE: The original Creality firmware allowed the z-offset adjustment to move the Z axis while the printer was idle. These settings don’t allow this – not sure why yet.

// BL Touch with 5 pin header



#define BLTOUCH

// you probably want to pick your own values (X, Y, Z)
// if you know your z offset you can enter it into Z, otherwise set once the firmware is installed
#define NOZZLE_TO_PROBE_OFFSET { -44, -6, 0 }

// Changing printer movement speeds
// Slower takes long but is ultimately more accurate
#define XY_PROBE_SPEED (100*60)
// Homing speeds (mm/min)
#define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (8*60)

// set method used to evaluate Z axis height

// sets homing XY position to near the middle of the bed
#define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE - 10) / 2) // X point for Z homing
#define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE - 10) / 2) // Y point for Z homing




// The BL Touch 3.1 may or may not be 5V compatible.  My printer suppliers suggested using this setting instead of BLTOUCH_SET_5V_MODE

Z Axis Quick Stop Button

I mounted the original Z Axis switch on the base facing forward. This config change results in the switch activating the KILL mode.

After pressing the switch the printer stops (seems to leave fans running which is good). The stepper motors, nozzle heating and bed all switch off. Turn off the printer to reset back to normal – but leave it a while first to allow the nozzle to cool else you’ll find the heat travel up into the purposely cooled filament guide and this could cause a problem.

This saves me scrabbling to get to the power switch at the back which would stop the fans (not ideal) or frantically navigating menus to stop a rogue print.



// add these lines under the commented line above
// Use original Z input as a KILL switch
// The actual pin needed will vary between controller boards.  
// Find the pin currently assigned to Z_STOP_PIN in the config that relates to your printer look in Marlin\src\pins\.......
#define KILL_PIN PA7


No change

Compiling Marlin for Ender 3 V2


Presently Creality release only a few pre-compiled firmware versions. If your Ender 3 V2 upgrade is supported by firmware provided by Creality then use theirs – it is easier.

If you update your printer to something not supported you will need to compile your own firmware or find one somebody has already done.

I wanted to install a BL Touch. This replaces the z-axis switch so I decided to re-purpose this switch as a quick stop button.

If you have already set up Visual Studio Code & Marlin and successfully compiled see Configuring Marlin for Ender 3 V2

How to compile

You’ll need software to compile the source code. For this use Visual Studio Code from Microsoft.

I found Visual Studio Code very difficult to use. It is not intuitive as it is crammed full of features and options. Luckily after the initial set up it is mostly just used as a text editor.

Downloading Marlin

Current version is and available from GitHub

Marlin comes in two parts: The Marlin source code itself and another set of Config files.

The Marlin zip contains source code with tons of features to drive pretty much any printer

The Config zip contains specific configuration files for loads of different printers. These config files map processor pins to functions and enable/disable appropriate features that the printers controller board support. The default config for any given printer should enable support for a vanilla printer (one not modified yet).

Setting up Visual Studio Code for Marlin

Install Visual Studio Code (VSC). Simply download from Microsoft and accept all the default installation options.

Install PlatformIO Extension

PlatformIO is an extension inside VSC. Go to VIEW => EXTENSIONS in VSC

Prepare Marlin

Create a folder in a location of your choice named something like Marlin

Unzip the content of the Marlin source code to the above folder

Should look something like this:-

I dropped the two Marlin files in here to keep them all together

Add printer configuration

Now locate the base configuration for your printer. In the example above these are in the Configurations-release- (the second file you downloaded earlier)

Navigate into this zip, all the printer configs can be found in here. Follow the path config -> examples

Printers are ordered by Manufacturer/Type then Model

When your printer folder is located copy all the files in the folder and paste them into the Marlin folder found in your working folder (NOTE: This is the folder called Marlin inside your working folder – not the working folder itself). The paste operation should replace the default Configuration.h and Configuration_adv.h files among others.

Adding Marlin to CSV

With PlatformIO and your Marlin folder prepared you’re ready to create a workspace in VSC – Fancy talk for pointing VSC to the Marlin working files.


Open the Marlin folder you created earlier. Should see something like this:-

I occasionally lost this view of the file system. Go to VIEW => EXPLORER to get it back.

Edit platformio.ini

Shown highlighted above, this file needs to be edited so that PlatformIO knows what kind of processor your printer uses.

Settings shown are for the Ender 3 V2 with the 4.2.2 Controller Board

Ender 3 V2 Settings highlighted

Compiling Marlin

VSC should be ready to compile. Give it a go by clicking the tiny tick at the bottom of the screen.

Tiny tick highlighted starts the compiling process

With luck the firmware will compile. If not check the errors and google a solution.

Where is the firmware?

VSC writes the firmware file to .pio / build / yourprocessortype /

Each time you compile another firmware.bin is created

That’s the default firmware compiled for your printer. Editing the Configuration.h and Configuration_adv.h files custom firmware can be created.