Creality Ender 5 PRO (8 bit), BLTouch, Micro Swiss Direct Drive and Marlin 2.x

Leave a comment

February 25, 2021 by aubreykloppers

Steps to build your firmware. You can use this guide to get you up and running. The basic steps are:

  1. Download VS install. You will also need to install 2 extensions.
  2. Download Marlin and the Configuration files (I am using the bugfix release, you can use the default release by choosing it in the dropdown):
    1. Download Marlin. Use the CODE drop down and save the zip file. Extract this file to i.e. your desktop.
    2. Download Config File. Click on config and download the zip file. Open the config zip file and go into the \config\examples\Creality\Ender-5 Pro\CrealityV1\ folder. You will see 4 .h files, extract these to the Marlin folder, overwriting the 2 files.
  3. Run VS CODE and open your extracted folder.
    1. Open “platformio.ini” file and change “default_envs” (line 21) to look like this:
      • default_envs = mega1280
    2. Open “Configuration.h” and change the following values – I am adding the line numbers and comments to make it easier:
      • Line 690 – Remove the 2 forward slashes.
    • #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 800, 136.41 } //Micro Swiss Direct Extruder
      • Line 796 – Have a look at the following guide and set yours, else leave at default: YouTube Guide
    • #define BLTOUCH
      • Line 960 – This is to enable BLTouch by removing the 2 forward slashes
    • #define NOZZLE_TO_PROBE_OFFSET { -46, -11, -1.50 }
      • Line 1052 – Measure the distance from the top of your nozzle to the BLTouch Probe A: to the left and B to the front. My BLTouch Probe was 46mm to the left and 11mm forward from the nozzle. The Z-Offset can now be hard-coded into your firmware. See any of the bed-leveling videos to calculate this value.
    • #define SOFT_ENDSTOPS_MENU_ITEM  // Enable/Disable software endstops from the LCD
      • Line 1260 – I enabled this for myself to be able to do this from the printer by removing the 2 forward slashes.
      • Line 1375 – Just enable this, else you will not be able to do bed leveling.
      • Line 1385 – Enabled
    • #define Z_SAFE_HOMING 
      • Line 1566 – You will get an error without this.
    • // #define SDSUPPORT
      • Line 1921 – I removed the SDCard support, else the printer runs out of memory.
  4. Compile the file and dump it to your printer.

That is it. Check any errors that comes up and it should be quite easy to rectify and fix. You will now sit with a way more superior Firmware than the TH3D written about below.


  1. Ender 5 BLtouch guide – Step by step for Marlin & TH3D
  2. Migrating to Marlin 2.0 guide – Setup and troubleshooting UPDATE IN DESCRIPTION
  3. Updated Marlin firmware setup guide – VS Code and Auto Build Marlin
  4. Marlin 2.x
  5. Visual Studio Code Download
  6. Ender 5 Pro BL-touch installation tutorial
  7. 3d Printer Calibration and Maintenance | PID and Extruder
  8. How To Calibrate the Extruder Steps
  9. OctoPrint
  10. Micro Swiss Direct Drive Extruder for Creality Ender 5
  11. Marlin GCode Index

The following is the old entry using TH3D Firmware. I am leaving this here, as it is quite a nice learning-curve, but the firmware is still not 100% right according to my testing. You should be using native Marlin as described above…

My Client, 3B Fun, ran a Creality Ender 5 PRO (8 bit) for more than a year, non-stop, printed at least 5km of filament, without stopping for any maintenance. Problems occurred when the Ender 5’s hot-end started leaking and dripping plastic all over the print-plate and prints. It became a great mess. The only customization was the addition of a Creality BLTouch.

Although there is a lot of guides on how to fix the problem with the Ender 5 leaking, there is no ‘easy’ fix. The reason is that the hot-end became so clogged and messy, to clean it was almost an impossible task. I suggested the replacement of the entire hot-end with a Micro Swiss Direct Extruder with All-metal Hot-End.

I started the rebuild, which took about 4 hours and then the fun started. The Official Ender 5 PRO (8 bit) page’s Creality Ender 5 PRO Firmware just did not want to do the Z-offset properly. All over the net is problems listed of Z-offsets not sticking. I became so frustrated with the problem that I decided to flash the printer with TH3D’s firmware. Basically it is the same firmware you get from Marlin and Ender, just updated, customized and streamlined.

