In this guide, I show you how to install Marlin 2.0 firmware on the Ender 3 or the Ender 3 Pro.
Read the full transcript below if you prefer a written version.
Hello, my name is Daniel, welcome to the CrossLink channel. I would like to help you being more successful with 3d printing and if you're here for the first time, subscribe and hit the bell notification icon so you don't miss anything.
So why you should upgrade your firmware to Marlin 2.0?
First of all, enabling thermal runaway protection should be your main concern regarding safety features. Many printer manufacturers, still forget to activate this by default.
But you will also be able to unlock new features for your printer like mesh bed leveling for better first layer results or power loss recovery to resume failed prints or support for bed leveling sensors or linear advance for better print quality, just to name a few.
And in general with affordable 3D printers, it's like with affordable Android phones. Once they are released, it's very unlikely that the manufacturer will ever release a firmware upgrade and mostly the printers will ship with firmware that is already outdated when you buy it.
If you wanna learn more about the pros and cons of uprading to Marlin 2.0 vs. staying with an older version, watch this video here, where I elaborate in depth about this topic and more important things to know.
So, let's talk about the prerequisites for flashing Marlin 2.0 to this printer.
You will need to have a bootloader installed on your mainboard.
How Do I know, if I have a bootloader?
This question is really important because having a bootloader is a prerequisite to be able to flash firmware to your printer using just a USB cable connected directly between your computer and your printer.
So how can you know if your printer mainboard has a bootloader on it? - Actually you can't. It's not possible to tell unless you just try it out using the USB cable.
But the good thing is - you can't break anything physically by just trying it out.
I have made a video to explain how you can flash a bootloader to these mainboards. It's linked in the info card up here.
If you find out that you're not able to flash firmware using a USB cable, go and install a bootloader first and then come back to this video and continue from here.
Ok, with this out of the way, let's continue with the setup.
You need to download the Marlin Firmware from github to your computer, either on a Mac or PC. The github link is in the description of this video.
On the Marlin github page, first click on the Branch button and then select the bugfix-2.0.x version. We wanna make sure, we get the latest version with all the latest bugfixes.
Then, click on the "Clone or download" button and select to download a zip file.
After that's done unpack the downloaded zip file into a folder on your computer.
Now there is one major thing that has changed since January 2020.
The printer specific configuration files that we need as a starting point - they used to be in this config folder of the Marlin repository - but they have been moved to another location - another github repository.
So what does it mean for you?
It means you have to go to this second github page, which is the Configurations repository.
Now, this is really important, don't just download a zip file from there without this next step.
Klick on the Branch button and select the bugfix-2.0.x version from that list.
Now, click on the "Clone or download button" and select to get a zip file from there.
Inside of this second repository - once you unzipped it to a different folder on your computer - you will find the configuration files that you're looking for.
Navigate to the examples->Creality->Ender 3 subfolder. There is no seperate folder for the Ender 3 Pro btw.
Copy all files from this folder into the Marlin folder that is located inside the Marlin repository. Make sure you confirm to overwrite all existing files.
In the previous guides to flash Marlin firmware, I have used the Arduino IDE for compiling and flashing Marlin firmware and this is still possible but the recommended way for the future is to use Visual Studio Code with PlatformIO, which I will show you in this video.
So, let's first make sure to install visual studio code from www.visualstudio.com.
Make sure you don't accidently select the full blown visualstudio for pc or visualstudio for mac if you're a mac user. Visual Studio Code is the thing that we need and that works.
After installing visual studio code, you need to launch it for the first time and open the extensions tab on the left hand side of the window.
In the search field, enter "platformio" and then select "PlatformIO IDE" from the results list.
Now, click the "Install" button and wait until the installation process is finished. Don't launch any other installation at the same time and make sure, you don't close visual studio code until it's done installing.
There might be a message saying "Please restart VSCode" after the installation. If you see this, please close Visual Studio Code and launch it again.
After the installation is finished, click on the extensions tab of visual studio code again and search for the extension "auto build marlin".
Install this extension by clicking "install".
Now, we are ready to do the final touches to our Marlin configuration before we will upload it to the mainboard.
First, open the Marlin folder in visual studio code by clicking the folder icon in the left menu bar and then clicking "Open Folder".
Navigate to the folder, where you have unzipped the Marlin files into, don't navgate further into any subfolder there and click "select folder" to open it.
Now, you can already test, if everything is set up correctly and your're able to build the firmware.
Go to the left menu bar again and click the large "M" button. This takes you to the Auto Build Marlin extension.
Here, hit the build button in the header of the upper section that is named "Build…". The buttons will show as soon as you move your mouse cursor into the section and will be hidden otherwise, so don't be confused if you don't seen them right away.
A net tab will open and ask you for a specific environment for build.
Select the Build button for the sanguino1284p because the Ender 3 models have an ATmega1284p processor.
The build will then start in the terminal tab and depending on your computer's performance can take up to a few minutes. Especially in the first run, it will need to install several software packages from the internet, so please make sure you are connected.
After the build has finished, you will see a list of results. Please scroll up a little bit until you see the amount of program memory used by this build.
This will tell you how much memory you can still use for other features and the default configuration shows already, that there is not much room left, so we might have to address this later if we enable more functionalities than the available program memory can take.
For the starters, please at this point don't enable any additional features yet. I am stressing this in pretty much every video about firmware flashing because I like to test things individually and enable one feature at a time to be sure, I know what change in the configuration caused a particular problem during the build or upload process. So unless you already have some experience, keep the default configuration at this point and let's continue with that.
Now it's time to flash the firmware to your printer.
Turn your printer on and connect it to your computer using the USB cable.
Now, in visual studio code, in the Auto Build Marlin Tab, click the "Upload" button that's next to the sanguino1284p Build Button.
After the build has been finished, the firmware will be uploaded to your printer and you will see that it is finished in the terminal tab.
If you run into issues like this one saying that the port has been detected but there is still a not in sync problem, this is an indication that your bootloader needs to be re-installed. Please install the bootloader using one of the instruction videos, I have linked in the video description.
Also, Your printer will be rebooting after the firmware has been flashed successfully.
You might see that after the reboot you get an error message on your printer's display saying "Err: EEPROM Version".
This happens when you upgrade from an older version of Marlin firmware to 2.0 and you can resolve it quickly by entering the printer menu, then going to the configuration menu and finally entering the Advanced Settings menu. Scroll down to the bottom until you select the "Initialize EEPROM item". You then have to highlight the Init item using the control dial and finally push it to confirm. There will be no visual confirmation unfortunately.
Power off your printer and power back on to see whether this was successful. Now you should get "Ender 3 ready" instead of the error message.
Great, this is already a very important milestone. However we didn't not yet make any adjustments to the configuration, which you might need. We will start doing this right now.
Navigate to the folder menu in visualstudio.
Expand the Marlin subfolder. You should see the Configuration.h and Configuration_adv.h files.
Open the Configuration.h file by clicking it.
If you have installed the new silent mainboard 1.1.5, this part of the video applies to you, otherwise you may skip ahead one minute.
We will enable support for the new stepper drivers on the 1.1.5 mainboard first, to make sure, Marlin uses those drivers correctly.
By opening the Edit Menu click the "Find" Menu-Item, You will also see, what keyboard shortcut you can use on PC or Mac for each menu option, which might be different.
Search for TMC2208 and hit enter.
This takes you to the section, where the stepper drivers are configured. It tells you that by default it is assumed that A4988 drivers are being used if nothing else is configured.
Select and copy the TMC2208_STANDALONE term and overwrite the A4988 text of the X_DRIVER, Y_DRIVER, Z_DRIVER and E0_DRIVER - TYPE config item.
Also uncomment all these changed lines so they get activated, otherwise they will still be ignored.
Ok, stepper drivers are configured correctly.
I would suggest to enable a feature, which I use all the time on printers that don't have a bed leveling probe and that is Mesh Bed Leveling.
However, this guide will not explain how to use mesh bed leveling. I already published another video about this, it's linked in the info card up here.
Let's first start with enabling the MESH_BED_LEVELING feature around Line 1214 of Configuration.h.
By the way, if you can't find the option that I am referring to, because the line numbers might have changed in the meanwhile, try the search option using the Edit→Find Menu or the corresponding Keyboard shortcut. Enter the term you are looking for in the popup, so for example MESH_BED_LEVELING and use the arrow buttons to jump to the next occurence, if there is multiple hits for that search term. And there you are.
Right below that in line 1220, enable RESTORE_LEVELING_AFTER_G28. This will make sure, that every time a print starts, your mesh bed leveling configuration is activated automatically, so it loads all the points that you have calibrated and uses them for the upcoming print.
Then jump to line 1319 and enable LCD_BED_LEVELING.
This will add a menu item to your printer's menu to be able to actually control and configure bed leveling using the printer menu.
Good, now save your changes to this configuration file by using the File->Save menu item or the corresponding shortcut. You will see that once you have unsaved changes in a file, there will be a white dot nearby the file name in the open tabs. As soon as the file is saved, this dot will disappear.
Let's try to upload this new version of Marlin firmware to the printer by using the Auto Build Marlin menu again.
And it failed, so let's look for the reason.
And here we have the issue, we ran out of memory by this amount of bytes. This means, we will have to find one or multiple unused or non functional features in our Marlin configuration, that we can disable to free up enough memory.
I have written a blog post, that I've linked in the description of this video, where I break down all the potential features that you might at some point want to enable in Marlin 2.0 and what other features you could potentially disable to free up enough memory to be able to compile the firmware.
There is also a sample calculation for MESH_BED_LEVELING in the previously mentioned combination and what features you may disable to get it compiled, so let's do exactly that.
So taking those recommendations, I am disabling ARC_SUPPORT in Configuration_adv.h
And I am also disabling SHOW_CUSTOM_BOOTSCREEN in Configuration.h.
Don’t forget so save your changes for both files and let's try uploading that again.
And yes, it compiles and uploads to the printer, great. Time for a test print with the new firmware.
If you like this video, please do me a favor. I appreciate if you hit the like button or subscribe to my channel - BUT - the real way, how you can support me is - Go watch some of my other videos that I have linked here in these two cards. Thanks for watching, see you next time.