Ultimate Marlin 2 + BLTouch for Ender 3 with OctoPrint

This is the vanilla version of Marlin Firmware 2.x pre-configured for Creality Ender 3 printers with original or generic BL Touch sensors. This distribution is focused on professional/power users and is packed with the maximum amount of features the small 1284P chip can fit at the expense of the SD Card support. Because of the lack of the SD support this is only recommended for OctoPrint users.

Please note that this is not the version I recommend for 8-bit boards like the one used in the Ender 3. The most stable and feature rich version of the firmware for this architecture is the 1.1.9 that I made available in another article. Marlin 2.x is aimed to a new generation of boards using 32-bit processors, the built in libraries are bigger and there is less space left for features. Anyway, if you want to try this you can be sure I did the best I could to configure it properly and fit the maximum amount of features possible. It was downloaded and installed more than 10000 times and I believe most of the users will find no problems with it.

Features

  • Full LCD Menus
  • Adaptive step smoothing
  • S-Curve acceleration
  • Advanced Pause feature
  • BLTouch support enabled (default probe offsets X=-42mm, Y=-5mm, Z=0mm)
  • Bilenear automatic bed level with 25 probe points and 3 trials each
  • Nozzle park feature
  • Fully compatible with OctoPrint
  • All changes from the original Marlin config file were marked with the comment tag "Customized DBP"
  • SD Card support disabled to fit all extra features

Note about the bed leveling strategy

There are two ways to perform the automatic bed leveling, the first is before every print and the second is only when necessary. Based on my experience with the Ender 3, it's better to do an extremely precise bed leveling when necessary than a simpler one before every print and this firmware configuration reflects this choice.

If you want to do quick/imprecise bed leveling before every print you will need to reconfigure the firmware.

Note about linear advance feature

Most of the slicers already have excellent implementations of this flow compensation algorithm. Enabling Linear Advance in the firmware would make it incompatible with the slicers implementation and limit the user options. Linear advance is not enabled in this distribution.

Requirements

  • BLTouch installed on pin 27
  • Z stop switch removed (it can block the Z axis movement)
  • IMPORTANT! BLTouch tip height must be adjusted according to the official instruction manuals. There are different BLTouch sensor clearences and the YouTube videos tips are wrong most of the times
  • Bootloader installed
  • Microsoft Visual Studio Code if you plan to install from the source code
  • PlatformIO IDE extension installed on Visual Code if you plan to install from the source code
  • OctoPrint - This version has no SD Card support.

Installation and configuration

Follow the instructions in the Vanilla Marlin 2.x for Ender 3 article.

Other Marlin downloads for Ender 3

Files
Version
2.0.5.3 (April 2020)
Platforms
Any operating system
File size
5.0 MB (source), 496 KB (HEX)
Checksum
Package 1 SHA256: 625E74B88E8CCEE48C7D463A1B20D777403152665AF83C5609F9006FC414904F
Package 2 SHA256: ADC6D67985C34935FD7EE830FDA060694A8E41CF87F1B9E8AC9DB116622F7D03
Package 3 SHA256: 309D37BA16D9392C63C02EF8D0EADD39CE10990E93BE623D3C7B98A29C7042F6

Post Categories

Comments

Submitted by Frederick on Thu, 06/25/2020 Permalink

Hi,

 

Awesome guide and build! Thank you!

 

I do have 2 questions however:

1) For S Curve Acceleration to work correctly, do I need to disable Jerk and Acceleration control in Cura?

and

 

2) I'm new to BL touch. I've installed it, used this build and set my probe offsets.

 

I have this fan duct: https://www.thingiverse.com/thing:4401624 with the spacer: https://www.thingiverse.com/thing:3072487

I used M851 to set Offset: X: -47 Y: -8

Next I used G28 to home.

Next I lowered the Z axis to position the nozzle close to the bed with a post-in in between and this gave me -3.4 as offset which I set with M851 Z-3.4.

(I have a glass bed which is quite thick).

M500

M501

 

Now, when I do G28 again it moves the Nozzle back quite above the bed, so I use G1 F60 Z0 to position it back to the real Z home.

I have noticed that sometimes it puts it back nicely where I put it manually when defining the -3.4 offset, but sometimes it seems to position it around 0.5 higher... This without touching the bed or glass.

What am I doing wrong?

 

Thanks a lot!

 

Frederick

 

 

Seems that each time after a G29... the nozzle is 0.5 higher than when I calibrated it and adjusted the offset.

So:

G29

G28

Manually move the nozzle just above the bed, post-in in between

M851 Z -> adjusted

M500

M501

G28

G1 F60 Z0 -> OK

G29

G28

G1 F60 Z0 => nozzle 0.5 higher than when calibrated.

 

What am I missing?

Thanks in advance for hour help!

Submitted by Jerzy on Mon, 06/08/2020 Permalink

Hello Daniel
In configuration.h in the section on TMC2208 in the ultimate version you have "//" in front of #define X_DRIVER_TYPE TMC2208_STANDALONE // Customized DBP. Is this correct?

Submitted by Nathan on Sat, 05/30/2020 Permalink

Hi Dan!

I've been looking for a solution for this for days now and I'm glad to come across a post that provides the HEX file because for the life of me I keep getting errors when trying to enable advanced pause feature & filament change through VS when building.

The only issue I have is that I can't find a version of your HEX where you provide SD card support + BLTouch + Advanced pause & Filament change. If you'd be able to compile a version like that in HEX format all my problems would be over...

If you could provide me another solution I'd be happy to hear it!

Best,

 

Nathan

I'm currently running the 1.9 merlin with bltouch, display but bed leveling happens through the gcode command in the SD card. I can still calibrate the Z offset, but I'd like to do this with the Marlin 2 version because my prints don't come out as good with the 1.9 marlin... I just can't seem to configure the 2.0 marlin through either arduino or VScode... If I could I'd just remove the features I removed in the 1.9 marlin and configure it myself into a hex file but I'm getting so many library errors when trying to compile marlin 2.0 in arduino or vscode that just don't show up with the 1.9 version even though I do exactly the same?

Please Obi-One Kenobi you're my only hope

It is not that simple... Marlin 2.0.5 is much bigger than 1.1.9 and all the errors you are getting in VSCode are because you are trying to fit more data than the memory can handle (many error messages don't explicitely say that). The smallest version of Marlin 2 is the 2.0.1 available here and even using it you will need to disable something if you plan to use advanced pause/filament replacement.

 

Submitted by William on Mon, 05/25/2020 Permalink

Hi, great work!, Thank You!

I realize in the new version 2 of marlin you got rid of the Preheat bed, level and store feature to save space. I was hoping that forgoing support for the SD card, that feature would be put back in this ultimate version. But, alas, I can't find it in the menu. Or am I mistaken?

Cheers,

Will.

 

 

Unfortunately it's not possible to fit this feature. As Marlin evolves the built in libraries get too fat for the limited 8-bit boards and I am forced to disable some features...Feature and performance wise, the best Marlin for the Ender 3 is the 1.1.9.

For this specific version you can enable SLIM LCDs to re-enable CUSTOM commands menu back.

Submitted by Kayvee on Mon, 05/25/2020 Permalink

Thanks for this excellent guide. I am new to 3D printing, purchased an ender 3 pro last month. And added bltouch abl. But not that happy with the stock firmware. And I found your blog post. How I find if my printer’s main board is 8 bit or 32 bit.

Submitted by Eric on Wed, 05/06/2020 Permalink

First, thank you for this excellent description and firmware for adding BLTouch to an Ender 3.  However I think your SHA-256 is incorrect for all three packages.  Here is what I calculated for the source code:

[email protected] Downloads % shasum -a 256 Marlin-2.0.5.3_Ultimate.zip
625e74b88e8ccee48c7d463a1b20d777403152665af83c5609f9006fc414904f  Marlin-2.0.5.3_Ultimate.zip
[email protected] Downloads %

 

This does not match the SHA-256 what you have listed.

 

 

 

Submitted by Charles on Thu, 04/30/2020 Permalink

I want to say thanks first for the firmware, it was the one thing that got my Ender 3 Pro running properly using the BLTouch.

I have noticed - "Warn: Not sending "M141 S0", printer profile has no heated chamber " scrolling in the terminal window on OctoPrint. I think line -"#define TEMP_SENSOR_CHAMBER 0" needs to be commented out to "//#define TEMP_SENSOR_CHAMBER 0" to prevent this.

Plus, I think someone else might've mentioned that the version displayed onscreen still says v.2.0.5.1 instead of v2.0.5.3 like in the About Printer > Printer Info screen.

Otherwise, awesome!!!

I'm still battling the upgraded V1.1.5 board and extruder stopping randomly. I'm sure it's related to the TMC2208 and Marlin, as I've seen many issues form other people posted. Creality sent me a replacement for my original V1.1.4 that was having issues with x-axis. I received the V1.1.5 only to find it worked once then died, so Creality sent another replacement that has yet to arrive. In the meantime I ordered a new ATmega1284P and swapped it out. I assumed that because I could not flash the chip that it was dead and it came back to life again.

Long story short, I'm still waiting on the second replacement Silent board to confirm the issue is not a faulty board.

 

Submitted by Francois on Wed, 04/29/2020 Permalink

Has an information, it's still written CUSTOM_MACHINE_NAME "Marlin 2.0.5.1" inside configuration.h wich is confusing at first. When correcting it, it works perfectly for now.

Submitted by Tiago Da Costa on Sat, 04/18/2020 Permalink

Hello, Daniel,

Thank you for your firmware and all your precise indications. I can barely imagine the regular work it represents.

However here is my problem, when I do the G29 function the X axis goes much too far.

I am using the precompiled version Package 3: Compiled Ultimate Marlin (HEX) for Ender 3 + BLTouch + TMC2208

Currently I have 2.0.5.1 is 2.0.5.3 fixes the problem?

Could you please check. Thank you very much!

Translated with www.DeepL.com/Translator (free version)

Hi, 

 

Only 2.4.4 is working here. 2.5.1 and 2.5.3 wont show anything on the lcd and can't be accessed with octoprint.

any suggestion ?

 

power supply is not the issue. 

version 2.4.4 from here boots and works. but as soon as i go to 2.5.3 the screen stays blank. when i flash 2.4.4 back it works again. 

 

 

Submitted by Nick Marino on Wed, 04/15/2020 Permalink

After flashing this version of firmware I got an error on the LCD saying Error: EEPROM. Onlything I changed was the probe offset.

Is there something else I need to do to get it to work correctly.

Also I ran initialize EEPROM in the LCD menu and that seems to work but afterwards Octoprint just kept rebooting the controller trying to connect to it.

You could see on the LCD it was just constantly rebooting. When I stopped Octoprint manually from SSH the rebooting cycle would stop.

Not sure this is 100% compatible with OctoPrint.

EEPROM verification is a new feature in Marlin 2.0.5. It checks the memory for inconsistent/corrupt data. If you upgraded from Marlin 2.x or 1.x you will get that because the storage system is different.

You must reset your EEPROM to fix this error. Please do not use Octoprint for firmware maintenance activities.

 

 

Submitted by Simon Wilmann on Sat, 04/11/2020 Permalink

Hi Dan

 

First i want to say this is awesome and Im really grateful for your work.

So I have this weird issue.

When doing a G28 homing the Z the first time the bltouch activates but it seems to ignore it for the first activation but after the second activation it works like it should. but not after the hotend hits the bed.

It will do a second check and not hit the bed. and then go about its way and print just fine.

 

if i do a g28 it does the 25 point bed test no issues does not hit the bed.

my current start code is this.(Hitting the bed happens any time I run G28)

M140 S55
M105
M190 S55
M104 S200
M105
M109 S200
M82 ;absolute extrusion mode
M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration
M203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate
M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration
M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk
M220 S100 ;Reset Feedrate
M221 S100 ;Reset Flowrate

G28 ;Home
M420 S1
G92 E0 ;Reset Extruder
G1 Z2.0 F3000 ;Move Z Axis up

not sure what im doing wrong. I hope i explained it well enough. tried looking around the web but cant find anyone with this issue.

 

also note i have moved the touch to PIN 29.

changed it in config.h and in "pins_MELZI_Creality.h"

Thanks

Simon

 

Probe crashing is due Z end-stop problems:

  1. Make sure you are using the exact clearences/heights indicated in the manual for your version o BLTouch. Every version of the BLTouch requires different clearences and if the probe is too far from the nozzle it will fail.
  2. Check the white/black cable connection, and the "capacitor" issue in Antclabs website.

thanks

i forgot  that i did that stuff with my last upgrade. eg when i got the BLtouch about a year ago. 

and going from marlin 1.1.x to 2.0.x just is a little confusing.

 

so i just bit the bullet and  removed the capacitor. works fine now.

 

 

Submitted by flolas on Sun, 04/05/2020 Permalink

Hi,

 

I'm trying to compile and flash my ender 3 pro with the source code provided, i have the following error in sketch:

Sketch uses 131050 bytes (100%) of program storage space. Maximum is 130048 bytes.

I tried to disable some features following this :https://www.crosslink.io/marlin-2-0-memory-usage-by-feature/ 

but almost everything was off.....

If i use the .hex provides it will overwrite the bootloader? I'm currently flashing directly with usb

 

thanks

Submitted by Ben Holmes on Wed, 04/01/2020 Permalink

After spending a week trying to configure Marlin 2.0.x myself to include my new BLTouch I finally found your post here. Thank you so much for providing this.

Submitted by David on Sun, 03/29/2020 Permalink

Hello, first of all, thanks for your work. I print with Ender 3 and with Octoprint and my BLTouch, but sometimes I print with SD. What I should disable to enable SD CARD?

 

Thanks and regards.

Submitted by Bobby O'Connell on Tue, 03/24/2020 Permalink

I have tried to build this from source code only changing the amount of space to inset probe from edge of bed and it keeps telling me the file is too large. Is there anything else that can be removed? I would ideally like to change where the probe is touching the bed, it currently tries to probe on top of my bed clips.

Hi Daniel, first of all, thanks for this great firmware. It solved a lot, if not all, of my BLTouch headaches and printing works great now. 

I have the issue that the menu structure changes during printing ("move" menu disappears, and other things) and does not come back when I cancel the print in Octoprint I think it also does not change back to the default menu when the print finishes in a regular manner. I assume the change of the menu is normal as some operations like moving the head only make sense when not printing. 

But how do I get the standard "idle" menu state back after Octoprint finishes? So far, only switching things off and on again does that.

Kind regards, Chris 

Chris,

Marlin 2 does the things in a very different way than the 1.x versions. I'm still trying to figure out everything that changed by I suspect this behavior can be related with G-Codes that disable the stepper driver and/or reset the homing after the end of the printing. Could you try to home the head again and see if the menus come back? The G-Code is G28 but there is an option for this from the LCD panel as well.

Daniel, thanks for the response. I can report that a regular print via octoprint works. Afterwards, the menus return to their "idle" state. I did not do what you suggested because meanwhile, I received my new silent board and will have to make my own Marlin now anyway due to the need of TMC2208 stepper motor drivers enabled. I will post what happens with my own build. Kind regards, Chris 

Submitted by Aäron Declerck on Mon, 02/24/2020 Permalink

Thank you to compile your own Marlin version. It is excellent! I still have an issue where occasionally the LCD screen won't turn on. M502 followed by M500 doesn't seem to resolve this issue. I will try to investigate it further. Do you have a PayPal or Patreon link where I could support you?

Hi,

There are some errors related with the EEPROM not being updated with the firmware and I was not able to figure out exactly what happens. Resetting the EEPROM seems to work most of the time.

Thank you for the support offer! Since I don't maintain any channel for contributions I ask you to consider donating the amount to a charity service of your trust.

Regards!