The Anycubic Mega S is a cheap 3D printer. I bought this printer for about $280 CAD with shipping.

Configuration[edit | edit source]

Serial talks at 250,000 baud.

The print area is 210x210x205 (width, depth, height).

Anycubic suggests that the following slicer settings:

  • bottom layer speed not exceed 20mm/s
  • top/bottom speed 30mm/s
  • outer shell speed 30mm/s
  • retraction speed at 60mm/s at 6mm or for flexible filament at 91mm/s at 6.4mm

Cura Profiles[edit | edit source]

Travel speed at 100 mm/s seemed to help with stringing.

General Notes[edit | edit source]

Unnecessary Travels along Inner Wall[edit | edit source]

When trying to print a curved wall that is 3 layers thick (1.2mm thick with 0.4mm nozzle), the middle inner wall is broken up into multiple sections by Cura and the nozzle prints each section backwards, causing the nozzle to jutter backwards instead of printing the inner wall as a single smooth line. This seems to be an issue when a curved section is exactly a multiple of the nozzle width and increasing the wall thickness from 1.2mm to 1.3mm seems to fix this issue.

However, Cura still has unnecessary travel around the perimeter of the initial inner wall. This was rectified by setting the Minimum Wall Flow (under Shell) to 30%. This forces Cura to not travel through printed walls since it must be extruding at 30% flow rate. It still might travel for some sections as it tries to start the next seam in another corner which can be fixed by setting the Z Seam Alignment (Shell) to 'Shortest'.

Firmware[edit | edit source]

The stock firmware can be found on Anycubic's website, near the bottom of the page. The stock firmware uses Marlin 1.1.0-RC8. UUID cede2a2f-41a2-4748-9b12-c55c62f367ff.

The TFT display is driven by a separate microprocessor (more information on the displays at which communicates via serial with the main board. Updating the firmware will not update the display GUI.

Custom Firmware[edit | edit source]

There is a custom firmware for the Mega S maintained by knutwurst at This firmware uses the latest version of Marlin. You can download the pre-compiled release .hex file or obtain the source and compile it in Arduino IDE manually. I would recommend against using the HEAD for your firmware since it appears knutwurst commits test changes to master.

Precompiled[edit | edit source]

If you use the precompiled version, note that there are the following issues/annoyances with knutwurst's precompiled version:

  • The firmware still has startup sound. This can only be disabled by editing Marlin/Configuration.h and ensure STARTUP_CHIME is not defined.
  • Filament sensor needs to be closed or else it shows an error on the display when the machine is powered on. The special menu to disable the filament sensor is only temporary and reverts on a reset. You will need to undefine the ANYCUBIC_FILAMENT_RUNOUT_SENSOR in Configuration.h to disable this completely. The screen nags you of the filament because this firmware will send J15 to it on startup to the display if FILAMENT_RUNOUT_PIN is high.
  • Bed size is changed from 210x210 to 225x220 (width, depth). I reverted this back to 210x210 by compiling the firmware manually (see section below) because the nozzle can crash to the clips on the right side of the bed.

Compile Yourself[edit | edit source]

If you choose to not use the pre-compiled version, compiling a modified version is very easy. I eventually went with this route to address the issues listed above. Clone the repository and open the Marlin/Marlin.ino file in Arduino IDE. Set the target for the ATmega2560 board. Get the compiled binary by going to Sketch -> Export compiled binary. The binary will be located in the same location as the Marlin.ino file. Upload the .hex file that does not contain the bootloader via OctoPrint to update the firmware.

Review the first 100 lines of Configuration.h and uncomment whatever applies. Ensure that the correct device is enabled with the proper configuration flags (eg. KNUTWURST_MEGA_S, KNUTWURST_TMC). You may want to uncomment line 287 so that #define MOTHERBOARD BOARD_TRIGORILLA_14 is defined.

Flashing Firmware[edit | edit source]

After obtaining the .hex file, to update the firmware via OctoPrint, install the OctoPrint Firmware Updater plugin and configure the plugin with the following settings:

  • Flash method: avrdude
  • AVR MCU: ATmega2560
  • Path to avrdude: /usr/bin/avrdude
  • AVR Programmer Type: wiring
  • Baud Rate: auto

Mods and Upgrades[edit | edit source]

Filament Holder[edit | edit source]

Filament Holder -

I installed this filament holder so that the entire printer fits inside a Creality enclosure which was designed for the Ender 3.

Issues[edit | edit source]

The filament holder seems to be working fine. Initially, the filament spool was sagging, but this turned out to be a loose screw. The filament guide will come loose over time which I attribute to the extruder motor's vibrations and needs periodic retightening.

TMC2208 v2 Motor Driver[edit | edit source]

Follow the guide at:

To install the new TMC2208 drivers, disconnect power and open the unit to remove all the existing drivers. Plug one driver in one by one and apply power. Adjust the potentiometer so that the measured voltage on the Vref pad is 1V. You can do this all at the same time, but due to space constraints, it was easier to do it sequentially.

If you intend to update the firmware to use the TMC module, you can leave the wiring as-is. Otherwise, you will need to reverse the wirings so that the motor directions are reversed.

See Also[edit | edit source]