Burn Bootloader and Firmware on Ender3
by Amit_Jain in Workshop > 3D Printing
7540 Views, 4 Favorites, 0 Comments
Burn Bootloader and Firmware on Ender3
![n5.jpg](/proxy/?url=https://content.instructables.com/FIO/TZ11/L125G9AF/FIOTZ11L125G9AF.jpg&filename=n5.jpg)
Many of us, have an Ender 3 printer. It works amazing for an entry-level 3d printer. I got mine 2 years back with an 8-bit board and never felt any need to upgrade the firmware.
Until, I wanted to experiment with Octoprint but to my surprise, it does not support the stock firmware that comes with the 3D Printer. It is a must to upgrade the firmware to marlin...
I started with my research and noticed few hurdles that I needed to solve
- Cannot upgrade firmware over USB cable
- Need USB ISP or Arduino to update firmware
- Need a boot-loader, where to get that one from?
- Connections to board sound scary
- What if I brick my printer?
- All tutorials available were not up to date
So in this tutorial, I will share how to burn a bootloader using an Arduino nano and then upgrade the firmware using a USB cable directly connected to the printer. It sounds scary at first, but it is not.
I was pleasantly surprised by how simple and quick this was...
Supplies
Software
- Arduino IDE
- Marlin 1.x source code
- Drivers for Arduino Nano
- Board manager for Sanguino
- u8Lib
Hardware
- Arduino Nano
- Jumper wire
- USB cable
- PC with Windows
Gather Info
![n2.jpg](/proxy/?url=https://content.instructables.com/FDN/5ZYO/L125G9AC/FDN5ZYOL125G9AC.jpg&filename=n2.jpg)
![n3.jpg](/proxy/?url=https://content.instructables.com/F3G/ZXLV/L125G9AD/F3GZXLVL125G9AD.jpg&filename=n3.jpg)
- Before we start anything we need to get the details of the board
- To get the same open the 3d printer and take some close-up photos
- Mine was 1.1.4V with Atmega1284p 8-bit board
- Based on personal experience, I could not compile Marlin 2.x for my 8bit board. So I recommend using Marlin 1.x
- There is no separate software for the bootloader that one can find on the internet. It is included as part of Arduino ide ( with Sanguino board lib)
Prepare Marlin Code
![2.png](/proxy/?url=https://content.instructables.com/FI6/3V4A/L125G8ZZ/FI63V4AL125G8ZZ.png&filename=2.png)
![3.png](/proxy/?url=https://content.instructables.com/FJ5/5ECV/L125G900/FJ55ECVL125G900.png&filename=3.png)
![4.png](/proxy/?url=https://content.instructables.com/FST/I2IT/L125G901/FSTI2ITL125G901.png&filename=4.png)
![5.png](/proxy/?url=https://content.instructables.com/FK3/2D81/L125G902/FK32D81L125G902.png&filename=5.png)
- Download the latest source code from https://github.com/MarlinFirmware/Configurations/tree/release-1.1.9
- Do not use Marlin 2.x for an 8-bit board
- Extract the Marlin firmware to C:\Temp\Marlin-1.1.x
- Download latest config files from https://github.com/MarlinFirmware/Configurations/tree/release-1.1.9/config/examples/Creality/Ender-3
- And paste them in folder C:\Temp\Marlin-1.1.x\Marlin and paste/overwrite config files
- Make sure that the config files are specific to ender3 only
- File names for reference
- Configuration_adv.h,
- Configuration.h,
- _Statusscreen.h and
- _Bootscreen.h
Prepare Arduino IDE
![1.png](/proxy/?url=https://content.instructables.com/FQ1/PBXH/L125G8ZY/FQ1PBXHL125G8ZY.png&filename=1.png)
![6.png](/proxy/?url=https://content.instructables.com/FSR/EQHD/L125G903/FSREQHDL125G903.png&filename=6.png)
![7.png](/proxy/?url=https://content.instructables.com/FD2/R069/L125G904/FD2R069L125G904.png&filename=7.png)
![8.png](/proxy/?url=https://content.instructables.com/F9Z/23JE/L125G905/F9Z23JEL125G905.png&filename=8.png)
![9.png](/proxy/?url=https://content.instructables.com/FOJ/G66L/L125G906/FOJG66LL125G906.png&filename=9.png)
- Go to https://www.arduino.cc/en/software and download the latest ide based on your OS
- Connect the Arduino nano to the PC via a USB cable, in a few minutes the drivers for USB chip is automatically loaded
- Go to https://www.arduinolibraries.info/libraries/u8glib and download the latest lib zip
- In Arduino IDE Menu, "Sketch" > "Include Library" > "add .Zip Library", select the downloaded zip file and press open
- The u8glib library will be installed and added to ide
- In Arduino IDE Menu, "Files" > "Preferences", add additional board manager https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json
- Press OK/save and close the preferences window
- Under "Tools" > "Board" > "Board Manager", install sanguino board
- You may have to restart Arduino ide for all lib and boards to load
- Connect the 3d printer and PC using a USB cable, so that the usb drivers are also installed (optional)
Burn Bootloader Using Nano
![11.png](/proxy/?url=https://content.instructables.com/FTG/0RRE/L125G908/FTG0RREL125G908.png&filename=11.png)
![10.png](/proxy/?url=https://content.instructables.com/FRM/2HCX/L125G907/FRM2HCXL125G907.png&filename=10.png)
![12.png](/proxy/?url=https://content.instructables.com/F5M/43HT/L125G909/F5M43HTL125G909.png&filename=12.png)
![Circuit.png](/proxy/?url=https://content.instructables.com/F5B/6LKX/L125G9MD/F5B6LKXL125G9MD.png&filename=Circuit.png)
![N1.jpg](/proxy/?url=https://content.instructables.com/F65/ZYNP/L125G9AB/F65ZYNPL125G9AB.jpg&filename=N1.jpg)
- Disclaimer: Once you burn the bootloader, it will overwrite your current firmware.
- Connect Arduino nano to PC via a USB cable and burn ArduinoISP code on it
- Make connections as shown in the picture between ISP pinouts of the ender3 and nano
- Change the IDE settings
- Board: Sanguino
- Processor: ATmega1284p
- Port: Based on the com port detected
- Programer: ArduinoISP
- Under "Tools"> "Burn Bootloader"
- Within a few seconds the bootloader is written on the ender3 board
- Our bigger hurdle is now solved.
- Disconnect Arduino nano
Upgrade Marlin Firmware
![13.png](/proxy/?url=https://content.instructables.com/F7W/1CQX/L125G90A/F7W1CQXL125G90A.png&filename=13.png)
![14.png](/proxy/?url=https://content.instructables.com/FVR/ZWHY/L125G90B/FVRZWHYL125G90B.png&filename=14.png)
![n4.jpg](/proxy/?url=https://content.instructables.com/F9W/B3LE/L125G9AE/F9WB3LEL125G9AE.jpg&filename=n4.jpg)
![n6.jpg](/proxy/?url=https://content.instructables.com/F9U/CKBI/L125G9AG/F9UCKBIL125G9AG.jpg&filename=n6.jpg)
- Connect ender 3 via a USB cable to your pc, in few minutes the latest driver for the USB / board i installed and ready for use
- Go to folder C:\Temp\Marlin-1.1.x\Marlin
- Open Marlin.ino, this, in turn, opens Arduino IDE.
- Verify files Configuration_adv.h and Configuration.h, are for ender3
- If you want recovery post power loss, enable it as shown
- Compile the firmware to make sure there are not errors
- If successful, write the new firmware to ender 3
- Disconnect the USB cable. restart the printer
- Initialize EPROM
- Voila we have Marlin firmware on our ender 3, ready to use
Learnings
- The steps are easier than I originally thought
- The main hurdle is the bootloader, once that is solved, one can upgrade firmware anytime
- Marlin 2.x should not be used on old 8bit boards
- Marlin 1.1.9 is bit laggy and downgraded it to Marlin 1.1.4 from Creality's website https://www.creality3dofficial.com/pages/firmware-download
- I discovered that "Recover on power loss" in Marlin is buggy, even for completed prints, it gave me the option to resume print. So I disabled it and connected my printer on a UPS :)
Please share suggestions/feedback