From RepRapWiki
Jump to: navigation, search


Prof Braino's Prusa Build Log

 Note:  Jump to the bottom to find the SETUP toolchain for Linux Mint 17 MATE : Skeinforge/SFACT Pronterface

Summary: To catch my build notes for my Prusa Build Autumn 2011. Unfortunately, this is a chronological log, and I did not find out necessary information till later in a couple cases. If you get stuck in your build, there may be relevant info further down the page. I will try to get somebody to organize the information better on the next build.

Who the heck is this Prof Braino guy?

If your a n00b like me, some of this fancy computer stuff might be confusing. Here's some stuff I used to get my rig working or at least to the state that it is today.

NOTICE: This is a build in progress. Many parts are out of sequence, due to the distributed nature and in flux development of the reprap project,

High level project is to implement an alternative processor, specifically the Parallax Propeller per this discussion

In order to establish a baseline as to what constitutes the current 3D-Printer (as of 20110701), I opted to build a unit for comparison. I settled on a modified Mendel Prusa This includes a modified Wades extruder, and LM88uu linear bearings. The X-axis ends are different. Some parts are MDF instead of printed. So far, It has taken me 5 months to find all the parts and bring them together.

This is a log of the specifics I encountered. Hopefully, a person armed with the data in this log will be able to get up and running in a shorter time for a lower cost. The brick and mortar locations are in the Chicago Northwest Suburbs.

The total price was estimated to be $300-$400 USD. The actual prices are listed for each item. So far the total is: $638! Don't tell my wife!

The additional costs were due to the pre-built kits for hot end and motherboard.

I'm not do good with electronics (I'm more of a software guy), and saved my self at least a couple weeks with the solidoodle part.

The hot end was another spot of trouble. I did manage to find a very nice scape of PEEK, and couple sources for nichrome wire, but did not happen across Teflon rod yet. Since I bought the kit, there is no urgency to find Teflon rod, but its still on the list for future investigation.


Printed parts from Sacha at Pumping Station One This kit includes all the printed parts. The vertices are replaces by MDF pieces in this kit, that are very precise and are quicker to make. There might be one piece missing from Sacha's kit, the wooden plate for the modified Wades' extruder. Be sure to ask if you go this route.


Rods from McMaster-Carr (they delivered to my door! Same day!)

  • 1272T17 Smooth Rod 8mm 3@ 1 meter
  • 98861A080 M8 1,25 pitch threaded rod 6 @ 1 meter


