Picture of Building a  Prusa i3 3D Printer

Even though we have access to a (sometimes working) 3D printer at our local hackspace my friend Kevin and I decided to build our own from scratch vs buying a kit or finished printer. The reasons being we'd get to learn how they work, we can pick the quality of parts and we like to make stuff.

After looking at various designs we decided on a Prusa i3. We hope to document the build from start to finish, initial calibration and our first prints.

For this Instructable we have obviously used information gathered from all over the Internet and that was a part of the learning process. A great place to start is the RepRap wiki, particularly the section on the Prusa i3

We had a lot of great advice from another friend Rob I met through my day job as an IT support person and also members at our local Hackspace - a big thanks to Ashley in particular.

The Prusa i3 is a part of the RepRap 3D printer family. It is a design from Josef Prusa, and the i3 stands for iteration 3.
It uses either a "single frame" or "boxed frame" and there are many derivatives from the original design. His original single frame uses a water jet cut aluminum frame but for our build we used a derivative - a laser cut plywood frame with braces designed by sgraber. It was cheaper to make and we were able to use the laser cutter at our local hackspace. The rest of the parts were sourced from vendors on AliExpress, eBay and local businesses.

We used the "vanilla" printed parts, but did make some small changes along the way.

To build this printer you should be comfortable with "making stuff", Arduino's, know how to use a multi-meter, solder and also know a little about electronics.

1-40 of 51Next »
Hyperlinks111 days ago


I am now assembling my printer, and I am now installing the end stops. But they all came attached by the wires. Am I supposed to separate each pair completely, or leave some wires attached? I have uploaded some pictures of what the wires look like. I am fairly new to aurduino and the electronics that come with this printer, so please help me. Thank you.

Photo on 8-17-15 at 5.30 PM.jpgPhoto on 8-17-15 at 5.29 PM.jpgPhoto on 8-17-15 at 5.30 PM #2.jpg
SteveRoy (author)  Hyperlinks16 days ago

You will need to separate them out so they fit to where the stops are. Use a multi-meter to see if they are NO or NC switches and change Marlin to suit. Use the M119 command in Pronterface to check the status of the stops as you figure out the wiring and marlin.



How close is this to a hictop prusa i3 from amazon? I just ordered one and im trying to do a little extra research... are these prusa i3's kind of universal in a sense? http://www.amazon.com/gp/product/B00N7I1ZVU?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s01

SteveRoy (author)  Optimus_Grime6 days ago

It is an i3 and very similar to what we built. The main difference being the extruder/hotend. Looks like a MK8 unit which personally I am not fond of - I like having the extruder gears to prime the filament and also to reverse it out when changing it. I would also try get the DXF files for the acrylic pieces in case you have to replace them. The build will be similar. Cheers


lfabrizi3 months ago

This instructable is very well done and clear, thank you...

I am actually having a problem with setting up the endstops (step 12- Setting the endstopsl) and I was wandering if you could help me.

Every time I trigger one of the endstops the mothor stops, but the printer disconnects from the Pronterface and I can't reconnect it untill I upload the firmware again.

Do you have any suggestion for this problem?

thank you! =)

SteveRoy (author)  lfabrizi3 months ago

As KarlB2 suggests you probably have the wiring wrong and are sending the wrong signals back through the RAMPs and Arduino. Have you checked with a multimeter?

Also an M119 command will show the endstop status


lfabrizi SteveRoy3 months ago

Hey Steve, Thank you...

I tried with the M119 comand, It doesn't seem to be a wiring problem, here is what I get:

>>> M119


Reporting endstop status

x_min: open

y_min: open

z_min: open

and after I hit the endstop:

[ERROR] Can't write to printer (disconnected?) (SerialException): Write timeout (x 4)

[ERROR] Disconnecting after 4 failed writes.



[ERROR] Could not connect to COM14 at baudrate 250000:

Serial error: could not open port COM14: [Error 2] Impossible to find the specified file

Could you tell me what you think about it??

SteveRoy (author)  lfabrizi3 months ago


OK, you need to find out if it's the Arduino/RAMPs causing this or the switch.

So the way I would troubleshoot this is (assuming you have a RAMPS board):

1. power everything off and remove the endstop wires from the RAMPS

2. Power the printer/RAMPS up and connect via Pronterface

3. run an M119 command to see the end-stop status

4. if it's open then Marlin is set for NO endstops, if it's triggered then Marlin is set for NC endstops.

5. on the RAMPS short the X MIN S and - pins, use a jumper or flat-blade screwdriver. Don't short the + to anything

6. with the S and - pins shorted run the M119 command again - if it changes from open to triggered or changes from triggered to open then your problem is with the switch wiring - if it crashes the Arduino/RAMPS then your problem is with the Arduino/RAMPS

7. try this with Y and Z MIN

Let me know what happens!


lfabrizi SteveRoy3 months ago

Hello again!

so, I tried what you were suggesting and what happen is kind of odd:

- though the M119 command I found out that the endstops are set on NO,

- I then used the screwdriver as you suggested, I tried more than once and it seems like the endstop is triggered and works properly only when the mothors are going backwards.

It seems like I would need six instead of three endstops. Is this something I could solve in another way than buying a three new endstop?

thank you for your help!


SteveRoy (author)  lfabrizi3 months ago

You only need 3 end stops.

So in Pronterface when you tell an axis to "home" does it go toward the end stop or away from it? If you are building the same as ours a X + movement should go left to right, a Y + movement should move the bed toward the front and a Z + will move Z up. Get that right first then figure out the MIN and MAX of the end stops

KarlB2 lfabrizi3 months ago

I had this, the wiring on the end stop is wrong.If you have the same endstop as above looking at the connector with the endstop switch on the left i found that the two left pins were + and - and the other two were signal pins so you can choose from NC or NO.

lfabrizi KarlB23 months ago

Thank you!!

EimantasT3 months ago

Good day,

I have a strange issue with Prusa i3. I have calibrated it as it supposed to be. Well it is not my first prusa actually. When I send all axes home everything seems right. Bed and nozzel is heating up properly. The problem appears every-time I try to start printing. Strange sound appears and seams all the axes start moving to the different directions from home sensor does anyone had this problem before?

infospy3 months ago

Awesome instructable. Very detailed. I might build one of these.

chabib4 months ago


how much it cost you to build this printer?

SteveRoy (author)  chabib4 months ago

About US $580 or CDN $650 using quality parts. You could do it for less
using knock-off j-head hotend and cheap heated bed, cheap RAMPS etc

ivver5 months ago

Hi there, I have a problem with Z axis, recently I bought geeetech I3 printer , I think that there is no big difference between prusa and geeetech. Anyway, X and Y axis are working great but I can't get Z axis moving. Motors and transmission on Z axis are working ( I tried switching X and Z axes) but it seems like it doesn't get any signals at all. Do you maybe have an idea what could be a problem? Thanks in advice

ivver ivver5 months ago

And my controller is sanguinololu 1.3a, not arduino.

SteveRoy (author)  ivver5 months ago

Have you tried swapping the Z stepper driver with either the X or Y stepper?

Also have you tried adjusting the pot on the stepper? With a multi-meter set on the 2v DC setting you should see between .4 and .7 volts between ground and the pot itself - with the 12V to the RAMPS OFF and it powered via USB. Just be careful not to short the leads out on the stepper.

ivver SteveRoy4 months ago

Yes I did, and I also have found a problem, it was pretty stupid, though.
There was different controller in one step of "how to assemble reprap" pdf, it was mistake made by seller, I just had to remove few jumpers. Anyway, thank you for help. :)

Impetus37 ivver4 months ago

buy arduino.

yasam20025 months ago

Hello, Thank you so much for the tutorial !

However i find that $580 versus $365 is a lot for a kit.

Searching ebay I found a better price for the Prusa I3 kit with 2 rolls of filament and 8GB sd card as a gift wtih free shipping :


SteveRoy (author)  yasam20025 months ago

That is a good price. An E3D Hotend is US $80 by itself. 2Kg of quality filament is US $44.00 (plus shipping). At least US $50 worth of NEMA 17's. You should do an Instructable on the build. Make sure you get the DXF files for the frame in case you need to replace any acrylic parts.



zoomboom6 months ago

Hello, Thanks for a great tutorial!

I'm still debating with building it step by step as you did guys or the kit option.

I'm wondering how much was your parts cost? What you can say about your final project quality, Did you get any conclusions now after using the printer for a while about prints quality, the printer parts? would you change some things like the hot end that you use (Yours is a plastic(Black) can you print abs at 260c?)

I'll much appreciate your pro thoughts


SteveRoy (author)  zoomboom6 months ago

Hi Ariel

Thanks for the nice feedback on the tutorial.

This printer was a shared printer with my friend. What we did was use this printer to print parts for 2 more so we have one each. What I did differently on my new i3 was:

Used the "i3 rework" which is an enhanced version of the original. It uses M10 threaded rod for the frame (vs M8 and M10 on the original). The STLs are here:


We changed the Z stop to:


The X endstop to:


The rework has a great design for the j-head fan and we also added a cooling fan for the printed piece with this:


I still use a genuine J-head extruder and mostly print with PLA. However I have used ABS to 220C. If you want to print higher temps an e3D may be a better choice.

The other part change on my new one was the heat bed. I bought an aluminum bed from "Marginally Clever":


He is a regular at our hackspace so I had originally bought the bed as it was easier than ordering and waiting for one from a US supplier but it turns out I think that the bed is better than the PCB style. It's more rigid and holds the heat better.

I an very happy with the way the printer turned out and both the original and my new and improved have printed for hours with no problems. I have never had a nozzle jam. The cost was around CDN$ 650 which is about US $580

The reprap.org forums have some freat threads on kits and how people have found them and support from the vendors.



Dandeman3216 months ago

What's the reasoning behind not using the right side pins on the end stop connection on the RAMPS board? I have a kit and the end stop connections use them. I'm having trouble getting my printer to react to the Z axis end stop and I can't figure out why it's not working.

SteveRoy (author)  Dandeman3216 months ago

They carry 5v which isn't needed unless (I assume from the schematic) you want to light up an LED on the switch itself. From the RAMP schematic it looks like you need to ground (or un-ground depending on the NO or NC login) the Arduino port. If you short pins 1 and 3 on the RAMPS side of the end-stop connection you will probably damage the RAMPS or Arduino. To check your Z stop send M119 to the RAMPS via pronterface.

I ended up figuring it all out. Had a bad wire from the endstop to the RAMPS.... thanks for the reply though!
sabsoft6 months ago

Hi, this will be very helpful thanks. I'm a bit confused with the multimeter stage. Should the meter be buzzing when the switch has not been pressed or buzzing only when the switch has been pressed? Sorry for the daft question but not up to speed with electronics as yet.

SteveRoy (author)  sabsoft6 months ago

For testing the end stop logic - if you want to use normally open (NO) use the 2 pins that don't buzz when the switch isn't pressed and buzzes when pressed.

For NC use the 2 pins that buzz when the switch isn't pressed and don't buzz when pressed.

RubenM17 months ago

Hi! How many outputs of the power supply did you use? I bougt a DC power with the same Voltaje and current specifications, but it only has 3 outputs for positive voltaje and I do not know if is enought or I need moore positive outputs(Here the image: http://articulo.mercadolibre.com.mx/MLM-472275718-... )


SteveRoy (author)  RubenM17 months ago

The RAMPS only requires 2 12V connections so it will work

My problem is just the operating system. I saw just support for Windows and Linux... If I buy Prusa i3 from brand AURORA... how I can I use it with OSX?

Both Cura, pronterface and arduino IDE are avalible on OSX. So should be the same as on windows and linux.

rajaakahel8 months ago

Please can you help !? PLA printed cylinder (10 cm) is not perfect circular!

im trying to have a perfect cylinder ( radius 5cm, high 5mm ) when i print it, it looks perfect circular, but when i measure it i see its not perfect. (for example X: 101mm, Y: 99mm) some times the fail is about 1mm.
i need it to be perfect circular! what is the problem?
im using Prusa i3, 220 degrees for the extruder and 60 for the glass heated bed.
is it something with the belts? or in the main board? or what?
thank you in advance!

SteveRoy (author)  rajaakahel8 months ago

If you have used the calculator here:

http://prusaprinters.org/calculator/ and you aren't getting the results you want you can try fine tune the steps in your Marlin Configuration.h file.

Move the axis 100mm via pronterface and measure the distance with digital calipers, use the following formula to get a new value for the steps value:

new Marlin steps = (current Marlin steps x 100) / actual distance

So for example if your X value in Marlins Configuration.h for

#define DEFAULT_AXIS_STEPS_PER_UNIT is 80 and you ask pronterface to move 100mm, and you get an actual measurement of 101mm your new X value would be:

(80 x 100) / 101 = 79.2079

Upload the changed Marlin file and retry. Repeat as needed.

AlbertN18 months ago

This looks awesome! I was just wonder though.. How much did all of this cost in total?

SteveRoy (author)  AlbertN18 months ago

About US $580 or CDN $650 using quality parts. You could do it for less using knock-off j-head hotend and cheap heated bed, cheap RAMPS etc

ach125829 months ago

How many hours did it take to build, once you had all of the parts and tools on hand?

SteveRoy (author)  ach125828 months ago

It took us 2-3 months working on it one night a week at our hackspace. But we took our time and made sure the wiring etc was neat as we worked on it. It also took a lot of time to photograph and write the instructable as we progressed through the build. The 2nd and 3rd ones we built took a lot less time - probably less than 1/2 of the original build

1-40 of 51Next »