Ender 3 vanilla Marlin update: Concise guide



I’ve previously covered updating to the TH3D version of Marlin on the Ender 3, this time we install vanilla Marlin 1.1.9 on an Ender 3 Pro. ‘Vanilla’ means that we are using the original, main branch of the firmware, instead of one modified by a 3D printer manufacturer or third party such as TH3D.

Updating will enable thermal runaway protection, an essential safety mod, as well as some niceties like babystepping. Using vanilla Marlin will also streamline the install of a BLtouch later on (I will be remaking my previous guide). Power loss recovery is an optional feature covered in this video as well.

As the video mentions, you will still need to burn a bootloader to do this. The link to this video is below. The firmware for the Ender 3 and Ender 3 Pro is identical minus the word ‘pro’ appearing on the main status screen.

Thanks to Stephen Kirby for advising the best way to open the electronics cover.

Marlin Firmware: http://marlinfw.org/
Sanguino Board: https://github.com/Lauszus/Sanguino
Burning a bootloader guide: https://www.youtube.com/watch?v=fIl5X2ffdyo

TinyAVR hookup guide: https://learn.sparkfun.com/tutorials/tiny-avr-programmer-hookup-guide

Support the channel by buying this printer from the following links:

Ender 3 Pro Banggood ($30 off with coupon 1bc1ed): http://bit.ly/2OUcEyS
Ender 3 Banggood ( $180 if you select US warehouse): https://bit.ly/2NWjwi7
Ender 3 Pro Amazon: https://amzn.to/2DpkbEs
Ender 3 Amazon: https://amzn.to/2xyJ23s
Ender 3X (glass bed version): https://amzn.to/2I7dG85

Buy quality and affordable filament from X3D. Buy 3, get 1 free and a free sample pack with every order: www.x3d.com.au

Gearbest affiliate link (help support the channel): https://www.gearbest.com/?lkid=13807527

Take a look around and if you like what you see, please subscribe.

Support me on Patreon: http://www.patreon.com/teachingtech

#3Dprinting #ender3 #marlinfw

source

Author: admin

