Adding Customizability
After using my Ender 3 machine for a few days, I decided that I wanted to add a filament runout sensor so that I didn’t lose valuable print time or waste filament. After some quick internet research, I found out that you can’t flash new firmware onto the Ender 3 over USB like I was used to, and the process only got more complicated after that. After an evening tackling problem after problem, I finally managed to get the latest version of Marlin loaded and that effectively let me customize the machine as I saw fit. I mostly just used it to install a filament runout sensor.
One of the cool things about the Ender 3 is that it is entirely open source. You can go to the github page and find all of the prints, bills of material, PCB layouts, firmware, everything. That being provided by a commercial 3d printing company seems pretty cool to me. That being said, one of the bigger frustrations I have with this machine is not being able to plug a USB cable in, and flash updated firmware. I guess I can’t really complain when the whole printer costs $200, considering my Duet WiFi controller costs $160 for just the controller.
This post is a step by step of how I managed to get the latest Marlin firmware flashed onto my Ender 3.
Table of Contents
Tools Required
I used a laptop with Arduino IDE installed, an Arduino Mega, female to female jumper wires, and one male to female jumper wire.
In order to burn the bootloader, I had to use two versions of the Arduino IDE. One was the latest from the windows store, and the second was a custom version from TH3D’s unified firmware package.
I also downloaded the latest 1.0 version of Marlin from their site, which conveniently has the Ender 3 preconfigured.
https://marlinfw.org/meta/download/
Jumpering The Arduino
Burning a bootloader required gaining access to the controller, and I found the best way to do this was to remove the bottom cover. Three screws here on the bottom, and one on the top, and this will come off. I unplugged the fan so that I could set the cover aside.
The six empty pins at the top of the picture are the SPI bus.
I used the above pinouts to jumper the Arduino to the Ender 3.
- 5V to 5V
- MOSI to MOSI
- GND to GND
- MISO to MISO
- SCK to SCK
- The Arduino PWM pin #10 to Ender 3 RESET
I used the male to female jumper for the PWM #10 to Reset.
Burning The Bootloader
I connected the Arduino to my PC, then loaded the ArduinoISP sketch. I made sure to include the U8Glib library in the sketch, and then uploaded it to the Arduino.
I used the TH3D Arduino IDE, selected the Sanguino board, selected the Arduino as ISP, and clicked “Burn Bootloader” In the Arduino IDE command window it read “Output bootloader burned successfully”. Now the bootloader was burned onto the Ender 3, and I can load Marlin!
Once the bootloader was successfully burned, I put the cover back on. The rest of the flashing process was now handled over USB.
Flashing Marlin
I downloaded the Github link for the latest Marlin 1.0 release. To configure the firmware for the Ender 3 I navigated to Marlin 1.1.x >> Marlin >> Example Configuration >> Creality >> Ender-3 and copied the following files:
Configuration.h
Configuration_adv.h
_Bootscreen.h
_Statusscreen.h
I pasted the files in the Marlin directory and overwrote the existing. This gave me Marlin firmware configured for my Ender 3.
The next issue I ran into was that the Marlin firmware file was too large for the memory of the Ender 3 controller, so I had to comment out the boot screen image (#define SHOW_CUSTOM_BOOTSCREEN). After that I was able to flash using 99% of the available memory, but it worked!
When flashing the firmware, I had to make sure I selected the Sanguino board. After that, everything worked OK.
Firmware Updates Enabled
This took me about three or four hours after stumbling through several roadblocks, but in the end it enabled me to update and customize my firmware, which allows me to do stuff like add a filament runout sensor and save filament. You can see my related post for how I configured and enabled the runout sensor.
Author
-
Cliff is an Engineer and Maker in the Metro Detroit area
http://www.CreatingWithCliff.com creatingwithcliff@gmail.com Villerot Clifford