Unboxing a Prusa i3 2: CD content and adjacent topics.

Like I said before, this post will be about trying to make sense and documenting the contents of the CD that came with a Prusa i3 I’ve bought. This post ended up a lot longer than I could’ve anticipated, but for as someone a limited knowledge of 3d printers, documenting the whole exploratory process was very enriching. I hope others will find reading it as edifying as to me writing it was.

If you want to download a copy of the contents it can be done from the manufacturer’s servers: http://www.heacent.com/server.asp (370Mb). Scroll to the bottom of the image and choose the Prusa i3 download.

At first glance the CD looked like a soup of information and multiple software, all mashed together with little or no proper information about how all the included parts fit together. Maybe the product designers were in a hurry and writing further instructions could mean nulling the profit (it is a low-cost product after all) or maybe this seems like a sufficiently informative data structure for someone with previous knowledge of how to assemble a 3D printer. In any case it made my life a lot harder.

Above, all root files and relevant sub-folders. Comments were added later, after preliminary probing and on-line research:

file structure

After that first quick scanning and untangling session, I divided the files in relevant categories, studying each thereafter:

  1. The printer’s exact specifications.
  2. Assembly and wiring instructions.
  3. Installing firmware and establishing computer-PCB connection.
  4. Printing software.
  5. Before the first print.


1. The printer’s exact specifications.

Untitled picture

I have no idea how good or bad any of this stuff is yet, but at first glance some data has caught my eye:

  • A horizontal (X/Y axis) precision of one hundredth of a millimetres seem pretty awesome to me. This is exciting!
  • On the other hand a variation of 3 tenths of a millimetres between layers (Z axis) seem quite anaphrodisiac. I suspect that maybe this value is larger because it has to take into consideration the breadth of the deposited molten plastic. We’ll see after some tests.
  • The vertical print speed makes no sense at all. Shouldn’t that be just the overall print speed? I mean, wider pieces will have slower vertical speeds as each layer takes longer to complete.

2. Assembly and wiring instructions.

There’s a step-by-step assembly manual included in the CD, customized for this specific Prusa i3 derivative design, so it doesn’t seem like there’s anything to worry about in this department. Behold it and rejoice with me: Prusa i3 Assembly Manual.

Complimentary, I also found this very cool and interactive 3D assembly instruction written for Unity3D (plug-in required): http://www.carlos-sanchez.com/Prusa3/

By supplying the diagram below (to which I added the board schematics for comparison) and by clearly labelling of each terminal printed directly on the board, the manufacturer has also made the wiring process pretty much made trivial.

electronics diagramOther than that, the CD contains excessive amounts of information about the PCB (Printed Circuit Board) architecture, such as Gerber and Kikad files, used to describe every signal trace, solder and label in detail, which is great in case you damage your board and wish to try and repair it, but for now there’s not reason not to cast these aside.

3. Installing firmware and establishing computer-PCB connection.