Fasteners from Jordan Supply (there's more than listed on the web site)


Leveling and Truing

The default instructions talk about using a nut on a thread as a plumb line. This did not work so well for me. Instead, I decided to get the whole thing level and just measure it.

I used a piece of large marble bathroom tile as a poor man's granite block. The marble has a shiny surface, it is easy to see that it is optically flat. Its marble so it won't bend much. This was made level with a spirit level and two Popsicle sticks. The machine was placed on top. At this point, it was easy to get the measurements correct, 234 mm for the triangles and 280 for the laterals. I spot checked the diagonal measurements for the base, they matched so I was able to proceed.

Later I changed from a marble bath tile to a piece of Corian cut out from a kitchen counter top from when the sink was installed. This is about 26x14 and is perfect size for the prusa.

For the Y axis, the top print platform was bolted to the lower print platform. When rotated 90 degrees from normal, this will rest on the Y axis bearing bars. Drawing them to the lower platform will ensure they are parallel. After the linear bearings are added to the lower platform, siding the platform the full range settles the smooth rods into place, and they can be tightened,

The X axis ends are modified, so this affects X and Z axes assembly. The modified ends to not use set screws, the smooth rods are held in place by friction. If the X rods are too long, they cannot be adjusted shorter, they needed to be removed and re-ground.

For the Z axis, the task was to find the midpoint of the bottom side of the triangle, and then add the offset for the Z axis smooth rod. This was close enough for a course approximation, the X axis is used for the final adjustment.

For the X axis, the smooth rods need the linear bearing before they are inserted into the X axis ends. The Z rod holders are loosened, and the X axis placed on the print platform. The Z rods a slid into the Z bearings. The Z motor mount position is adjusted according to the X ends.

It was easier than it sounds.

Hot End

MakerGear - the instructions are not organized clearly. I made some major mistakes despite reading them first several times, and following quite closely. [what exactly is not well organized? makergear|rick]

NOTE to SELF: send notes to rick at makergear

UPDATE: I sent my full set up hot end build notes and comments to makergear rick. He responded with a "thanks" but I did not check to see if the instructions are any better. Be careful, the instructions were close enough to look right, but wrong enough to ruin all the spare connectors. When I finally figure out what I was supposed to do, I had to come up with additional connectors. Fixing the instructions in the first place would eliminate the need for any spares at all. "Operator pack" and "Hot End Pack" and (there was third term) all refer to the assembly that holds the heater coil and extruder tip. It cost $75 This is the thing we want, too bad it has three bad names instead of one logical name.

The Hot End pack requires Wooden Mounting Pieces - Wade for $6.00 USD. Too bad it doesn't say that we need it. (The page says the kit has everything we need, later it says we need to order the wood mounting plate)

The wooden mounting plates did not fit the modified Wades extruder directly. (the screw holes were off by about 2mm). I don't know if there is an alternate wooden plate with the correct dimensions, perhaps Sacha laser cut his own and forgot to include them in the kit of parts he sells?

$86 including shipping

<include the full list of comments?>

Trying to determine what size nozzle I have. I thought it was 0.5mm nozzle 20150103, now I am not so sure. OK, looking at my notes, I did not explicitely say "I have a 0.5 mm Nozzle", but all the notes talk about is 0.5 mm nozzle. So I'm going with that until I take the thing apart. 20150205


I opted for a one piece mainboard

This one is preassembled

It includes a bootloader pre-burned during assembly and testing during production.

This needed a two pin shunt header soldered to the AUTO RST labeled on the skilk screen to enable Autoreset. Shunting the jumper allows the PC to restart the Arduino for programming, etc. Removing the shunt (default) allow the unit to operate stand alone; that is, it will not reboot when the unit is disconnected or reconnected to the PC print.

This module is intended to be swapped out and replaced with the propeller chip implementation at some point.

$116 including shipping

Stepper Motors and Drivers

Pololu 1200 were recommended by several sources. FIVE are needed, two for the Z-axis. Reordering one more motor costs nearly double the price of the motor due to shipping.

The stepper drivers are refered to by the stepper driver IC. The unit we buy is the IC mounted on a carried board. The A4988 has over current protection. FOUR are needed. The one used for the Z-axis can drive the two Z-motors easily. New notes say to wire them in series instead of parallel contraindicating the instructions.

$161 including shipping (would have been $11 less had it been a single order)

Belts and Pulleys

These we a bit of trouble to find. The instructions specify T5 belts and 11 tooth cog for 5mm shaft.

I ended up getting a 9 foot length of T5 belt and have enough left over to replace one axis.

The 11 tooth pulleys are for 1/4 inch and 3/16 inch belt. I had to drill them out to 5mm to fit on the Pololu motor shafts.

McMaster Carr - they delivered to my door AGAIN! Same day!

  • 5710k12 (2)
  • 7959k24 (9 feet)


I still get inconsistencies on my prints.  Finally looking back at my notes, I see my pullies may be wrong.  I have T5 belt.

Need to check if the cogs are correct or worn....

The recommedation was T2 belts and pullies, and to buy machined pulleys instead of printed ones. From this page:

I should check if there's any newer recommendation

Power Supply, Connectors, harversted parts

Power Supply

I found a pre-ATX power supply in the junk box. This type uses a physical power switch instead of control by motherboard logic. Its a HIPRO Hp-200PPGN harvested from a Tiger Direct K-6/2. It was diagnosed as unstable, but claims 8 amps on the 12 volt rail.


The sanguino board has 11 connectors for the motors, end stops, and thermistors.

The four 4 pins stepper motor connectors are the same size as 1.44 floppy drive connectors. I harvested these from dead power supplies and Y-cables. Cots $0

The three 3 pin endstop connectors are the same as size as PC fan connectors (with RPM monitoring). I harvested these from noise fans recovered from dead PCs. The yellow and black wires were swapped compared to the layout on the Sanguino. This was fixed with a toothpick and a magnifying glass.

The four 2 pin thermistor and heater connectors for the extruderr and heated bed are the same as PC fan connectors (without RPM monitoring). I don't have a heated bed at this time, so it was easy to find 2 dead fans.


The firmware selected for the printer affects the software needed for the PC. After selecting and extracting the firmware archive, we discover what prerequisite software is needed on the PC. This is why the printe firmware is listed first, but appears in the middle of the PC software install list.


SPRINTER archive


The PC software needs to be set up to run interface to the Arduino firmware.

I selected the first Recommended firmware from * SPRINTER *

The software needs to be set up on the PC before the firmware will respond.

The software might not need to be installed in this exact order, but do it this way to be safe.

Windows XP workstation:


The Python programming environment is NOT included with Windows XP but fortunately we can download it for free and use it legally. Python is very small and reasonably quick and efficient. Python is the new BASIC, we don't need to use basic anymore. Use Python, its more modern that getting a trendy tattoo.

Anyway, the interface to the Arduino micro controller that run the Prusa is written in Python.

We install a bunch of Python packages to in preparation to running the printer.

[From Printrun]

  • Needs Python 2.7.2 I used

  • needs pyserial - I missed this twice!

  • Needs Python wx I used

  • needs pyreadline - I missed this twice!

Download and extract the SPRINTER archive

Follow the instructions in the SPRINTER README

PC software

I used current newest version 0023

Plug in the Sanguino board, Windows XP will detect the USB device. If the New Hardware Found wizard doesn't find the driver, let it fail and update it using the device manager per these steps:

The machine that already had FTDI USB to serial set up for the parallax propeller worked without additional drivers;

On another machine I had to navigate to the FTDI folder Note the virtual COM port ID for SPRINTER

  • Sanguino configuration files, version 0018 Copy the directories as directed

Launch the ARDUINO application Open SPRINTER.PDE EDIT the files as directed

NOW TO TEST if its talking......

Printer Firmware

The Ardunio code is "firmware" this runs the printer. This receives instrucions (from somewhere else we will cover next) and make the printer move.

The Arduino firmware in this example is SPRINTER.

In the ARDUINO application, with SPRINTER open:

Select Tools-> Board-> Sanguino Select Tools-> Serial Port -> COM3 (or whatever you noted above) Select Tools-> Serial Monitor

After about 10 seconds, the serial monitor should display a "start" message from SPRINTER.pde

If it doesn't, try hitting the reset button on the Sanguino. Also check that the baud setting matches the settings in the config files.

For my, it did not respond correctly unitl I set the serial monitor window2 baud rate to 115200

NOTE in the SPRINTER source code file it can be useful to edit the

void setup()

function to contain a unique message, so you know your change has been loaded. Find the line that says


and change it to something you can recognize like

Serial.println("start Prof Braino is the coolest 20111122-1225")

If you include a date-time stamp as above each time you edit the file, you can always tell when a change has reached the device. If you include a descriptive comments like "end stops calibration" you can tell where you left off, or if the proper version of the firmware is loaded.

NOTE: There is a note someplace that might say not to change this message, I haven't figured out if this affect anything in an adverse way. The objective is to display which mod to the firmware is running, since this can change

In configuration.h update

//#define MOTHERBOARD 3 


#define MOTHERBOARD 62  

You can also change

char uuid[] = "00000000-0000-0000-0000-000000000000";

to sopmething you can recognize like

char uuid[] = "this is my board 00-0000-000000012345";

There are more changes to the spirnter.pde firmware listed below, they are being logged in the order I encountered them.

Ubuntu 11.04 Laptop:

<after I clear a space in the shop>

Both Window PC and Linux PC - Additional Python Scripts

IN ADDITION To SPRINTER, we need another set of Python scripts

Printer Application Software

The PC printer application software is the program that runs on the PC. This talks to the printer firmware, and allows the user (you) sitting at the PC to control the printer. Actually, you give commands to the printer appliction, the printer application gives command to the firmware, and the firmware gives commands to the electronics.


Printer Application

Download and extract Printrun

I moved the whole printrun subdirectory to my Python directory so it would be easy to find from within Python is the python script that runs the user window for controlling the printer during setup and test.

This is where all you work happens during calibration and tweaking.

Use this to determine if the ranges and limits are set correctly.

After PRINTRUN is extracted from the archive, and the entire directory is moved to the python directory, I made a shortcut to prontrerface and put it in the task bar shortcuts area, next to the shortcut for sprinter.pde. Much easier to find.

testing the system

At this point, there should be a PC properly equipped with the correct set of software, and the software should be configured. The Sanguino board should have its power light on when plugged into the PC USB port, and the should be talking to the serial monitor program by displaying a START message (that the user has modified to display an individualized message).

Now to test using the interactive prython script from the kliment-Printrun package

Start Python

Start -> programs -> python 2.7 -> IDLE (the Python GUI

For some reason, at thispoint I get an error that an icon file was not found. This does not appear to affect anything, so if you see it, ignore it by closing the error message window.

From the Python Shell File -> Open (navigate to kliment-Printrun that you previously extracted) ->

From the window that opens: Run -> Run Module (F5)

If at this point you get a message "no module named serial" you missed the pyserial install from above. Recheck.

The Printer Interface window is displayed. If you get this far, you should be doing ok. If not, go through the steps again, it took me several tries.

printer Interface

Select your com port, usually com 3 or higher. If only physical com ports are displayed, check if the Sanguino go unplugged. The virtual com port goes away when the cable is disconnected.

Select your baud rate. 115200 works for mine.

Select the monitor printer checkbox.

Select connect.

The resonse window should display the Connecting.... message. After about 10 seconds, the Connected message should be displayed. The If the Sanguino is not connected, the message will sit there forever. Once connected, the window should begin displaying

T:0 B:0

periodically to indicate that the Sanguino is still ticking. This actually is reporting the thermistor readings for the extruder and heated bed. If the thermistors are not connected the reading is 0. If this becomes annoying, un-check the Monitor Printer box.

Calibrating and Tweaking

Steps per mm

The McMaster-Carr cogs and belts are XL, the step is 5.08. Using the formula from

[ 200 (steps) * 16 (microstep) ] / [ 5.08 (belt pitch) * 11 (pulley teeth) = 57.2655

This number worked.

So I changed

float axis_steps_per_unit[] = {80, 80, 3200/1.25,700}; 


float axis_steps_per_unit[] = {57.2655, 57.2655, 3200/1.25,700};

Maximum Travel

I found issues: The salvaged limit switches are a bit too big, some travel is consumed. The screws that hold the top print bed are high enough that they might interfere with the extruder end, so print area was trimmed to fit inside these.

  • x = 200 => 190
  • y = 200 => 180
  • z = 100 => 95

Stepper current

Sacha told that he melted the solder off his stepper driver boards, from testing with the power turned up all the way. I turned them all the way down clockwise and them backed up a quarter turn. After some testing, I noticed them to be warm, so I adjusted them while in motion. The sound changes, you can hear them rumble if the power is too low, and they get loud if the power gets high enough. I tuned mine so that are quietest and still move. I may have to increase the power when I start extruding, but that is another day.

For the time being, the steppers and drivers are below 37 c during range of motion testing.

Extrusion test

I had heard that a DMM with a K-type temperature probe was required for setting up the heater coil, so I got one.

Turns out the MakerGear hot end is one of the options right in the software, and works as described. The thermistor reading and the probe reading were within a degree of each other. When I turned the heat on, the temperatures would vary by a couple degrees either way, but this can be due to the micro controller and thermal properties of the extruder head.

When the temperature reach 185 c, it was left to stabilize for a couple minutes. The temperature stayed between 177 c and 185 c. The 40 mm fan mounted on the X axis slide was sufficient to keep the rig from melting. The groove tube was about 50 c just above the heater coil and 30 c by the wooden plate, but I did not check this thoroughly.

I had two loop of PLA plastic for testing. To my delight, the machine was able to squirt out liquid plastic, which quickly hardened into a mass looking like tangled spaghetti.

Brainella and the Brainettes were marginally impressed.

Print Calibration 1

WHOA! Might be a little early for this, there's still some software we need to set up. But here are some cool things I found. However, there are objects specifically used for calibration the printer included in the software to be installed.....

Print calibration can be done by printing a 10 mm cube. A file for this can be found at Thingverse.

Hollow calibration cube

Calibration set

Skeinforge Bridge calibration cube

Several things that can be useful for calibration:

40 mm cube

support test object

weighted storage cube

companion cube

More on PC Software

In addition to the python scripts for manual/interactive control of the printer, additional software is needed to print from model files.

BEFORE ANY STL files can be printed, must determine method to get from STL to G-code....

Looking from the PC to the printer during set-up:

  • ARDUINO.exe is the IDE to the micro controller. This PC application is used to load a software program (firmwae) onto the Aurdino/Sanguino electronics hardware.
  • SANGUIINO is the set of hardware definitions that tell ARDUINO.exe about the specific hardware being used. It is slightly different from a stock arduino board, but if we have SANGUINO definitions loaded we don't have to worry much, all the differences are accounted for when we select "Sanguino".
  • SPRINTER is the software program (firmware) we are going to use on the printer. SPRINTER is a G-Code interpreter. SPRINTER needs to be configured for you specific printer, including X, Y, Z travel range, stepper motor degrees per step, belt and pulley size, and baud rate.

- Configure SPRINTER for your rig

- Load SPRINTER into your ATMEGAxxx micro controller ROM. on power-up, the printer is ready to receive control commands.

Looking from the printer to the PC:

  • SPRINTER is the software (firmware) that runs on the (ATMEGA644p, etc) micro controller that controls the printer actions. SPRINTER is a G-Code interpreter. G-Code is a series commands telling the printer to move or perform other actions. Feed the SPRINTER program G-code commands, and it will dance.
  • PRINTRUN is package of scripts written in the Python language that send G-code commands from the PC to the printer micro controller. One of the python scripts isn the printrun package is
  • is a python script in the printrun package. is a PC GUI application that allows the user to send G-code commands to the printer interactively.

Looking from STL files for various objects to the G-Codes neede to print the object:

Objects are commonly represented in STL format. STL files describe only the surface geometry of a three dimensional object

STL files must be translated into G-Code in order for a G-code interpreter to preform the printing operation.

<< Currently determining an appropriate STL to G-code translation software >>

20111202 - OK, I got SFACT to talk to PRONTERFACE, and it went through the motions of printing.

Here's my notes as I set it up on the target PC (to free up my gaming PC for its intended purpose, games).

PC tool chain options


So, I'm trying to figure out how to get from STL files to G-code. There are too many options, the "old standard" seems to be skeingforge + ReplicatiorG, the new easy way might be OpenSCAD + KISSLicer ? ... looking...

This page has a good explanation?

The above page is named Alternative Software but has the title CAM ToolChains.

What software to load on the PC?

Currently the goal is to get a calibration object from thiniverse in STL format, and print it as a calibration test.

TRY - KISSLicer first, then look at others - contacted lonesock

NOTES about Python scripts

Python is an interpreter/compiler for the PC that runs programs written in the Python language.

When Python source code is compiled, we usually call it a program.

When Python code is executed by the interpreter, as from the command line, we usually call it a script.

In any case, the result is the same, the Python source code executes and does what the program has coded.

Python is getting more popular on the PC, as it is easy to to do thing we typically want to do on a PC, like writing user interface, and script processing.

ReplicatorG is another Python package. This series of scripts converts the head motions (given from skeinforge) into Gcode. GCode is the descrete series of command that actually move the print head. It also provides a user interface to the process. ReplicatorG Includes Skeinforge.

Skeinforge is another package of Python scripts. Skeinforge converts the STL model into Z layer slices for printing. I don't know where the term "skein" came from for use as "slicer" it does not appear to be used this way in English. UPDATE - I figured this out after a couple more days. "Skein" is a bundle of yarn (or hair or threads), and each layer or slice is composed of a bunch of threads of extruded filament. A "skein" would usually mean a single length of yarn, while a layer would typically have more than one thread of filament, so there is some license taken with this term. No biggie, just another thing to learn while catching up to the guys that created this.

Anyway, the slicing process is a little complex, as you might image, it has to take to take the triangles in space that efine the surfaces and comnvet then into flat layers with a defined thinkness and width. I guess its not that complex, but it is tedious. The output of Skeinforge is motions the print head should move to extrude the model. Initially Skeinforge needed an optimization package call psyco, this may or may not be needed at this point.. We don't directly install skeinforge as it is included in ReplicatorG. If you try to install in the order the tools are discussed, and end up trying to install skeinforge first, you might notice problems. in the PRINTRUN package is in Python. PRINTRUN package is a a series of scripts that forma usrer interface to the printer software running on the ATMEGA or similar micro controller.

SFACT is another python package of scripts. It does the same thing as skeinforge, but represents the calculations in a different way, making it easier on the person running the printer. (Skeinforge seems to have been written from the programmer point of view, and while excellent, presented difficulties to people that were not the original programmer, which is a typical occurrence). SFACT is seems to rely on an installation of skeinforge (ie via ReplicatorG) installed before it works. There are steps below to achieve this.

IN THE BEGINNING, it seems that folks use ReplicatorG + Skeinforge were the popular way to go.

AS OF THIS WRITING, Pronterface + SFACT appears to be the new popular way to go.

HOWEVER, much of the documentation is written from the perspective of "upgrading" from ReplicatorG+Skeinforge to Pronterface+SFACT. While this applies to most folks that are already printing, it does NOT apply to folk just starting out. This is alos a common occurrence. Thus it appear difficult to start, since the docs all assume things that are not present. In fact, setting up the software is really simple, it just is not properly documented. The purpose of this log is to capture the current process fro setting up the tool chain, and maybe to demonstrate the merit of user-oriented documentation (versus programmer-oriented documentation, which can be little more than gibberish to non-programmers).

STL to G-code Toolchain

This section covers the (presently) involved set up of the STL to GCode tool chain.

The final target set-up is PRONTERFACE+SFACT.

An intermdeiate set-up is preformed, as SFACT rerquires a prior installation of skeinforge, and skeinforge is installed with ReplicatorG.

So here's what's in store:

  • Install ReplicatorG to get skeinforge
  • partially set up ReplicatorG to get SOME communication and definitions established.
  • partially run skeinforge to get some communications and definitions established.
  • Install SFACT to get the NEW IMPROVED changes to skeinforge
  • Use PRONTERFACE as the final target interface

ReplicatorG (intermediate) setup

I selected Machine-> "klimentkip (115200 baud)" since this others did not look like my machine I selected com12, that was the only virtual port

"Connect" started communication with machine! Hahahaha!

GCode -> EDIT BASE PROFILES brought up a window with several selections that could not possible fit BUT... Selecting the one that says PLA then selecting DUPLICATE allowed me to create a new profile, and modify it. THIS is the key!!! Ha HA!! And they said I was mad!

Now I can connect to the printer using the "connect" button at the top.

"Control" now works, Homing can acitvate the printer.

Move the print head to the center of the XY bed, and make this position ZERO

The extruder still does not operate, this is ok; the goal is to use SFACT in the next step.

Hit GENERATE GCODE and it processes.

Now, in the control panel, the extruder has a non-zero motor speed, and can run forwarrd or backward.

But, the GCode does not enable anything to initiate a print? The BUILD button means START PRINTING.

Sort of, the extruder still does not move, the Z axis does not move.

SFACT (skeinforge intermediate configuration) setup

Download SFACT. says to use which says to use so I downloaded that.

Extracting the arhive gives me the README.txt which says:

Extra the archive (anywhere) (which I already did, because I'm reading this)

Go into folder skeinforge_application. and Click

Now all the magic happens!!!

A window opens fo skeinforge, but says SFACT in there someplace, so I hit save, and the magic window says something got saved. Looking at PRofile -> extrusion it says PLA is checked, so I am happy again.

I have no idea about dimensions, as I have never printed anything yet, so I close the window.


NOW I look at the warning about PRONTERFACE again....

 (CAUTION: If you want to use SFACT from within Pronterface, you need to copy the files into a folder called skeinforge within the folder of Pronterface.  
Then you will need to manually copy or move the sfact_settings folder into that directory as otherwise SFACT wont see the default profiles shipped with it.) 

Under the Python27 directory, I have moved the PRINTRUN directory.

Under the ../Python27/PRINTRUN/ directory, I have created a directory named /skeinforge/

Under the ../Python27/PRINTRUN/skeinforge/ directory, COPY EVERYTHING FROM THE SFACT ARCHIVE HERE

That is, everything in the archive in directory "ahmetcemturan-SFACT-1bc51b0", copy six directories and six files to the manually created /skeinforge/ directory under /PRINTRUN/ in the /Python27/ directory

Now start up PRONTERFACE as above, and it works.

Printing an STL file

Now, opening an STL file causes PRONTERFACE to run skeinforge with the SFACT settings


These are things I started but did not end up in the final tool chain



KISSlicer runs on the STL calibration models I tried, even on the ancient Duron 750Mhz windows box.

Per the instructions, three configuration files were generated the first time is was run.

Per the instructions, the output files are named with the original file name plus the string "_gcode.bfb" appended.

What do we do with the BFB files? Do we just chop off the "_gcode.bfb" and re[place it with ".gcode"?

Where is the print origin, do we start from "home" position or from the center of the build platform?

Contacted lonesock, he has a beta for a GUI he wants tested



NOTE: this seems like an early tool, or specific to a particular hardware? SKIPPING this for now...

REPRAP - this PC software application option is unfortunately named identically as the class of thing we are talking about. This might be just me, but shouldn't this be better named "JAVA PC software Application for controlling the REPRAP machine"?

Are Driver software and REPRAP both referring to the java option for STL to G-code?

Folks report the java option is buggy? java 6 has issues, use java 5 instead? Using sun java, the other java has issues?

SFACT - friendly skeinforge

SKIP THIS SECTION it covered above. This is in case I need the old notes later. Delete this section when above notes are complete.

SFACT is described as a user friendly version of skeinforge. It uses different setting in a different directory, from skeiforge

>>> Now that I have ReplicatorG installed first, this might work out better? <<<<

The fun first thing is in the README.txt file:

 (CAUTION: If you want to use SFACT from within Pronterface, you need to copy the files into a folder called skeinforge within the folder of Pronterface.  
Then you will need to manually copy or move the sfact_settings folder into that directory as otherwise SFACT wont see the default profiles shipped with it.) 

The means under the PRONTERFACE directory, we should create a directory and name it "skeinforge" and copy ALL of SFACT into this folder.

Then we have to do something with the "sfact_settings" directory. Move this into the newly created "skeinforge" directory? Didn't we just do this with the copy operation? Maybe it means the "sfact_settings" directory needs to go into the PRONTERFACE directory? In any case, something must be copied, and something else must be moved or copied.


At this point, I've go so many things intstalled, I don't know what is working and what helps versus what is noise. Time to uninstall and do a system restore and proceed from a known point.


20150103 - to install on linux Mint is very easy


Earlier, calibration steps were performed for the truing of the chassis, for the belts and motors, for the electronics settings, and for the motion of the head.

Now, with those complete, and all system areas operational, we can perfom print calibration by tweaking the setting for controlling extruder temp, feed rates, requgested layer thinkness and extrusion width, etc.

<20111203 in progress....>

Buying filament

I was advised to start with PLA. It is "easier to print" and does not require a heated bed. Following this advise, I got 5 lbs of red on a spool.

I wanted the natural, but it was sold out

Red is said to be "gloopier" I guess the dye affects the plastic properties. After I print 5 pounds of red I will decide if its time to get natural (which seems to be dye-able using magic markers or move up to a heat build platform (HBP) and ABS.

UPDATE 20111231 - I've printed the 5 lb of red and gotten 5 lbs of natural $56. Turns out red is a little different than natural, but opposite what I imagined from the descriptions. The natural flows like honey, and gets very clear when liquid. Also, individual filaments are clear, the boundaries of the individual filaments are what diffuse the light. I wonder if the parts can be microwaved to make them more clear?

initial prints

The 20mm box looked great.

The 20mm hallow box was great except the top sags.

The simplified bridge looks passable

The over hang test looks like crap, there are lots of stray loops that did not laminate to the neighboring layers

The pirate ship looks recognizable on the side nearest the 40mm fan, but the side away from the fan looks like it went through a battle with another mini pirate ship.

I know there is a "dimension" tab with calibration in SFACT, but first I will check the mechanicals on the the unit. I hear the screws tend to loosen up(?)

After adjusting the X-axis belt (Has instructions)

  • 20mm box
  • 20mm hollow box
  • bridge overhang test 40mm Cube Test Object Minimal bridge calibration block

checking the Belts

I see the X axis belt deflects when the X axis motor turns, in a way that the Y-axis belt does not. I remember taking special care to adjust the Y-axis belt during assembly. I did not torque down the X-belt for fear of breaking something (like the X-motor mount in particular). I suspect that this is a contributing factor to my issues on the sloppy looking loops during print. < to be continued > <continued> eventually I figured out that the belt must be much tighter. I pulled it tighter another tooth and thing look better.

The instructions for SFACT say its mostly good to go, you MIGHT want to calibrate using the check box in the "dimension" tab. This is only true AFTER your done everything else, which is not mentioned in the FAQ.

The "everything else" is a bit involved:

Calibrating E_steps_per_mm

The sprinter firmwaer has a couple examples of values for step per mm in the configuration.h file. The does not apear to be an variable names e_steps_per_mm in the sprinterfirmwaer code.

//// Calibration variables
// X, Y, Z, E steps per unit - Metric Prusa Mendel with Wade extruder:
// float axis_steps_per_unit[] = {80, 80, 3200/1.25,700}; 

I marked 100 mm of the filament from the top of the extruder. Set the EXTRUDE value in pronterface to 100, and hit extrude. I did this several times and found on averrage 75 mm of filament was processed. Changing 700 to 500 and the same steps averraged 65 mm extruded. Changing to 2000 gives....


Calibrating using CARVE

The instructions say to start by setting the values for Extrusion Thickness and Extrusion width to something sane. This is helpful, if only we know what defines sane in this context.

extrusion thickness = layer thickness (Z) extrusion width = the width of the extrusion as it splushes out the sides of the nozzle against the previous layers.

Later it says extrusion thickness should be slightly less than nozzle diameter, and Extrusion Width should be slightly greater than nozzle diameter. With a nozzle diameter of 0.5 mm the default extrusion thickness of 0.4 mm is 20% less, and the default extrusion width of 0.6 mm is 20% more.

extrusion thickness = layer thickness (Z) <= 0.5 mm (nozzle diameter) extrusion width = the width of the extrusion as it splushes out the sides of the nozzle against the previous layers. >= 0.5mm nozzle diameter

I tired the overhang test from costermans calibration set.

The big one was a challenge. I had fair results with extrusion thickness 0.38 and extrusion width of 0.52, but the big one kept dropping loops. at first it appeared that the hob bolt (actually a Dremeled threaded rod) resulted in a working diameter the needed adjustment of the e_steps_per_mm. Now it appears the hobs were not cut deep enough, and clog too easily, again resulting in inconsistent filament feed. Back to the hobbed bolt again! Previously, I cut only as deep as the threads. Next try will be much deeps cuts.


20150111 - these are the default from Skeinforge

extrusion/layer thickness (Z) 0.4 <= 0.5 mm (nozzle diameter) extrusion width = 0.6 >= 0.5mm nozzle diameter

        - these are the default from Slic3r

extrusion/layer thickness (Z) 0.3 mm [layer height] <= 0.5 mm (nozzle diameter) extrusion width is calculated internally?

Calibrating using Dimension in SFACT

The instructions say to click the "calibrating" check box, and to uncheck it when we're done. I found the FAQ is largely a repeat of the regular instructions, BUT hidden in the FAQ is includes a helpful hint:

Do not print any G-code that is output with the "Are You Calibrating" checkbox on.  
That is only to give you the packing density/e-steps corrector value.  
Enter the value into the box and then skein again and print.

This means that we UNCHECK the "are you calibrating?" check box every time we do a test print.

First time through, it got worse. The second time through, after I found the FAQ, I settled on entering values for my RED PLA as diameter 2.75 mm and a resulting Filament packing density of 0.81

In another part of the instructions, it points out that if the FILAMENT FEED is inconsistent, the calibration will not correct it. It turns out that my hobbed bolt gets clogged after a bit, and starts to slip.

I don't know if this is due to

  • too much pressure on the spring feeding the hobbed bolt
  • too much tension on the filament line (don't think so, it pulls pretty easily)
  • the curve of the filamet line is binding in the xtruder head
  • 8mm hobbed bolt is too small diameter
  • Hobbed bolt is hobbed incorrectly
  • filament is inconsistent and gets fat in places, clogging the feed
  • filament is inconsistent chemically, and parts are softer of melt at differrent temperature
  • PLA is just soft and needs to be clear from the bolt every 35 minutes

>>>> Did the 50 mm extrusion test. Turns out the hobbed bolt has at least one spot where the feed pauses. Time to re examine the hobbing process...... <<<<

In the explanation for "bridge" and "bridge layers" it states the feed/flowrate is set under SPEED. It also states

 adjust the spacing of these 100% fill lines and also the nozzle diameter setting is needed here to be able to calculate a "natural flow" for the nozzle.  

I wonder what that means? "Bridge width multipler ratio" and "overlap remover" do not appear related to "fill lines".  :(

This is another puzzler:

The bridge settings will only kick in if Infill in direction of bridges is checked.  
This setting will cause for some fully filled layers if you are printing shapes with all-around overhangs  (especially organic shapes or statue like things).  
They might appear random to you but this is the reason for that.

This setting does not appear in INSET, FILL, SPEED or DIMENSION. Nor can I find it in the other selections. It must be infered or calculated from other settings? There are settings for Infill in Leadin and Skin, bu not "Infill in direction of bridges".. Maybe there's no way to turn this on?

The FAQ and the instructions explain "What is CLIP. What does it do? CLIP adjusts the gap between the start and the end of the perimeter (outermost) extrusion."

Wouldn't "perimeter gap" be a sensible name for this?

Calibration Summary

It appears all the issues I encountered were due to the mechanical pressure of the filament idler bearing springs.

With the exception of those parameters particular to my printer, all the default values in SFACT have proven to be optimal.

The changes I ended up with

  1. SFACT -> Craft -> Carve -> Extrusion Width (mm): 0.40 [default was 0.60]
  2. SFACT -> Dimension -> filament Diameter: 2.8 [default, although I'm varying this up to 3.1]
  3. Pronterface ->Settings -> Options -> temperature PLA -> 180 [default is 183]

I found that the extrusion width should be lower to to help on the overhang calibration print. This brings the threads closer together and reduces hanging loops.

The items that are peculiar to my machine are:

  • frame dimensions (and "trueness")
  • cogs and pulleys
  • end stop configuration
  • hotend
  • filament feed hobbed bolt
  • filament


The filament can vary by type (PLA, ABS etc have different melting points and other properties).

More importantly, filament of a given type can vary batch to batch, and can be affected by the dye with which it is colored.

I used Ulitmaker PLA 5 pound spool RED

While there were reports that the red might behave differently, it does not appear to cause any significant deviation from the default SFACT settings.

filament feed hobbed bolt

The hobbed bolt turned out to be the single biggest issue affecting print quality. Inconsistent filament feed was the entire problem, NOT adjusting any of the defaults in SFACT. Ultimately, uncertainty about the hobbed bolt was the issue, not the hobbed blot(s). The ultimate root cause of the inconsistent feed rate resulting poor print quality was insufficient idler bearing pressure on the filament. (!)

Initially I had inconsistent feed rate. This was demonstrates by the testing to verify the e_steps_per_mm. It appears e_steps_per_mm does not appear in the code, but is controlled in sprinter code file configuration.h line

float axis_steps_per_unit[] = {57.2655, 57.2655, 3200/1.25,700}; 

This setting is correct for my machine, requesting 50 mm causes 50 mm to be feed into the extruder.

The issue was the hobbed bolt slipping. I use a hand-hobbed threaded rod using a Dremel tool. Initially I thought the hobs were getting clogged, as the teeth were not even as deeps as the threads. Re-Dremelling the hobs deeper that the threads helped a bit, but still became clogged due to flakes of filament shaving off. Later I determined the idles bearing was not tight enough. I tightened the idler bearing so the pen springs are nearly fully compressed, it now feeds fairly consistently. The deep hobs or the shallow hobs my make no difference. I will continue to use the deep hob bolt until I have reason to switch, next I might try the standard depth Dremel threaded rod again.

hot end

My Makergear hotend may be different due to my beginner fabrication skill. The wrap of the nichrome wire, the amount and placement of the furnace cement, and the placement of the insulation may have an affect.

end stop configuration

My endstops are salvaged mechanical micro switches, and limit travel by about 1.5 cm. I found a bag of new Omron micro switches, I may try these.

The limit switches only affect maximum print dimension.

cogs and pulleys

I could not find the specified T5 belt and cogs for the X and Y axes, so ended up using XL ....

The calculation uses 5.08 instead of 5, but works out correctly. Placing a ruler on the bed and measuring the travel shows that the result is accurate and repeatable. This does not affect print quality.

frame dimensions and "trueness"

I had heard that "frame skew" was a major problem on other folks builds. I ensured the machine was level by building on a flat slab. I ensured the machine is square and true by verifying the measurements several times during the build. To ensure the X Axis is parallel to the frame, the distance from the top cross member to the X-axis smooth rod is measured and the Z axis threaded rods are adjusted. To ensure the bed is parallel to the X axis, the print bed height is adjusted by measuring the distance from the X rod to the bed screw at each corner, ensuring all are the same. When this measurement is verified at the center of the printbed, the bed adjustment is complete. The print bed screws are retained by nylon lock nuts (nylok).

Instead of printing directly on the MDF surface of the print bed, the bed is covered with a sheet of thin brass. The brass is covered with blue tape, and held in place with a single heavy duty paper clip (the triangle type). This allows the entire print and bed to be removed from the unit at the end of each print, to allow the part to be easily pryed from the bed with out damaging the machine.

Calibration Test

The calibration test uses the model parameter-width.STL Note that a previous version exists for this file (the name contained -wt.stl instead of -width.STL), it only worked with skeinforge and NOT with Slic3r.

This object contain two parts, a box and a seat for the box. it the box fits in the seat nicely, then the printer is calibrated properly.

Using Skeinforge, my 3.0mm filament measured as 2.9mm , but printed too fat, the box would not fit in the seat. I reduced the filament size to 2.9 mm, the fit got better but was still too snug. I reduced the filament flow further by setting the E-steps corrector to 1.1. This seems backwards to me (I think the number should get smaller to make the flow smaller), but its what worked.

Using Slic3r was different. The model that worked fine in skeinforge caused Slic3r to report 158 errors. The item printed consisted of one box and an upside-down thing with wedges. Very odd. I fould the newer version parameter-width.STL.

The 3.0 mm filament is at the small end of the rool, and again came our too fat, using the previous 2.9mm and 1.0 extruder multiplier. And it occurse to me that "extruder multiplier" might not mean the same thing as "E-steps corrector", so I am going to do a new series to prints to test different settings.


20111203 this in next on the TODO list after print calibration is complete


<< This was recommended >>

UPDATE 20111223 - OpenSCAD works well once you get used to it. The object are described through a list much like program calls, and the result is displayed. There is no graphical means for putting in points, lines, dimensions etc. If you are not a programmer, You might have to get used to the sequential style of creating an object.

But, I had a need of a custom part, and was able to model it, export it, and print it. Here is the filament guide I printed to replace the MDF laser cut part that came in my kit, but eventually broke during practice.


Blender is a 3D graphics package. It can make movies and animations. We only want objects, this might be overkill?

Update 20111223 - I tried to use Blender, and decided I don't have the patience. I could not figure out what was for movies and what was for still models. When I get a little more advanced, I can revisit this.

Google Sketchup

Makes 3D models

Misc Creating and dealing with STL

This page has a list of software for making custom STL files ...

Five Pounds of PLA later....

20121223 I have just consumed my first roll of PLA filament, five pounds of RED 3mm from Ultimachine for $66 (they were out of natural $56 at the time).

I determined that ALL the defaults from SFACT were correct, except where my machine differed from standard. I also found out that where my machine differed from standard, it was simply wrong. After I determined what was wrong (by messing with the parameters until I could evoke a change), I adjusted the machine. Now All the setting are back to default. There is probably SOME tweaking that can be done in software to improve things, but for the most part, defaults are pretty close. "Adjustments" are one thing, but we can't fix hardware problems with software changes.

Mostly, I printed small calibration objects and trinkets. Usually these were the thin wall box, overhang test, and Prusa replacement parts. The Android phone stand and the Standford Hi Res Bunny were were my check points after each series of tweaks. The larger Prusa parts are fairly straight forward and easier to print than the bunny, but they take a long time.

The key to print quality is the number of hours spent printing.

More Adjustments

2011228 from an email I post to PS1:

I encounter an issue with X axis, it had two parts

Gaps in the item at one or both sides in the X direction. This was due to the belt being too LOOSE. X-belt would visibly bounce up and down during travel. I adjusted the X-belt adjustment screw, it easily took up slack for a couple turns, then got tighter but the belt no longer moved. I loosed it back down to where it had stopped taking up belt, this did a lot to fix the X-axis gap issue.

Model shifting partway through print. Turns out the current on the X motor way too low. I didn't have a way to measure the current. I first adjusted the stepper drive by ear, while the x-axis was in motion I turned the stepper pot 1/4 turn so it would move but was a quiet as it would be. This was slightly above the point whare the motor would not move at all and just buzz. At this setting, the motor and driver would only get about 37C during print. This was fine for a bit, but later I noticed the slipping. I adjusted it up another 1/4 turn, the temperature is now around 59-65C while printing, but no slip.

Rig printed the remainder of the 5 lb red (roll#1) with no further adjustments.

However, I am going to look at the build platform and Z axis adjustment when I start doing calibration using the new 5lb roll of 3mm natural filament.

20120205 - Did not do any additional calibration for the 3mm natural filament.

Linux Mint 17 MATE

new stuff here  

update 20140803 - Switched to Linux, no more Windows

setup PC

install Linux on PC

Covered elsewhere

install Virtualbox

covered elsewhere

install Linux Mint 17 64 MATE virtual machine

covered elsewhere

install Reprap toolchain

Skeinforge / SFACT

This is totally easy now.

From the Mint 17 Software Manager, searh for the skeinforge "transitional dummy package"

Menu > Sytemm > Software > Manager > (password) > Search > Skeinforge > install

The dummy package does whatever it needs to do to install the required software including dependencies.

From a terminal window > type skeinforge

it sets itself up. DONE

This also installs SFACT. Nice.

From a terminal, type skeiinforge (as above) and it starts the applications.

This is the ONLY tricky part: To OPEN a file to slice, go to the *BOTTOM LEFT* corner and click the *SKEINFOGE* button

The Upper left File menu itme is to SAVE a file. (Tricky!)

Printrun / Pronterface

this is not in linux software manager.


(this box is very wide, be sure to stretch window / make font smaller as needed)

sudo apt-get install python-serial python-wxgtk2.8 python-pyglet python-tornado python-setuptools python-libxml2 python-gobject avahi-daemon libavahi-compat-libdnssd1 python-dbus python-psutil git
git clone

(notice that we mustt type in "git clone", just highlighting the text only takes "" for some reason)

In the file manager, navigate to


open a terminal here and type in:

sudo ./setup install

and the pronterface gui came up


If the printer is not connected and/or the power is not on, you will not see the FTDI USB entry in the follwoing steps

Now, I am running pronterface from a virtual machine, So I have to go to the top of the virtualbox window, and select:

Devices > USB Devices > FTDI > FT232 USB UART [0600]

FT232 USB UART [0600] now has a checkmark in front of it, this means virtualbox will let the virtual machine talk to this device.

In the pronterface gui, clcik the PORT button.


populates the field, now the virtual machine can talk to athe printer

Clcik the Connect button:

stty: /dev/ttyUSB0: Permission denied
[ERROR] Could not connect to /dev/ttyUSB0 at baudrate 115200:
Serial error: could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'

I bet I am not a member of some group. They wouldn't want to do this automatically in the install, because you would not be sufficiently pissed off otherwise.

sudo usermod -a -G dialout $(whoami)

This command does not take affect until AFTER you log out, and log back in. Now I feel smart for solving another small puzzle.

AT LAST! pressing the Connect button gives a successful "Connected" result!

Printer is now online.

add icons to Panel

Linux Mint add icons to panel

Custom launcher: skeinforge: customer launcher OpenSCAD : from menu

Running Pronterface

From now on, navigate to the /home/<username>/Printrun folder using the file manager

double click on to start the gui.

Check the Devices > USB Devices > FTDI > FT232 USB UART [0600] and connect if not connected already

select the port /dev/USBtty0 if not selected already

click the Connect button, and get the "Connecting... Printer is now online." message

additional calibration and twaeking


the straight segments had a slight "wavey" appearance; I tighened up the belts one more bump and this went away

calibration object

Skeinforge Dimension

Since my flow rate was tested correct, and so my esteps are correct in firmware, I tried dimension again.

default filament Diameter mm was 2.8, it measured as 3.0 to 3.1, so I set it gradually higher and the pring improved (less blobby).

The improvement stopped at 3.4 but this is larger than measured, so I set it back to 3.2

The default E Steps correcttor was nearest on the menu, so I set it down from 1.0 to 0.6; it got much worse.

I sett it up to 1.2 and it was almost perfect. 1.4 left gaps.

set it down to 1.1 and prints are now perfect.

* tight belts
* Filament diameter 3.2 (slightly higher than the 3.1 measured)
* E Steps Corrector 1.1 (1.05 if a part needs to be "tighter", the flow with become fatter)


I switched to Slic3r. Have to re-do the calibration, the parimeterr-width object testing. Did not finsh because...

One of the Z motors stopped turning, it just buzzes. Found more NEMA 17 motors, but instead of Pololu 1200 (6 wire, 3.3 ohm per coil times two, 6.6 ohms per coils total); these are Lin Engineering 4218L-01-11 (four wire, 1.2 ohms per coil). The Pololu 1200 are rated for 1Amp, 12v / 6.6 ohm = 1.8 amp. The 4218L-01 are rates 24v, 2Amp,

This postt seems to say that these motors MIGHT be OK,31700 (nophead)

Started a new page just to cover this round of calibration

Further reading