Skip to content
Marlin firmware optimized for the Anycubic i3 Mega 3D printer
Branch: master
Clone or download
Pull request Compare This branch is 23 commits ahead of davidramiro:master.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Marlin Merge remote-tracking branch 'upstream/master' Mar 14, 2019
buildroot Merge upstream changes Jan 28, 2019
.gitattributes Merge upstream changes Jan 28, 2019
LICENSE Initial commit Nov 16, 2018 Merge remote-tracking branch 'upstream/master' Mar 12, 2019
davidramiro Default PLA.fff Update S3D profile Feb 6, 2019
platformio.ini Initial commit Nov 16, 2018
process-palette.json Initial commit Nov 16, 2018

Anycubic i3 Mega Marlin (BLTouch) 1.1.9 by davidramiro & MNieddu91

This is my slightly customized version of the Marlin Firmware, gratefully based on derhopp's repo, davidramiros's repo and DerDomink's repo.
This version is a simply 1-to-1 copy of davidramiros's with the necessary changes that BLTouch or any clone can be used.

Feel free to discuss issues and work with davidramiro and me further optimizing this firmware!

I am running this version on an Anycubic Mega-S (for distinction of the different versions, check this Thingiverse thread).
Basically, this works on every Ultrabase version that has two Z-axis endstops. For i3 Mega with single endstop check davidramiros's Wiki.
By default it is designed to work on i3 Mega. New Mega-S works too, but calibrating your extruder is mandatory since it needs to have increased E-steps, see davidramiros's Wiki.

All about a highly recommended calibration according to the instructions can be found in davidramiro's Wiki.
You can find everything you need to set up and calibrate the BLTouch in my Wiki.

Note: This is just a firmware, not magic. A big part of print quality still depends on your slicer settings and mechanical condition of your machine. Since I have reduced the acceleration and jerk settings a bit, depending on your slicer the estimated print time might be around 20% lower. You can compensate that loss of speed by raising the general print speed without losing quality.

Make sure to take a look at the Wiki!

Known issues:

  • Power outage support is not included
  • Estimated print times from your slicer might be slightly off.
  • Special characters on any file or folders name on the SD card will cause the file menu to freeze. Simply replace or remove every special character (Chinese, Arabic, Russian, accents, German & Scandinavian umlauts, ...) from the name. Symbols like dashes or underscores are no problem. Important note: On the SD card that comes with the printer there is a folder with Chinese characters in it by default. Please rename or remove it.
  • Cancelling prints after pausing may show an error. Simply resume the print before canceling. Protip: Switch to OctoPrint.

Why use this?

You always wanted to use davidramiro's fantastic firmware, but didn't want to miss out on the advantages of Automatic Bed Leveling with BLTouch? - Then you've come to the right place!
I'm working together with davidramiro on this FW and you'll always find the latest version of his FW with the necessary adjustments for BLTouch here. No further changes, just his great firmware with support for BLtouch.

Are there pre-compiled firmware files?

I have decided NOT to provide precompiled hex files. Due to various settings which are necessary for the use of a BLTouch, this does not make sense and can only lead to problems.
However, it is not difficult to compile the firmware yourself :-)

Which changes are necessary?

I'll describe the necessary changes for using at least BLTouch in the Wiki.

Compile it yourself:

  • Download and install Arduino IDE
  • Clone or download this repo
  • Browse into the Marlin folder and run Marlin.ino
  • In the IDE, under Tools -> Board select Genuino Mega 2560 and ATmega2560
  • Open Marlin.ino in the Marlin directory of this repo
  • Customize if needed and under Sketch, select Export compiled binary
  • Look for the .hex file in your temporary directory, e.g. .../AppData/Local/Temp/arduino_build_xxx/ (only the Marlin.ino.hex, not the Marlin.ino.with_bootloader.hex!)

After obtaining the hex file:

  • Flash the hex with Cura, OctoPrint or similar
  • Use a tool with a terminal (OctoPrint, Pronterface, Repetier Host, ...) to send commands to your printer.
  • Important Connect to the printer and send the following commands:
  • M502 - load hard coded default values
  • M500 - save them to EEPROM

Calibration & Tuning

Automatic Bed Leveling

You have 2 options for Automatic Bed Leveling.

Option 1 - Automatic Bed Leveling before every print

  • Simply go into your slicer settings and look for the start GCode
  • Look for the Z-homing (either just G28 or G28 Z0) command and insert this command right underneath it:
  • Enjoy never having to worry about an uneven bed again!

Option 2 - Automatic Bed Leveling via Special Menu

  • Insert an SD card, enter the print menu.
  • Enter the special menu by selecting it and pressing the round arrow:

Special Menu

  • In this menu, the round arrow is used to execute the command you selected.
  • Preheat the bed to 60°C with this entry: (if you usually print with a hotter bed, use the Anycubic menu)

Preheat bed

  • Level your preheated bed as well as you can with the four screws.
  • At this point make sure you have all setted up right as described in the Wiki
  • Start the Auto Bed Leveling:

Start Auto Bed Leveling

  • Your Heatbed will now be levelled automatically.
  • Once finished (Nozzle will park in the rear right corner).
  • Wait 20 seconds and then save:

Save to EEPROM

  • Reboot your printer.

After leveling:

  • Reboot the printer.
  • To ensure your levelling gets used on every print from now on, go into your slicer settings and look for the start GCode
  • Look for the Z-homing (either just G28 or G28 Z0) command and insert these two right underneath it:
M420 S1
  • Your printer should now correctly print first layers even on a warped bed.
  • When working on the printer, installing a new hotend or nozzle or the bed warping over time, a new Mesh Leveling procedure is recommended.

Detailed changes:

  • Disabled Mesh Bed Leveling to make room for Automatic Bed Leveling (BLTouch) (check this link to learn more about it)
  • The rest are the identical changes as in davidramiro's changes
You can’t perform that action at this time.