50 thoughts on “Ender 3 vanilla Marlin update: Concise guide

  1. First of all, Thanks for such an easy to follow guides on Ender 3. I have watched almost all of your ender 3 related videos.
    But I have really easy method for upgrading to vanila marlin to ender 3 or any other supported printer.
    1. Download and extract TH3D full package.
    2. Download and extract Vanila Marlin(VM) firmware to TH3D folder.
    3. Now Copy ender 3 example configuration files to root of "vanila marlin" folder.
    4. Now just open merlin.ino in the above folder and flash it.
    * additionally you can change configuration according to your need before flashing

    This way dont have to bother about sanguino board install and u8glib install etc. Because they are already added in TH3D download.
    Just copy Vanilla Marlin and Copy your Configuration files and ready to flash.

  2. Thank you for making this. One issue I've run into with my Ender 3 is that the X and Y axis are not calibrated correctly with the firmware on it and so printing a 20mm calibration cube does not come out cubic. I've always made adjustments in the marlin firmware with my RepRap 3D printer and being able to flash the marlin firmware will now give me the ability to do that.

  3. I do everything according to instructions.
    Compilation OK.
    Unfortunately, it fails to upload.
    Can you help me?
    Arduino:1.8.7 (Windows 7), Płytka:"Sanguino, ATmega1284 or ATmega1284P (16 MHz)"
    Sketch uses (98%) bytes normali is 93?

  4. I followed this guide step by step and get a couple of errors when verifying compile
    1) "Multiple libraries were found for "U8glib.h…Used: C:Users<username>DocumentsArduinolibrariesU8glib"
    2) "Error compiling for board Sanguino"

    Any ideas on how to fix error?

    Thanks for all you videos really do find them helpful!

  5. I noticed that my ender 3 doesn't seem to accept cura gcode very well in terms of cura's available feature, such as printing speed(so I have to manually control through the knob every time if I want slower print, otherwise it's always setting back to 100%FR on the LCD)

    does using vanilla marlin solve this problem? if I decide to go change the board to MKS Gen L, then it must be loaded with new Marlin firmware isn't it? Also, since I'm new to 3D printing, if I'm not concerned about wanting thermal runaway, I'm not so sure if I want more features than those gcode settings more available, so I'm still in doubt whether or not this whole firmware changing thing is even worth it, or if it has risk of completely screwing up the firmware/hardware if one/few pins were wrongly inserted.

  6. Post update My LCD screen doesn't always respond to dial turning and even prints different file than what is visually selected. Have you heard of this issue? Thanks

  7. Hello, I watched this video after the other video you teach to do the bootloader and then I installed the TH3D Unified Firmware Package (U1.R2.7) software. Is this software you teach to install (Marlin) in this video more current than TH3D? Among these firmware have any advantages or disadvantages? Thank you.

  8. Please answer this Michael. i do everything i need to do and it doesn't show up. how did you get "marlin". i only find marlin.ino, marlin.h, i cant find a document that is just marlin. also what do you use to to open the documents? i cant find it and when i open it with notepad, its a strait line of codes?

  9. Hi Michael. I'm wanting to use the BLtouch and have used the video and the bootloader video to get started. However when I tried to compile the sketch after doing the updates you suggest I get the error. "'speed_lookuptable_fast' was not declared in this scope" and it refers to line in the sketch:-
    const uint16_t table_address = (uint16_t)&speed_lookuptable_fast[(uint8_t)(step_rate >> 8)][0],
    Can you help with this. Thanks Rob

  10. So just to confirm, I have already installed the bootloader when using the TH3D firmware, does this mean I don't have to do that again. Now I just connect the printer to the computer and flash it as instructed above?

  11. BLTouch might have been the better option for me, but now I'll get the EZABL from a friend for free so I gotta figure out how to get it to work. I can and probably will use the Unified firmware for now, but will upgrade the board in a not too distant future so will have to figure out how to configure it in vanilla Marlin too.

  12. Hi, I just got my Ender 3 Pro together, and it successfully updated the boot loader. But when I try to upload the firmware, it gives me the error "avrdude: Expected signature for ATmega1284P is 1E 97 05

    Double check chip, or use -F to override this check.
    Wrong microcontroller found. Did you select the right board from the Tools > Board menu?"
    It compiled correctly, and I have the board/com port/everything set up. The only difference is I am using a uno to program.

  13. Wow…What a great lesson – I did do the bootloader as per your previous video (TH3D one) and was not happy to loose the functions on the LCD. Since I am not using BL – I guess I will go for this option. Thanks for this crystal clear lesson

  14. I don't understand how the bootloader plays into this. Where does that come into play if you're connecting the printer to your computer via USB? There really is no other way of updating the firmware!?

  15. Hi. Thanks for the tutorial. I got mine up and running, but I noticed that my progress bar on the LCD no longer shows any progress. I'm not sure if it's the new vanilla Marlin firmware or Octoprint. How do I fix this?

  16. Can you make a video from Bootloader to Marlin to Bl-touch? Not that I'm complaining but I have to watch 3 videos and I kinda of get lost in the middle. Thank you very much

  17. Is it worth getting marlin 2.0? I see 1.1.9 branch is still getting bugfixes but maybe 2.0 would be better? There is also sample config for Ender 3

  18. Since I've done this on my Ender 3 I get horrendous layer shifts on my prints not sure what's causing it before the change everything was ok, you say make sure drivers are installed is there another step?

    I have made sure that no belts are slipping and that the bed is level and that the stepper motors are working correctly.

    These prints are 3hrs apart and as you can see very different results, does anyone have any ideas?

    I've gone to vinila marlin as I wanted manual mesh bed leveling as my Ender 3 is slightly warped.

    Before going to vinila marlin:

    http://bowhillgames.com/Before/20181030_180325.jpg

    http://bowhillgames.com/Before/20181030_180329.jpg

    http://bowhillgames.com/Before/20181030_180340.jpg

    http://bowhillgames.com/Before/20181030_180349.jpg

    http://bowhillgames.com/Before/20181030_180354.jpg

    http://bowhillgames.com/Before/20181030_180411.jpg

    After loading vinila marlin:

    http://bowhillgames.com/After/20181030_175611.jpg

    http://bowhillgames.com/After/20181030_175619.jpg

    http://bowhillgames.com/After/20181030_175628.jpg

    http://bowhillgames.com/After/20181030_175702.jpg

    http://bowhillgames.com/After/20181030_175715.jpg

  19. I followed this exactly and now my printer only warms the bed and nozzle then homes the X axis then shuts down. Not sure if this is a slicer problem or if I messed something up in the program

  20. Works fine until I try to add the Sanguino board. I keep getting an error on download – Something about the java signature. I get this error
    sun.security.provider.certpath.SunCertPathBuilderException

    Arduino: 1.8.7 (Windows 10), Board: "Arduino/Genuino Uno"

    Error reading file (C:Program Files (x86)Arduinohardwarearduinoavrboards.txt:0): Invalid line format, should be 'key=value'

    Error compiling for board Sanguino W/ ATmega1284 or ATmega1284P (16MHz).
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Error downloading https://github.com/Lauszus/Sanguino/releases/download/1.0.2/Sanguino-1.0.2.zip
    java.lang.RuntimeException: java.lang.Exception: Error downloading https://github.com/Lauszus/Sanguino/releases/download/1.0.2/Sanguino-1.0.2.zip
    at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:175)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.Exception: Error downloading https://github.com/Lauszus/Sanguino/releases/download/1.0.2/Sanguino-1.0.2.zip
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:139)
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:73)
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:55)
    at cc.arduino.contributions.packages.ContributionInstaller.install(ContributionInstaller.java:101)
    at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:172)
    … 1 more
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1614)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:987)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
    at cc.arduino.utils.network.FileDownloader.downloadFile(FileDownloader.java:181)
    at cc.arduino.utils.network.FileDownloader.download(FileDownloader.java:132)
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:137)
    … 5 more
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596)
    … 18 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
    … 24 more
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Invalid library found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen: no headers files (.h) found in C:Program Files (x86)ArduinolibrariesNEW_Touchscreen
    Error downloading https://github.com/Lauszus/Sanguino/releases/download/1.0.2/Sanguino-1.0.2.zip
    java.lang.RuntimeException: java.lang.Exception: Error downloading https://github.com/Lauszus/Sanguino/releases/download/1.0.2/Sanguino-1.0.2.zip
    at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:175)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.Exception: Error downloading https://github.com/Lauszus/Sanguino/releases/download/1.0.2/Sanguino-1.0.2.zip
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:139)
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:73)
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:55)
    at cc.arduino.contributions.packages.ContributionInstaller.install(ContributionInstaller.java:101)
    at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:172)
    … 1 more
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1614)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:987)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
    at cc.arduino.utils.network.FileDownloader.downloadFile(FileDownloader.java:181)
    at cc.arduino.utils.network.FileDownloader.download(FileDownloader.java:132)
    at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:137)
    … 5 more
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1596)
    … 18 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.build(SunCe

  21. Ive printed for years in my job and more recently at home with my new printer. I have never updated the firmware before. This video and your previous bootloader video, helped me get this done.

    Thermal runaway and BL Touch support was absolutely crucial for me going forward. Thanks so much for these videos, theyre clear, concise and easy to follow along. Thanks Michael.

  22. Thank you for this easy to follow guide, Michael. I have recently purchased my Ender-3 and it is my first 3D printer. I have found your channel and have been watching all your videos. I really like the way you explain in very great detail, but your instructions and editing are fast and concise. Excellent production quality! Keep up the great work, and thank you for all the instructions.

  23. It seems having an Arduino bootloader on the printer causes it to reboot when the COM port is opened, at least that is what is happening to me. This causes Cura not to detect the printer as it only 1.5 seconds for the reboot. Printing via USB stick is OK though. Might be worth a guide on how to program Marlin without a bootloader.

  24. I have been meaning to update my ender 3 using your guide for a week or 2 now and today I finally got the chance. 1 thing i did notice is that your installing the wrong version of the u8glib library. The text file states no newer than 1.17 due to folder structure changes and your installing 1.19.1.
    Perhaps this is why some of the features are not working correctly for some people.
    1.17 is not availible through the arduino library manager so you need to go to the u8glib github and dl it manually then install via the add.zip library function under include library via the sketch menu. You will need to remove the existing installed u8glib library first though by going to your documents/arduino/libraries folder and deleting the u8glib folder as this is the 1
    19.1 version and needs to be deleted before you can install the 1.17 version.
    Thank you again for your vids. Without them figuring all this out on my own would be fustrating and time consuming and i probably wouldn't bother due to time constraints so i appreciate your efforts.

  25. Hi Micheal:

    While burning the Boot Loader I get this error message:
    Arduino: 1.8.7 (Mac OS X), Board: "Sanguino, ATmega1284 or ATmega1284P (16 MHz)"

    avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

    avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x01
    avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x10
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude: stk500_disable(): unknown response=0x12
    Error while burning bootloader.

    Any ideas? Would greatly appreciated, Thanks!

    PS: Nevermind I did it!!! Thanks anyway. I was using the latest version of the Arduino IDE 1.8.7 this one does not work for burning a Bootloader, you have to use version 1.8.5, worked like a charm!!! The new software is awesome, looking forward to your video about it!!
    I hope this helps someone having the same issue.

  26. Awesome videos as always!

    Would you please consider making a video on Manual Mesh Bed leveling? I use it on my Ender 3 and its great, but so many people are afraid to try it.

  27. Great video. Just a tip, you could enable the line numbering in the arduino IDE so that it would be a little be easier to follow your guide and verify out steps 🙂

Comments are closed.