Build log

New firmware, summary and more


Current state of MK2 Clone build

The “Original” thing

Josef Prusa already announced and started sale of the Original Prusa i3 MK3 printer, with a whole bunch of new sensors. Unfortunately, as he was publishing almost everything to the community, currently his company is making everything by themselves, and its hard to buy the things from other suppliers. It was already same with MK2, but there wasn’t so much parts like that as now.

What about firmware?

There are already new versions of Marlin firmware available (1.1.x) which has a lot of new functions, with Unified Bed Leveling on top of them, and also skew correction algorithm. As the firmware which I made for MK2 Clone wasn’t stable enough, and also the X/Y skew was only the calculator, not the true algorithm to compensate it – I decided to abandon it. Additionally, the chinese MK3 aluminium heatbeds are not perfectly cutted, so the results wasn’t good enough.

-> Configuration files for Marlin 1.1.8 are available in the MK2 Clone GitHub repository


Freshly compiled software

Skewed Z axis

As dulouie noted that the x-end-motor and x-end-idler made by achim_boers has lightly skewed position for brass, he made also a new parts, which are linked in Bill of materials, and available on GitHub as well.


Skewed Z axis

Make it quieter

Most noises are made by stepper motors driving X and Y axes. The cheapest way is to replace the A4988 stepsticks with Trinamic TMC2100, even the chinese cheapest ones. When inserting the TMC2100 then the active cooling for electronics is almost a must, otherwise the stepsticks can skip steps due to protection agains overheating.


Electronics active cooling

What’s next?

Even more quieter: the second loudest noises (in my opinion) are made by the 30×30 fan which is responsible for cooling the hotend. I’ve already found the 30×30 fans made by TITAN, and the manufacturer declares noise level on 21dB. Sound promising.

Sensors! As the MK3 few new interesting sensors, I’m planning to put some on the MK2 Clone. Prusa Research are making a lot custom electronics right now, and I want to focus on electronics generally available on the market, to allow everyone to make the MK2 Clone in their homes.


XYZ Calibration (beta)

The build is ready, I am now working on the firmware.

Recently I had an idea how to implement XYZ Calibration, and now its implemented, in beta state. It doesn’t save anything, but it produces a report which can be used to configure the printer. The printer is also checking if the XY are perpendicular and displaying information how big is the difference, and how to reduce it (which rod should be moved backwards/forward).

Its recommended to run the XYZ Calibration from LCD while being connected from the PC by serial port (using eg. Prointerface or Repetier-Host).

Video demonstration:

The idea of moving to top of frame is taken directly from Original MK2.

The calibration can be also started by using gcode G666.


As the build is almost finished (I am only waiting for the longer cables to put screen on front of the printer), I’ve started to modify configuration of Marlin to this printer.

Unfortunately, very helpful option to load and unload filament (gcodes M701 and M702) is not implemented in Marlin, but they implemented M600 (change filament during print) – I’ve done some modifications to Marlin RC8, adding that feature.

I’ve made eventually more modifications (and I am still working on it) – added Babystepping Z to main menu while printing, allowed to use 10mm move also on Z axis and also some modifications to menu order.

The modified Marlin, with configuration is available on github: (branch MK2Clone)

To use it, you shall modify Z probe offset (depending on what height you have mounted the probe), and X,Y,Z MIN and MAX positions.

I am still working on the firmware, to add more features which are helpful while operating the printer.

To print there is also a slicer software needed, I strongly recommend Slic3r Prusa Edition, which can be downloaded from github:

There is start GCode which I am using:

M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M104 S[first_layer_temperature] ; set extruder temp
G29 ;
M109 S[first_layer_temperature] ; wait for extruder temp

And End GCode:

G4 ; wait
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
M104 S0 ; turn off temperature
M140 S0 ; turn off heatbed
M107 ; turn off fan
G1 X0 Y200 F6000; home X axis
M84 ; disable motors

For the profiles, You can go ahead and use Original Prusa print profiles, but I recommend to remove acceleration control from the profile (Speed -> Acceleration Control (advanced) -> set over there everything to 0), and use the default hardcoded acceleration limits set in configuration.



It’s almost the end of build. When the extruder will be ready, there will be only few small tasks to do before the printer will print.

Printed parts needed:

1x Modified Extruder body by HeartFoxx
1x Modified Extruder idler by HeartFoxx
1x Extruder cover
1x Fan nozzle
1x Cable holder
1x notORIGINAL extruder motor cover (optional)

