Setting up Marlin 1.1.8 on a Prusa i3 Clone, and upgrading the Z-Axis Lead screw (Part 1)

I have recently purchased a very cheap 3D printer off ebay. A couple of days later, the box was delivered to my door, so I took a day off, to assemble it, and try it out.

Assembly took around 4 hours, and after a couple of days of tinkering I was managing to print a decent, but far from perfect  20mm calibration cube, it was evident that although for the investment the printer did the job, it could most definitely use some upgrades (the first compulsory upgrade I would recommend is a decent extruder, but more on that in another post.)

In this post, we will deal specifically with upgrading the Z-Axis lead screws, along with the Marlin 1.1.8 firmware.

Before proceeding any further, you also need to know, that a firmware upgrade after replacing the screws is not compulsory in any way. Even if the steps / mm of the z-axis need to be changed drastically, this can be achieved by modifying the “start-script” in your g-code and  adding a line with an M92 instruction as follows :-

M92 {axis}{steps per mm}

(Refer to for more info)

Basically the M92 instruction overrides the preset steps / mm inside the firmware (until the printer is rebooted). Obviously if you use this override, the printer movements via the lcd menu will not be accurate, until you send the command, but most (if not all) slicers, include a start / end script, which is added automatically to your g-code every time you slice an object, so all you need to do is add an M92 instruction to the start script of your slicer, and you are good to go.

The M92 can be used for the X/Y/Z/E axis as follows :-

M92 X78.81 Y78.81 Z400 E114.130

This will set the steps / mm for all the axis including the extruder (E), and will override the firmware settings of your printer.

If armed with the above knowledge, you still want to go ahead and update the firmware, here is how I went about it.

Before we begin, assuming your printer is working correctly, I would recommend buying a second control board identical to the one inside your printer, so if things go south, you can always fall back to the original board. My printer came with a GT 2560 Rev A board, (without a bootloader, but more on this later), so I got a second one off amazon, including a full graphics display for around 40 bucks. Luckily the board received came with a proper bootloader.

The second thing to check is the orientation of the connectors. For some odd reason I came across GT2560 boards with the LCD / SDCard connector notch rotated 180 degrees, which worked with the supplied LCD Display board, since the latter also had the wrong orientation on its connector, but failed to work with a brand new lcd board.

Always check the pinouts (especially supply and ground pins) on both the mainboard and the lcd.

If the buzzer keeps beeping and / or the lcd backlight keeps blinking after power is applied, chances are the LCD / SDCard connectors are rotated by 180 degrees on one end.

From this point onward, I will describe the process I went through to upgrade my printer, this by no means implies that this is the only or best way to go about it. Even by following the steps to the letter there is still a chance you could brick your control board, or damage the printer. If in doubt stop and do some research, do not try to guess.

Proceed with caution, and at own risk.

Get and compile the latest marlin firmare
  1. Head to and download the latest stable release (1.1.8 at the time of writing). Open the zip archive, and extract the folder called “Marlin” somewhere on your hard drive.
  2. Head to and download the latest version of the Arduino IDE (1.8.5 at the time of writing)*. Install or Unzip, depending on the version you downloaded.
  3. Head to and download the latest version of the U8glib library for monochrome TFTs and OLEDs. (1.19.1 at the time of writing)

*note : Earlier releases of marlin might require earlier versions of the arduino compiler, which can be found at however dealing with the issues of older releases is beyond the scope of this writeup.

Start the Arduino IDE, and open the file called “marlin.ino” located in the “Marlin” folder you extracted in step 1.

If you have never used the u8lib library before, you will need to install the zip file you  downloaded in step 3. Click on Sketch -> Include Library -> Add .ZIP Library

Head to the location where you saved U8lib-1.19.1 (from step 3) select it and click open.

Click on Tools -> Board and select  “Arduino / Genuino Mega or Mega 2560”

Make sure that under Tools -> Processor Atmega 2560 (Mega 2560) is selected

And finally under Tools -> programmer, select “AVR ISP”

Before moving forward, I would also suggest, heading over to File -> Preferences, and check Show verbose output during : compilation and upload. This could be very helpful if we encounter any errors later on.

We are now ready to test compile the code, to make sure everything is ok before we start messing about with the code. Hit the “✓” symbol under “file”, and make sure the unmodified firmware compiles successfully.

If you selected “show verbose output during compilation”, the bottom part of the screen should start filling up with information the compiler is giving us. After a while, if all goes well you should be able to see the message “Compiling core …” and a bit later “Linking everything together…“. Another couple of messages from the linker and we are done :). You have successfully compiled the marlin firmware.

If you receive any errors relating to the U8lib, make sure you have followed the steps to include the library above correctly.

In part 2 of this blog post, we will deal with the actual configuring and uploading part of the firmware.

Leave a reply:

Your email address will not be published.

Site Footer