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.

Remove these adsRemove these ads by Signing Up
1-40 of 47Next »
lfabrizi1 month 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)  lfabrizi1 month 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


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)  lfabrizi1 month 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!


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)  lfabrizi1 month 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 lfabrizi1 month 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 KarlB21 month ago

Thank you!!

EimantasT1 month 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?

infospy1 month ago

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

chabib2 months ago


how much it cost you to build this printer?

SteveRoy (author)  chabib2 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

ivver3 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 ivver3 months ago

And my controller is sanguinololu 1.3a, not arduino.

SteveRoy (author)  ivver3 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 SteveRoy2 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 ivver3 months ago

buy arduino.

yasam20023 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)  yasam20023 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.



zoomboom4 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)  zoomboom4 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 forums have some freat threads on kits and how people have found them and support from the vendors.



Dandeman3214 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)  Dandeman3214 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!
sabsoft5 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)  sabsoft4 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.

RubenM15 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: )


SteveRoy (author)  RubenM15 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.

rajaakahel6 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)  rajaakahel6 months ago

If you have used the calculator here: 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.

AlbertN17 months ago

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

SteveRoy (author)  AlbertN16 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

ach125827 months ago

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

SteveRoy (author)  ach125827 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

RubenM17 months ago

Hi, Im am new in these things, The endstops v.1.2 could be optional?, and I dont understood well the pronterface theme, Is necessary install pronterface in each computer where I connect the 3d printer, or is saved i the arduino?

SteveRoy (author)  RubenM17 months ago


End stops aren't optional. You need them so the printer can go to a "home" position and know the limit of it axis travel. If you don't install end stops the axis motors will only go in 1 direction.

Pronterface (or Repetier-Host) is used to control the printer prior to sending the job to it to print. You could use an LCD controller with SD card option and print from that (I ahve since installed one and we print via that) but it's easier to get the printer setup via Pronterface - so yes you will need it installed on whatever computer you want to connect the printer to.

RubenM1 SteveRoy7 months ago

Thanks for reply my question!

Ammm how many endstops did you use? I read the material list, but it doesn´t appear

SteveRoy (author)  RubenM17 months ago

You need 3, one for each axis.

1-40 of 47Next »