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.
If you have problems compiling the firmware...
I can compile the firmware for you. Please see here for more details.
Comments
Thank you
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.
WHAT DISABLE TO SD
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.
Please use this version /p…
Please use this version /p/node/142 that has the SD card enabled and the largest amount of features I was able to keep.
Compiling
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.
If you are using version 2.0…
If you are using version 2.0.1 you can disable the boot screen and the status screen.
Change of menu
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…
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.
Regular print works
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
Your BLTouch TMC2208 works for me, but of course ..
Just wanted to write that Your BLTouch TMC2208 works for me (thanks!), but the problem with the persist menu change remains. When I cancel a print in octoprint, the menu does not return to the idle state. Also, sending a G28 does not get the regular menus back.
Ok, this was a Marvin bug - should now be fixed
https://github.com/MarlinFirmware/Marlin/issues/16893
Daniel, would you make a new build or share the .h files that you used for this one? Kind regards, Chris
New Marlin Release 2.0.4.4
Hi Chris,
I just released the Firmware for Marlin 2.0.4.4. I hope this fixes the bug!
Since Marlin is growing in size and would not fit the memory of the board, I had to trim some cosmetic features like the status screen image. Funcitonality remais the same.
Marlin
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…
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!
One question, what software…
One question, what software are you using to burn the firmware to the board?
Have same problem, but…
Have same problem, but occasionally the LCD screen turn on. I have to turn off and turn on printer 6-7 times until it start working.
Stock firmware works ok
Try the 2.0.4.4 version I…
Try the 2.0.4.4 version I just posted. It should come with a fix for this Marlin bug.
BEEPER_PIN
Hi Daniel,
thank you for your excellent work! I have successfully flashed your Marlin Ultimate Edition to my Creality Ender 3X and it worked very well. Right now I am doing the next step and building a firmware on my own to be able to include some specific settings (e.g. PIDTEMP, PIDTEMPBED).
In the Configuration.h file on line 881 ("#define SERVO0_PIN 27") there is a remark that the BEEPER_PIN sould be set to -1 to prevent triggering the BL-Touch probe during the menu use. Although this did not happen when using your compiled firmware, I double checked the file (Marlin\src\pins\sanguino\pins_SANGUINOLOLU_11.h) and there BEEPER_PIN is set to 27 or 29 depending on the configuration and not to -1. Shall I change this value to -1 or am I missing something?
Greetings from Vienna,
Chris
Hi Chris, The latest…
Hi Chris,
The latest versions of Marlin do not require the remap of the beeper pin. No further action required.
Regards,
Hi Daniel, thank you for…
Hi Daniel,
thank you for your quick reply. :-)
By the way: it turned out that enabling the PID-Tuning for the heatbed (which is disabled by default) increases the size of the firmware so that is too large. So I will limit the changes more or less to entering my PID-Tuning values for the hotend.
Greetings,
Chris
SD Card
Why the SD card was disabled?
Processor cycles
To enable the advanced Marlin 2 features like the S-Curves and the adaptive smoothing I had to turn off something to free memory. The SD Card support was the only candidate left and by doing that we got additional benefits...
The 1284P chip has a limited processing power and every time it gets overloaded with complex GCode instructions it will hang for a few microseconds. When this happens the residual pressure in the nozzle generates a blob.
Obviously the SD Card reading takes a huge amount of cycles and after disabling it we can have a much smoother operation.
Another feature enabled to save processor cycles is the ENDSTOP_INTERUPTS_FEATURE that eliminates the endstop check loop.