I must add here that the Ender 5 is connected to a Raspberry Pi running OctoPi and OctPrint to do the management of the printing. So, I used the Raspberry Pi to flash the compiled TH3D firmware using the Firmware Updater Plugin, customized for my own needs, well, my customer’s needs.

The first thing I did was install the Micro Swiss Direct Drive with Hotend. There is a video on this on the Micro Swiss website, so it was actually straight forward. I then tried to get the bed level using the BLTouch previously installed. Well, this is where everything went wrong. Everything worked as it should, but the Marlin Firmware just did not want to execute the Z-Offset I specified.

Things I tried to eliminate the problem:

I used a test print called Ender 3 Bed Level from ThingVerse to test, and here are the outcomes:

  1. I thought it was Octoprint. I used the SD Card printing option. It was not the Octoprint’s fault.
  2. Eliminating OctoPi. I then used my PC directly (using pronterface) and it was not this.
  3. Eliminating Cura Slicer. Well. This also was not it… I tried it on a second printer and it worked as it should.
  4. Micro Swiss Direct Drive. This was not it, it printed fine untill I saved the settings to the EPROM.
  5. The final thing it could be was the firmware that was ‘flakey’. I read all over the net of similar problems, but with the standard “do a bed level” reply. I followed these instructions and was like chasing a rabbit down a hole, just waisted a lot of time… So, I took the plunge and started with the TH3D installation.
note: At first I thought this would be a daunting task, but if you follow the instructions, you will find easier than expected.  It is actually just 3 things you need to do and you will have the firmware file. 

TH3D: Compile and install to your Ender 5 PRO 8 bit printer:


Before installation:

After Installation:

  1. Download the latest release from the TH3D website. Again, this is for your 8BIT board. My OS, when looking at the console on Octaprint, reported the printer as “Marlin”, after installation as Marlin TH3D U1.R2.85
  2. Extract the zip file. I used the Desktop.
  3. Open the “README BEFORE STARTING” text file and read it, once read execute the Windows Batch File called OpenFirmwareWindows.bat
    • Choose Tools/Board/”Sanguino 1284p” for your board:
    • Uncomment “#define Ender5” and “#define CUSTOM_PROBE” and “#define ENDER5_NEW_LEADSCREW” from the file by removing the 2 forward slashes (//):
    • Measure the distance from the top of your nozzle to the BLTouch Probe A: to the left and B to the front. My BLTouch Probe was 46mm to the left and 11mm forward from the nozzle. This needs to be inserted into the “#define X_PROBE_OFFSET_FROM_EXTRUDER” and “#define Y_PROBE_OFFSET_FROM_EXTRUDER” values.
    • Verify and Compile the sketch. If anything goes wrong at this stage, check the error and fix.
    • Export your compiled file.
  4. You will find a hex file in the folder called “Firmware/TH3DUF_R2”. Use this file on your preferred slicer/manager, in my case I used OctaPrint, to flash the printer. I used the “TH3DUF_R2.ino.sanguino.hex” file. I believe the file with the bootloader is for printers without bootloaders, which is outside the scope of this exercise. DO NOT USE THIS FILE.
  5. I then flashed the file using the following sequence (SPANNER/Firmware Updater/Browse/CHOSE THE FILE/Flash From File):
  6. I then Calibrated the Extruder using this guide: 3d Printer Calibration and Maintenance | PID and Extruder
  7. And then Calibrating Z-Offset With A BLTouch Bed Levelling Probe

You can use this step-by-step guide to flash any future releases. There are may YouTube videos outlining how to do bits and pieces, but this is a full and concise guide. Keep it for future reference.

Last Notes:

  • You can use your PC connected to the printer via USB to flash the printer directly using the “Upload” option. I just use the Octaprint option, as it is available to me.
  • You can flash this without having a Micro Swiss Direct Drive with Hotend. This is just my experience.
  • By omitting the “CUSTOM_PROBE” option, you can flash this without having to have a BLTouch installed.
  • For 32BIT boards, you can still follow this guide, but use the software supplied at

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

counter for wordpress
%d bloggers like this: