Mendel User Manual: Host Software

From RepRapWiki
Jump to: navigation, search
There are security restrictions on this page

This page has been flagged as containing duplicate material. An editor has suggested merging this page or section into DriverSoftware. (Discuss)




NOTE: RepRap host is not the latest software, for the most popular software see Printrun:

This page describes the host-computer software that allows you to load parts to be printed and that generates files from them to be sent to a RepRap machine.

The host software works in two steps:

  1. Load parts to be printed, and generate RepRap G-Code instructions from them, saving those G-Codes in a file.
  2. Load up a resulting G-Code file and send it to a RepRap machine to print it.

Both steps are described on this page.

When you run the RepRap Java software it opens these two windows. The one on the left is a console that allows you to set up objects to be printed, to print them, and also to control the RepRap machine interactively. The one on the right is a plan view of the base of the machine onto which you can load STL files of the parts that you want to make, and then position them where you want the machine to make them.

There are a set of videos below showing how to service the machine and how to get good-quality parts.

The software is on Github here. Installation instructions for that are here.

The source files are on Github here. Installation instructions for them are here.


There are two suites of RepRap firmware that are designed to be completely compatible with the RepRap Host software described on this page. They are here:

Five D GCode Firmware

RepRap Java Host Sprinter

Loading things to print, then saving them as G-Codes


The Load STL/CSG Button

Typically you start by clicking on the blue "Load STL/CSG" button. This will put up a file-selector window, which you can use to find and select the STL file that represents the thing that you want to build (CSG will be discussed in a moment).

The thing will be loaded at the origin (bottom left). A pop-up window (shown) will appear for you to select how many copies of the thing to make, and what extruder to use to make them. Select the extruder you want for the surface of the object. (Relating infill and support extruders to surface extruders is described below.)

You can rotate the view of the RepRap machine's base in the right-hand window with the left mouse button. The middle button zooms the view, and the right button slides it sideways or up and down.

Using CSG

In addition, the RepRap host software allows you to bypass the rather flaky and un-robust STL format for generating prints, and use much more robust CSG files from OpenSCAD directly instead. This is handled completely automatically once you have generated the appropriate CSG file.

To do that, design (or download someone else's published design for) a model to be printed in OpenSCAD. Export the model from OpenSCAD as an STL file in the usual way (Design->Export as STL...). Call it, say, my_model.stl. In addition, export the CSG representation of the model (Design->Export as CSG) to a file called my_model.csg in the same folder as the STL file you saved. (In older versions of OpenSCAD you have to select Design->Display-CSG-tree..., then copy and paste all the text in the window that pops up into the file my_model.csg.)

When you then load the STL file into the RepRap host software as described immediately above, the CSG file will also automatically be found and loaded too. The software will then use the STL file just to render its picture of the object on the build tray. All the slicing, outlining, and infilling code that actually prints the model will work directly with the CSG representation and won't use the STL data at all. This is both faster and much more reliable than using STL files to print with.

You don't have to use CSG. The software will work just with STL files alone. But CSG is an extra option.

So far the supported OpenSCAD primitives are cubes, cylinders (including frustums and cones), and spheres. We will soon add extruded polygons, extruded imported DXFs, polyhedra, and imported STL files (in that order, which is also the order of difficulty of doing it...). Note that the final one of those will implicitly (there's a mathematical joke there somewhere) allow any STL file to be converted to CSG.

Putting things where you want


Normally you will not want to build the part right at the origin. If you point at the part with the mouse and left-click, it will change colour, indicating that it has been selected. You can then slide it about the base with the right mouse button to the position you want to build it in. The grid squares on the green base have 20 mm sides. You can rotate the selected object in 90o clicks about the X and Y coordinate axes by <ctrl> X, <ctrl> Y; <ctrl> Z rotates in 45o increments around Z. The last is to allow you to align an object at 45o and set up the infill (see even hatch direction and odd hatch direction) to cross hatch in the X and Y directions. This produces the same result as aligning the object with the coordinate axes, but reduces the energy used by the RepRap machine (most of the time, only one axis is being driven, rather than both). It also runs quieter. If your STL file was in inches you can scale the selected object to millimeters by multiplying by 25.4 with <ctrl> I. To delete the selected object use the <DELETE> key.

To release the selected object, left-mouse-click on any other part of the green base. You will then be able to use the mouse to zoom, rotate and slide everything as one again.

Printing more than one thing at once


You can load several STL files to build at once, either of different objects, or multiple copies of the same object. Just click on the blue "Load STL" button again, then position them in different places. Leave a gap of about 5mm between different objects to be built. Make sure that previously-loaded objects are not selected when you load a new one (loading new objects attached to previous ones is a special feature for printing in multiple materials that is described below).

If you have several STL files loaded in a pattern that you may want to use again, you can save the whole lot by selecting the "Save RFO" button. RFO files are a standard RepRap file format (described here) for saving collections of objects positioned on the machine's build base. Any CSG files that you are using will be saved in the RFO file as well, and will be re-acquired automatically when you re-load it.

By default parts are printed in the order in which you load them. But when you have multiple parts loaded it is sometimes hard to remember what that order is. If you select one of the parts, typing <ctrl> N (next) will show you the next in the printing order. The sequence cycles: when you get to the last one, it moves on to the first. If no part is selected, <ctrl> N selects the first to be built.

If you want to reorder the build sequence, type <ctrl> R (reorder). Then select the parts in turn with the mouse in the order that you want them built. The system will highlight them as you go along so you can remember what you've done. When you select the penultimate part it, then the ultimate part, are automatically added to the new order and the highlighting is reset. You can use <ctrl> N to check your new order.

The picture on the right shows a reasonable ordering. Put the highest parts near the origin, and the lowest furthest away. Generate an order so that there are no long moves between parts. If you do all the low parts together (order numbers 9 through 16) when they are finished the machine will simply move straight past them. Try to start and end up back near the origin.


You can also load one or more RFO files with the "Load RFO" button, select individual parts in them, move them about, or delete them, add extra STL files, and then save the lot as an RFO file again.

Finally, you can change the material that a part is made from by selecting it then typing <ctrl> M (material). A material selector will come up to allow you to specify a different material. (The selector is the same as the one that you used to specify material when the part was loaded, but with the number-of-copies option disabled.)

Printing things made from more than one material


This picture shows two interlocking but separate shapes designed in Art of Illusion. If you position them both so the base (blue) shape is at the origin and the other part is in the correct relative position, and then save both as separate STL files, you can load them into the RepRap host software preserving the correct positions relative to each other, and build them from different (or the same) material. In this case, the dove-tail would cause the materials to interlock.


First load the STL of the shape that is the base or reference object. Choose the material to make it from, then select it (so it changes colour) but leave it at the origin where it was loaded.

Then load the second STL for the second shape and choose its material. It will be positioned in the correct (i.e. designed) position relative to the first, and they will both be locked together in this relative positioning.


If you select the base shape, you can then move the composite object about the build base as one thing to the position where you want to build it.

If you save one or more of these combined objects as an RFO file, they will be re-loaded in the correct orientation and position when you subsequently read that file in.

This facility depends on the CAD system that was used to design the objects recording the X, Y and Z coordinates of the objects that you design actually at the place in the CAD system's coordinate system where you designed them when it writes them as STL files. Beware - not all CAD systems do this.

Infill and support

You will see that there are a number of tabs on the console labelled Extruder_n. The RepRap host software is capable of dealing with multiple physical extruders depositing multiple materials. In addition, one physical material may have several logical extruders associated with it. These logical extruders can have different parameters associated with them, so that, for example, one might be used to extrude material-A finely for the surfaces of a part to be printed, another might be used to extrude material-A coarsely for quick solid infill of the part, and a third might extrude material-A in a deliberately weak pattern to form a support for overhangs that can easily be broken away. Alternatively, you can outline in material-A, infill in material-B and support with material-C.

You can change all the many parameters of each extruder by clicking on "Preferences".

In the preferences for each extruder are fields containing the names of two other extruders: InFillMaterialType(name) and SupportMaterialType(name). These are the extruders to use to build infill pattens and support patterns respectively for the material for the extruder that names them. See the description of preferences for full details. To turn infill or support off for a particular material, change the appropriate field to say "null" (without the quotes).

The standard distribution of the host software is set up to print with polylactic acid (PLA). You will usually select "PLA" as the material to build with. This will build the object loaded in PLA and do support calculations for overhangs.

There is also a material with the name "PLA-no-support". This is identical to "PLA" except that it suppresses the calculation of supports. If you know your object needs no support to print, select this - then the software will run faster as it has fewer calculations to do.


The RepRap Host Software allows you to set different layer heights for different extruders (which may correspond to different materials, or different settings for the same material). This allows you, for example, to outline an object with a very fine layer height (thus reducing the staircase effect on surfaces and producing much smoother vertical faces) whilst infilling with a much coarser height, thus working faster.

To use this start by getting the machine working well with all extruders set to have the same height. Choose a height that is easy to subdivide (such as 0.24 mm or 0.36mm) rather than one that isn't (such as 0.25 mm). 24 and 36 have many more prime factors than 25.

Then, to plot outlines as fine layers, select the default outline materials (PLA and PLA-no-support) from the Preferences Menu, and set their layer heights to the value you want - say 0.08 mm.

That is one-third the height you used to get the machine working (0.24mm), so also set Extruder0_ExtrudeRatio(0..) to 0.3333. This will extrude one third the material for a given distance than it did before.

Finally, you may want to increase the value of Extruder0_SurfaceLayers(0..N). This will ensure that upward and downward facing surfaces get finely infilled to a sufficient depth to give a good result.

You must always set extruder heights to simple integer multiples of each other. Thus if the thickest material is 0.24mm thick, others can be 0.01, 0.02, 0.03, 0.04, 0.06, 0.08, 0.12 and (of course) 0.24mm thick.

Alternatively there is a default microlayering RepRap properties file in the lib folder in the distribution called that will get you started.

Sending the G-Codes to a file

When you are happy with the layout, select the "Send GCodes to file" option, and then select "Print". This will put up another file-selector window to allow you to specify the G-Code file that you want to save the results in.

If you wish, before selecting "Print" you can select "Display paths". This will open a graphics window that will show the paths that the machine will follow to make each Z-slice of the objects being printed.

You can also select "Pause at end of layer". This pauses the generation of output at the end of each layer to allow you to inspect the slice pattern. Continue/Cancel buttons will be displayed as each layer is about to be written to allow you to continue or to cancel the whole process.

If you have debugging turned on (See Preferences) then comments will be written into the GCode file saying what each line does. That will more-or-less double the size of the file. If you turn debugging off you will get almost no comments: a couple of header comments will be written into the file saying when it was computed and how big the object being printed is, and a comment line will be written at the start of each new layer to track that.

When the GCode file has been written, exit the program with the "Exit" button.

To print your GCode file that you just generated on your RepRap machine, see the next section.

The control console tabs

If you are going to control your RepRap machine interactively, or get it to print a pre-computed G-Code file, plug the RepRap machine's USB cable into the computer before starting this host software.

The Print tab


Here is a list of all the buttons and options on the "Print" tab, and what they do.

Load GCode

To activate this, you will have to select "Print computer GCodes" or "Print SD card GCodes" (see below).

If you have created a GCode file (as above, or from elsewhere) this allows you to load it for actual printing on the machine. You will be shown a file selector window to choose your GCode file. When you have specified this, just hit "Print/slice".

If you have selected "Print computer GCodes" the software will look on your computer for the GCode file. If you have selected "Print SD card GCodes" the software will look on the RepRap machine's SD card for the GCode file.


This lets you select STL and OpenSCAD CSG files to load onto the RepRap's base for printing, as described above.

Load RFO and Save RFO

These allow the loading, printing, and saving of several multiple-material objects all in one go. (See above.)


This allows you to save the set of parts you've laid out on the tray as an OpenSCAD model.

It prompts you to specify a directory. All the STL files you have on the tray are copied into that, then the software creates an OpenSCAD program in that directory that moves the STLs to the right place and takes their set union. That is to say, the entire tray is then a single OpenSCAD object, which you can, for example, then write out as a single STL file.


This is RepRap's printed circuit making facility. For more details see this wiki page.

Print computer GCodes

Select this to put the program in its mode where it sends a pre-computed G-Code file to the RepRap machine to print it. When you select this, the STL and RFO buttons will be greyed-out, as they are not active in this mode. This allows you to send a G Code file from your computer to the RepRap machine.

Print SD card GCodes

This is just like Print computer GCodes immediately above, except that it sets the system to look on your RepRap machine's SD card for G Code files.

Send GCodes to file

Select this to put the program in its mode where it takes STLs or RFOs that you have loaded, slices them, and saves the commands to the RepRap machine needed to build them as G-Codes. When you select this, the GCode button will be greyed-out, as it is not active in this mode.

Pause at end of layer

Selecting this check-box will cause the software to pause at the end of each layer it makes from loaded STL or RFO files. At the start of the next layer a small window is displayed to allow you to instruct the software to continue (you can also cancel the build at such points).

This button has no effect when building an object from a GCode file. This is because in general there is no way to tell from the contents of such a file where one layer ends and the next begins. But see the "Pause" button below.

Display paths

This opens a small graphics window in which the pattern of each layer is displayed as it is computed and saved to a G-Code file.


Selecting this will open a tabbed window that will allow you to edit all the many parameters that control the operation of the RepRap machine. These parameters are described here. You can have multiple preferences files, and there is a selector at the top of the preferences window to allow you to flip between them. They are stored in a directory called .reprap in your home directory. Any file in that directory with a name ending in .properties will be treated as a preferences file. The default is


If you have loaded STL files or an RFO file this causes them to be sliced layer by layer and converted to a G Code file, which is saved. If you have loaded a GCode file from the computer's disc or the RepRap machine's SD card, this causes it to be printed on the RepRap machine.


When the RepRap machine is building something, this causes the machine to pause. The pause doesn't happen instantly as the control signals sent to the machine are held in a short buffer, and the pause button can have no effect until the buffer is exhausted.

The "Pause" button becomes a "Resume" button once the machine has paused.


At the moment this does the same as "Pause" above. We are working on getting it to stop the RepRap machine instantly.


This exits the program.

Progress indicators

At the bottom of the tab are the name of the file being printed, and a set of build-progress indicators. These give an estimate of the time the build will take, when it will end, and a layer count. There is also a progress bar.

The XYZ tab


The XYZ tab allows you to move your RepRap machine around directly for testing, experimenting, and servicing.

The three numbers down the left are for you to type coordinates in as a target to go to. Selecting "Go" will then cause the RepRap machine to move to that position.

The arrow keys nudge the axes by the distance specified in the "Nudge size" box at the bottom.

The "Home" buttons cause the corresponding axis to drive to its low-value endstop position and to zero its coordinate. There is also a "Home all" button that homes all three axes at once.

The "Sto" buttons store the current coordinate in the field on the right, and the "Rcl" button recalls that coordinate to become the target for a subsequent click of the "Go" button. This is particularly useful if you are in mid-build and have paused the RepRap machine. You can store the position where the machine paused ("Sto all") then move it about to do things like cleaning the extruder. Finally put it back where it paused ("Rcl all" followed by "Go") then resume the build.

The "Axis speeds" are (I hope) self-explanatory. Note that these only control the axis speeds for the buttons in this tab. When you are saving G-Codes or using them to build an object, the software will use the speeds you set in the preferences file, and ignore the values in these boxes.

If you check the "Plot using extruder" box and subsequently click "Go", the machine will plot the line using the selected extruder rather than just moving.

The heated bed controls are on the right. If you have a heated bed on your RepRap these allow you to set its temperature, to monitor it, and to turn it on and off. The temperature monitoring function only works when you are controlling the machine interactively. When you are printing a G-Code file the temperature is not updated (because the system would have to interleave temperature requests into the stream of G-Codes that it is sending to the machine from the file, which would slow it down).

Note that the target temperature that initially appears in this box is the default one for the bed (defined in the preferences file), and that changing the value in this box does not change the default; also, that default is what will be used for builds (as with speeds above). To change the default, select "Preferences" in the "Print" tab.

The Extruder tabs


The extruder tabs allow you direct control over the RepRap machine's extruders. It is important to note that while different Extruder configurations may refer to different physical extruders, by default the standard extruder configurations refer to different modes of operation or materiel handling for a single extruder, the extruder at address 0. By default Extruder1 provides the configuration for PLA-support and Extruder2 the configuration for PLA-infill. It is important to ensure as you change your Extruder configuration that key values such as ExtrusionSize and ExtrusionHeight are the same for different materiel and extrusion types on the same extruder.

The tabs are divided into three sub-panels:


This displays the current temperature of the extruder at the top. This temperature is updated every five seconds or so at all times when the RepRap machine is not transmitting a G-Code file to the machine to build.

The target temperature allows you to set what temperature you want. Note that the temperature that initially appears in this box is the default one for the extruder (defined in the preferences file) and that changing the value in this box does not change the default; also, that default is what will be used for builds (as with speeds above). To change the default, select "Preferences" in the "Print" tab.

Selecting the "Switch heat on" button will turn the extruder's heater on and you should see the temperature start to rise. The same button toggles the heater off. There is a progress bar for the temperature as it increases, and also a coloured panel that goes from blue to red as the extruder passes from a temperature that you can touch to one that you can't...

Selecting the "Ramp" button will cause the extruder's heater to ramp up to the target temperature at a rate set by the "Ramp rate" box. This is useful for such things as curing fire-cement round a newly-constructed extruder by warming it up very slowly.

The temperature monitoring function only works when you are controlling the machine interactively. When you are printing a G-Code file the temperature is not updated (because the system would have to interleave temperature requests into the stream of G-Codes that it is sending to the machine from the file, which would slow it down).

Checking the "Cooling" box will turn the extruder's cooling fan on.


Selecting the "Extrude" button will turn on the extruder's feed motor (if it has one) for a few seconds at a rate set by the speed box. The rate will be in millimeters of extrudate per minute. Once again, the initial speed is the one in the preferences file, and it is that preferences value that will be used for any actual build, not any number that you put in this box. The box just controls the speed on the "Extrude" button.

Checking the "Reverse" box causes the motor to turn backwards.

The "Close valve" button toggles the extruder's valve open and closed (if it has a valve).


The home buttons are, I think, self-explanatory. The dump point is the notch out of the build base in the machine designed to allow you to extrude material down it to purge the extruder.

Known Bugs

The software won't read some STL files. This is not a RepRap bug (if it were we would fix it), but a bug in the Java STL file reader. Attempts to read parts in either throw a "String index out of range" exception, or give objects that look like this:


Fortunately Alex W at the Kwartzlab Makerspace has a fix. Follow this link.

Video Instructions

Heated beds

Here's a video showing how to build on 4mm window glass. This is the best way we've found to get reliable builds in PLA on a heated bed. It recommends that you clean the glass with nail varnish remover, which is fine. But check the ingredients list on the bottle. Some brands have a small quantity of lanolin or other oil dissolved in - they are useless as they leave a film of oil. Basically you want acetone, maybe a small amount of water, (plus - you'll usually find - a trace of bitrex, which stops people drinking the stuff).

This video shows how to maintain flatness in a RepRap bed that is heated if you build on an aluminium sheet. The blue tape on the tray is Scotch painter's masking tape 2090, which can be obtained at most hardware shops:

Unloading and setting up

Here's a video showing how to unload a print that has been made, and then set things up for a new one (including mildly amusing Adrian-confusion when the USB port lock has not been cleared). This is for a RepRap with an unheated bed:

Tidying raw parts

This video shows how to tidy up parts post-reprapping:

Something this video should mention, but doesn't, is that you need to pay particular attention to cleaning gear teeth if you want the gears to run smoothly.


There are alternative ways to run your RepRap than the one described on this page. Most notably these are the Skeinforge program, which is a tool chain that takes 3D objects and turns them into GCode files for sending to a RepRap, and ReplicatorG, which is a program for taking GCode files and printing the objects they represent on a RepRap machine.

For minimalist transmission of Gcode files to a RepRap using Linux/Unix machines from the command line, there are gcdump, and gcgen to create Gcode commands for simple RepRap control. These are available as C source or pre-compiled binaries and work well on the OLPC.