Parts from MK2 looks almost same, it even can work – but the diameter of chinese MK8 is a little bit bigger than the original pulley, and this causes problems – and because of that there is a modified version of body and idler.

Extruder body and fan nozzle should be printed from ABS or PETG to avoid future problems – parts from PLA can be easily melted over there (use PLA at your own risk)

Original manual can be followed straight, just use standard M3 nuts instead of the square ones. The slots for probe are too small for nuts – omit the nuts, it will be working without the nuts.

In step 14 – shaft – don’t use additional washers (it’s not needed with the HeartFoxx modification), and for the shaft go with the printed one.

While mounting probe (LJ8A3-2-Z/BX-5V) be careful, as the chinese probe are longer than PINDA one, and it makes harder to put the cable under it.

The additional nut from step 24 are not required – if you have any troubles to put it on the place, just ignore it.

When you will be managing the cables (from step 31) make sure that you know which cable is from the 30×30 fan – because it has to be connected directly to +12V on power supply, only the print fan will be controlled by software.

I didn’t used the spiral wraps/cable shields for my build, if you don’t have it – it will be still OK.

Extruder parts summary

Printed plastic parts

Metal parts

  • 10x M3 nut
  • 4x M3 washer
  • 4x M3x40 screw
  • 3x M3x30 screw
  • 1x M3x25 screw
  • 3x M3x20 screw
  • 6x M3x18 screw
  • 2x M3x10 screw
  • 1x 625ZZ or 625 2RS bearing
  • 2x Extruder spring
  • 1x MK8 pulley


  • 1x NEMA17 stepper motor
  • 1x 5015 turbine fan
  • 1x 30x30x10 fan
  • 1x LJ8A3-2-Z/BX-5V sensor


  • 1x Chinese E3D Bowden Hotend v6
  • 1x PTFE tube
  • 3x zipties (or more)
  • (optional) 1x nylon filament dia 3mm, 50cm length
  • (optional) 1x spiral wrap

Electronics #1

At this step we can test if the XYZ axis are moving properly. Lets mount all the electronics on the frame. As I have plywood frame with supports, I have some place to mount arduino directly to support, and as well I can make a holes for the power supply.

There will be more photos than usual.

Printed parts needed:

4x arduino-washer

At first, I checked where i have to make holes for power supply by temporarily apply it to draw points for two holes, and use 3mm drill on it.



For this mount I’ve used M3x20 screws, but even M3x15 with 9mm frame should be enough. It fits, and its stable.

On the other side of printer will be arduino with ramps. Lets make the sandwich.


And mount it on the frame… Using M3 screws and Arduino washers from i3 Rework.


The length of screws depends on your frame thickness, for 9mm frame I’ve used M3x18 screws.

Then, some soldiering are needed (depending on types of cables, some motors already have the proper cables, so only for endstops soldering are needed)


For the endstops I’ve used the NO output (as I want to have a signal from endstop when it will be triggered).



Endstop COM -> Ramps GND (-)
Endstop NO -> Ramps S (Signal)

But the connection doesn’t matter at all, as long as it will be between GND and S, otherwise the Configuration for Marlin which I provide will be not working.

After connecting everything as in any build with RAMPS 1.4 we can move to the computer and make the first tests. If You are not familiar with the connections, take a look on THIS – its complete guide for wring the RAMPS 1.4, even with power supply.

For connection between power supply and arduino use 2×2,5mm cables, to decrease probability of fire, especially with wooden frame 🙂

Software part requires:

Arduino IDE
Marlin firmware
USB A to B cable (You should get one while buying arduino, or You can take from the 2d printer, as its commonly used there)

If you don’t want to configure marlin by yourself, You can download the version which I made, but keep in mind – all your mechanical parts MUST BE same as the ones covered on that page. I changed the stepper driver on Z axis to DRV8825 with 1/32 stepping, so You have to do it also (or wait until I will change the DRV8825 to 1/16 mode, as I am planning that – the original has also 1/16 mode on all steppers).

Install the Arduino IDE, and open Marlin.ino file from the downloaded firmware. It will open a lot of tabs inside IDE, but for us currently interesting is only the Configuration.h.

What we have to do right now?

Lets configure the steps per mm – its the amount of signals needed to send to stepper motor to move axis by 1mm. Prusa made a great calculator for that – its available HERE

We have 16 tooth on our GT2 pulleys on X and Y axis


And we have trapezoidal screw with pitch 8mm.


We need to enter that values to Configuration.h – lets hit Ctrl + F for find, and look for “STEPS_PER”. It should find a entry somewhere in the file.

Modify that line with results which You got from the Prusa calculator


And its ready!

Connect the Arduino to PC and click on the right arrow in toolbar, and wait… It will show the status on the bottom of Arduino IDE window, it should finish correctly.

After that, its ready to test. Install Repetier-Host or Prointerface (maybe you had already one of them), and try to move X, Y or Z axis, connect your power supply to network, and lets start testing!

Be careful! For Z axis do only small moves (0,1) and watch carefully if both motors are spinning in same direction. If not, reverse the cables for one of motors. If any axis is working in wrong direction – also reverse the cables (or, modify the Configuration.h and reflash arduino – if You know that way).

Stay tuned for the extruder assembly. The build is getting closer to finish!


After this step printer will be looking almost like finished.

Printed parts needed:

1x Z-axis-top-left
1x Z-axis-top-right
1x Z-axis-bottom-left
1x Z-axis-bottom-right

Follow the instructions, skipping step 4 (Placing Z-covers) and there is also additional steps needed with step 5, as we are using trapezoidal screws with aluminium couplers.

After placing the motors, install couplers and then insert trapezoidal screws into them, and tighten it all with the 4 screws on every coupler. Make sure that motor shaft and screw are not touching inside the couplers. Then go to Step 7, but as nuts use adapters and the chinese nuts.

After step 11 it should look like this:


I’m currently not managing the cables, as it will  be also managed differently than in Original, so Step 13 can be skipped. All the following steps can be easily followed from the Prusa manual.

I’ve changed my mind about the frame, and instead of using 6mm MDF i am using 9mm plywood, which is more stable, and still in good price comparing to aluminum. Because of that some screws which I am using are longer than in standard one.

Z-Axis before instaling GT2-belt

In next step we will make the printer moving, by installing RAMPS and connecting the motors which are already installed on frame.

Z-Axis Summary

Printed plastic parts

  • 1x Z-axis-top-left
  • 1x Z-axis-top-right
  • 1x Z-axis-bottom-left
  • 1x Z-axis-bottom-right

Metal parts

  • 2x linear shaft Φ8 320mm
  • 2x 5×8 aluminium coupler
  • 2x trapezoidal screw Tr8x8 with nut
  • 14x M3x18 screw
  • 8x M3x10 screw
  • 14x M3 nut


  • 2x NEMA17 stepper motor


  • 1x GT2 belt
  • 1x Prusa i3 vanilla frame (9mm plywood)


As the real next step for building Prusa i3 MK2 is X-Axis, lets move to it.

The Original has bigger nuts than the chinese ones, so adapter or modification to original parts are needed. I am planning to modify the original parts, but for now I’ve made just an adapters. The ones which I found on the Thingiverse was with bad plastic tolerance, so I made a better fitted ones.

Printed parts needed for this step:

1x X-carriage
1x X-end-motor
1x X-end-idler
2x chinese_m8_nut_to_original_adapter

This parts can be printed either from PLA or ABS (or any other material you like to print with, except for flexible)

Nut mounting are covered in Z-Axis assembly part, so for a short moment we need to move to that part (its easier to drill in X-end-motor and X-end-idler before putting linear bearings and other parts, I made a mistake and drilled it later, so on the photos there is already X-axis assembled)

Go for Step 7 and 8 from official manual of building Z-Axis and as a nuts use the printed adapters.


Make sure, that You inserted the adapters in same way as on the photo.

After that, some drilling is needed, You need a 3mm drill and eg. cordless drill.

IMAG1489.jpgYou don’t have to insert the chinese nut for drilling 🙂 Drill the holes, make sure its clear enough from the bottom (especially if you printed MK2S parts) and then you can remove the printed adapter.

After that operation lets go back to X-Axis assembly, and just follow the original instructions, there is no differences between clone and original on that part.

X-Axis Summary

Printed plastic parts

  • 1x X-carriage
  • 1x X-end-motor (its better to use MK2 version instead of MK2S)
  • 1x X-end-idler (its better to use MK2 version instead of MK2S)
  • 2x chinese_m8_nut_to_original_adapter

Metal parts

  • 2x linear shaft Φ8 370mm (the longest ones)
  • 7x ball bearing LM8UU
  • 4x M3x18 screw
  • 2x M3x10 screw
  • 2x M2x12 screw
  • 3x M3 nut
  • 1x GT2 idley pulley
  • 1x GT2-16 pulley


  • 1x NEMA17 stepper motor
  • 1x Microswitch


  • 1x GT2 belt
  • 6x zipties
  • modification to X-end-motor and X-end-idler is needed (drilling or STL modification)