Even though the manufacturer seems to have tossed all required firmware into the CD, no specific instructions were included. Therefore it became necessary to try and piece everything together by also browsing the specific documentation reprap Wiki page for the Melzi board and poking around the developers websites. Here’s the resulting information compiled  These firmware are included in the software folder:

  • Bootloader. I’m still unsure if this step is required. According to the RepRap Wiki, if an ATMEGA micro controller is untouched, it’s necessary to flash/burn a bootloader into it before anything else can be done. If that’s the case, the procedure will require accessing the chip via the ICSP (In-Circuit Serial Programming) interface by turning an Arduino UNO (which luckly I own) into an ISP programmer. This is done by using the Arduino IDE to upload native ISP software (accessible through the IDE menu: File > Examples > ArduinoISP) into the Arduino. The connection between pins must be (Melzi <-> Arduino):
    MISO  <-> pin 12
    SCk   <-> pin 13
    Reset <-> pin 10
    MOSI  <-> pin 11
  • logotextPCB firmware. A firmware is a software that allow us to determine the behaviour and gather data from electronic systems. In some cases – such as in this Arduino-based board customized for 3D printing – the firmware is also programmable. The RepRap Wiki page states that either Marlin or Repetier are both valid options, although the latter is preferable, they argue. The choice is made even clearer once I learned the CD was also shipped with a version of Repetier preconfigured for the Melzi board. Since for now no tweaking is necessary, all that has to be done to compile/upload the firmware is:
    • Open it in the Arduino IDE.
    • Select the preconfigured Melzi board in Tools > Board > Melzi 1284p 16mhz.
    • Open the firmware by finding a file named PRUSAi3.ino from the appropriate folder. All accessory classes and libraries will also be opened automatically.
    • Compile and upload to the PCB and, in theory, everything should work.
  • USB drivers. The board has a FTDI FT232RL chip integrated by the PCB manufacturer to its design that requires you to install specific drivers on your computer. The drivers are provided as a CDM (combined driver model) that enable both D2XX and VCP (virtual COM port) functionality. While the VCP drivers allows the board to be shown as an additional COM port, the D2XX gives direct access to it through a DLL file (through function calls).serveimage
  • Off-line printing. It’s also possible to print directly from a SD micro card with no need of a USB connection to a computer. Save the g-code to be printed in the root directory of the card, renaming the file init.g. When the on-board reset button is pressed, the machine will start to print!

4. Printing software.

The CD also has a folder called printing software that at first caused a lot of confusion: its root folder contained two items: an installer the other as a portable folder, that contained multiple executable files. With a little research I found that both items are actually individual programs (I’ll explain bellow). After running the item presented as an executable, I noticed it created an installation folder that also contained multiple executable files, reproducing the same structure seen in the software presented as a portable folder.

I finally figured it out when, while testing all executables from both folders (portable and installed), I determined that each contained a main executable – the one that is supposed to used and represented the main software – while all others were tools for internal use. A new issue arisen, when I realized both programs were very similar and offered together for no presented reason at all.

Furthermore, both programs were confusingly identified as hosts, but not as in “a computer linked to a network that offer services for users/nodes on that network”. Instead the word here seemed merely to imply that the software centralizes multiple stages between loading a 3D model and sending it to the printer. The image below illustrates the entire printing process and helps to further clarify what the word host tried to convey in the context (here labelled Integrated Slicer & print program):

With this knowledge and a little more research, it was easy to finally find out more and make a choice:

Printrun. Printrun is free and open developed software, hosted on Github.  This is actually an old experimental version from 2013, thus it’s worth saying that some things must be already different in newer versions. Here’s what it looks like with one of my STLs loaded into it:

printrunAlthough the overall formatting of its elements seems lacking, the visual interface (pronterface.exe) it’s very simple and allows all important parameters to be within reach. Besides g-code, it’s also possible to import *.stl and *.obj files by load or compose.
In both methods the 3D model is automatically converted to a G-code path for the extruder, but load places de object in the centre of the printing area, while compose lets you load and reposition multiple objects. However no rotation implemented and the automatic packing algorithm is really useless.

printrun-layersA cool feature allows you to see each layer of the print If you click the printing area visualization (see image on the left)!

Finally, a manual control panel lets you interact with individual functions of the printer that are normally automated: move the extruder head by different increment values for each of the spherical coordinates; change temperatures of heated bed and extruder; force the extrusion of plastic through the nozzle and other potentially useful operations.

Repetier host. Although this one was supplied as an installation file, it is also an outdated version, the 0.95F – while the current is 1.6.0. It’s from the same developers as the Repetier PCB firmware and this integration brings alleged benefits and extra features that I’m yet to discover.

repetier_screenshotRight away it’s possible to observe that the Repetier host looks a lot more polished and well organized than Printrun. Furthermore, even though the feature that allow us to see each layer of the print is absent,  it offer other additional features: it’s able to import an extra file type (3DS); the printing area visualization is in three-dimensional (perspective or orthographic projection), with a top-view option.

If multiple 3D models are imported, they are automatically and effectively organized. Besides you are allowed to move them by selecting/dragging with the second mouse button. The only issue I found with Repetier host lies in its packing algorithm: it uses a a rudimentary bounding-box test to determine if 3d models are overlapping, making any optimization of the available print area quite difficult.

Lastly, this software includes two little accessory tools that are worth mentioning: the belt calculator and the leadscrew calculator (See below). Pretty useful to determine how much linear axis displacement (in millimetres) each step of a certain motor will cause.

While researching these two programs, I have bumped into other promising, similar and free software that I will now list for future reference:

  • MatterControl. Implements it’s own slicer, besides the usual ones (slic3r, Cura, etc).
  • MeshMixer. A seemingly versatile and well polished tool that allows you to edit your model before printing. Requires registration.
  • ReplicatorG. It claims to be easy to use, but it hasn’t been updated since 2012 and the official site isn’t fond of screen shots, ma king it difficult to quickly decide whether or not I should give it a go.
  • RedSnapper. It’s written in C++ and thus allegedly faster than others. Looks a bit like Repetier host but as a beginner, I’ll avoid it as “It has some unique features while others are still missing, and it has bugs” as claims the linked document.

5. Before the first print.

The last information worth mentioning was found in a PDF file that, among other things, teaches how to use and configure Slic3r (a conversion software that translates 3D models into the tool-path information). It seem to have been hastily translated to English from another language and is, at times, difficult to understand. A little research has shown that it’s a modified version of the properly written official version of the manual.

Aside from talking about Slic3r, this manual also gives important information about how to prepare for the first print. Two sections stand out: one is a hardware calibration checklist; the other, an article describing the importance of the first layer:


  1. Frame is stable and correctly aligned.
  2. Belts are taut.
  3. Bed is level in relation to the path of the extruder.
  4. Filament rolls freely from the spool, without causing too much tension on the extruder.
  5. Current for stepper motors is set to the correct level.
  6. Firmware settings are correct including: axis movement speeds and acceleration; temperature control; end-stops; motor directions.
  7. Extruder is calibrated in the firmware with the correct steps per mm of filament.

The Important First Layer (modified by me, to make it more concise. See the original.)

If the first layer is not the best it can be then it can lead to parts detaching, and warping.

Levelled bed. Poor bed-levelling result in inconsistent distances between nozzle and bed. If this distance is too narrow, the nozzle will scrape the bed. Too far and the material will be laid too far from the bed, thus not adhering correctly.

+5°C. If the temperature of the extruder and heated bed are increased by 5°C, the  viscosity of material decreases and the contact surface between material and bed increases.

No cooling. It makes no sense to increase the temperature of the first layer and still have a fan or other cooling mechanism at work. Keeping the fan turned off for the first few layers is generally recommended.

Slower speeds. Moving the extruder at only 30 – 50% of the normal speed reduces the chances of the molten plastic being stretched too much, resulting in reduced adherence.

Calibrated extrusion. If the layer end up being thicker than expected, the nozzle may bump into it during the next pass; if it’s thinner, the lack of material and contact with the base can lead to detached objects or warping.


Illustrating the used expressions. Source: http://manual.slic3r.org/advanced/flow-math

Layer height. The maximum possible layer height equals to the diameter of the nozzle. By creating the thickest first layer possible, The increased material flow and heat used to create a thickest possible first layer will provide more flow, and consequently more heat, making the extrusion adhere to the bed more. It also increases the distance between nozzle and bed, giving more tolerance to levelling. Slic3r sets this automatically in simple mode.

Extrusion width. By increasing the extrusion width in the first layer, more material will touch the bed and, like it has been explained before, this will improve adhesion.
A extrusion width value equivalent to 200% of the layer height is ideal, but only if layer height is set to be the same diameter as the nozzle (see Layer height). Any other value of would cause poor flow and lead to a failed print.

Bed material. To achieve ideal material adhesion, it’s important to pick the right heat bed coating material and prepare its surface appropriately:
PLA is more forgiving and works well on PET, Kapton, or blue painters tape.
ABS usually requires more care and while it will adhere to PET and Kapton, detached objects are more common than with PLA. For this reason additional methods are employed to guarantee a higher success rate:  thinly applying an ABS slurry – made of ABS dissolved in acetone – or hairspray to the bed coating before printing.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: