Sailfish Firmware - Setup Guide

Install < < < Setup > > > Tuning

The Sailfish firmware referenced in this manual was originally released on Thingiverse as Thing 32084.


This document provides directions on how to setup the Sailfish firmware on a Replicator 1, Thing-o-Matic (with or without a Gen 4 LCD Interface), a Cupcake (with 3G5D Shield or Ugly Cable Hack), or other RepRaps using either Gen 4 or Gen 3 electronics.

It is assumed that you have already downloaded the Sailfish firmware to your bot. If you have not done so, then please refer to the Install Guide for directions.

Note: "ReplicatorG 39 - Sailfish" is required. Use of "ReplicatorG 40" or "ReplicatorG 40 - Sailfish" is not recommended except to enable "Extruder Hold" for bots with 3mm filament extruders. This version of ReplicatorG may be obtained at Thing 32084.

Step 1: Thing-o-Matic and Cupcakes settings

Steps 1a and 1b only apply to Thing-o-Matics and Cupcakes. Replicator operators should skip these steps.

Step 1a: Selecting your machine type in ReplicatorG

Replicator 1 operators skip this step: continue to use the standard "The Replicator Single" or "The Replicator Dual" machine types in ReplicatorG. This step is only needed for Thing-o-Matics and Cupcakes.

Before slicing and building models, you need to tell ReplicatorG to use a machine type for a "Sailfish" variant of your Thing-o-Matic or Cupcake. To do this, launch "ReplicatorG 39 - Sailfish" and then, using the "Machine Type (Driver)" item of the "Machine" menu, select an appropriate machine type of the "Sailfish" variant. For example, the following image shows an accelerated Thing-o-Matic with a HBP and Mk7 being selected,


If you do not see any of these accelerated machine definitions, then make sure that you are running "ReplicatorG 39 - Sailfish".

The accelerated machine definitions specify the correct ReplicatorG machine driver and increase the maximum feed rates for the machine. The unaccelerated machine definitions impose lower maximum feed rates and use the incorrect ReplicatorG machine driver.

Step 1b: Reverse your extruder

Replicator operators skip this step. Thing-o-Matic and Cupcake operators, if you were previously using 5D — the makerbot4g driver — then skip this step as well. However, if you were not previously using 5D, then you must reverse your extruder's current direction of operation. Do this via ReplicatorG's Onboard Preferences window,

  1. Launch ReplicatorG
  2. Connect to your bot over USB
  3. From the Machine menu, select "Onboard Preferences…"
  4. In the resulting Onboard Preferences window, go to the first tab and find the Extruder axis inversion check box
    * if the box is checked, then uncheck it
    * if the box is not checked, then check it
  5. Click the "Commit" button to save the settings to EEPROM

Step 2: Auto-configuring your bot

You only need to do this step once. It must be done for Replicators, Thing-o-Matics, and Cupcakes. Connect your bot with its USB cable to your computer running "ReplicatorG 39 - Sailfish". Then, click on ReplicatorG's "connect" icon. Upon successfully connecting to your bot, ReplicatorG will automatically update the bot's EEPROM with information from the selected machine type profile. This information specifies for each axis the steps-per-mm and length. If you ever change that information, be sure to again connect your bot to ReplicatorG. This information is only written to the EEPROM when it is found to be different between the bot and the machine definition and as such you do not need to worry about excessive writes to your bot's EEPROM.

Step 3: Speeding up your prints: an accelerated Skeinforge profile

With the exception of the Retraction settings in the "Dimension" plugin, many of these settings are optional,

  • Do not mix Skeinforge's Retraction settings Sailfish's Deprime settings. Use one or the other but not both.
  • If you do not use Print-o-Matic, then you will want to set the Skeinforge "Speed" plugin settings in order to increase the printing feedrates.

Within ReplicatorG, select the "Edit Base Profiles…" sub-menu of the "GCode" menu item. In the resulting pop-up window, select the Skeinforge 50 profile you wish to modify for acceleration. Then click the "Duplicate" button and enter a name for the new profile. For example, "SF-50-Thingomatic-HBP Accelerated". Once you have typed the new name, click the "OK" button. You will then be presented with Skeinforge's profile editing windows.

  1. Retraction in the default Skeinforge settings is too aggressive. In "Dimension", change Retraction Distance from 1.0 to 0.0, and make sure Restart extra distance is 0.0. Use Sailfish's Deprime functionality instead.
  2. In the "Speed" plugin, set the slicing feed rate in the "Feed Rate (mm/s)" field to the feed rate you wish to slice at (e.g., 120 mm/s).
  3. In the "Speed" plugin, you may also wish to change the "Maximum Z Feed Rate (mm/s)" setting. Note that many bots cannot run their Z axis much faster than 30 mm/s without skipping Z steps. It is best to use a conservative value of 16 mm/s for this setting. It will not slow your printing down appreciably unless you are printing specialized gcode which is constantly changing the z position (e.g., a spiral vase).
  4. In the "Fill" plugin, near the bottom of the page, change the "Thread Sequence Choice" to "Loops>Perimeter>Infill". This will give a better finish to the exterior of your prints.
  5. Also in the "Fill" plugin, you may want to change from Hexagon to Rectangular or Line Fill. In SF-50, there's a bug in hexagon fill that causes 100% fill to be less than 100% fill on alternate layers (as tested on a cube).

After making the above changes, select the "Save and Close" item of the "File" menu. You now have a new Skeinforge profile.

When slicing (building), select this new profile in the "Base Profile" drop-down list of the "Generate GCode" pop-up window.

Step 4: Using (optional)

When printing "final" quality parts using acceleration, the best surface finish is often achieved by using a slower feed rate whilst printing the part's exterior. There are two mutually exclusive ways to accomplish this. The first way is to use Skeinforge's "perimeter slowdown" in the "Speed" plugin:

  • In the Skeinforge Speed plugin, set the perimeter rate multipliers to a value less than 1.0; e.g., try 0.5 to slow the feed rate down to half for the exterior. Disable the Altshell plugin when doing this.

The other way to accomplish this to use the "Altshell" plugin,

  • Enable the Altshell plugin and check the "use M320/M321" box. Ensure that the Perimeter factors are set to 1.0 in the Speed plugin.

Either method works well, although the Altshell plugin often gives better results at the cost of slightly slower builds. Altshell works by disabling acceleration whilst printing the exterior. With perimeter slowdown, acceleration remains enabled while printing the shell; however, the feed rate is reduced.

Step 5: Acceleration settings

Owing to the fact that new EEPROM locations may not be set as expected, please review the acceleration settings via ReplicatorG's Machine Onboard Preferences. By default, acceleration is disabled on Replicators and enabled on Thing-o-Matics and Cupcakes. Otherwise, the values if at their correct defaults should be as shown below. If they are not, then use the "Reset to Factory Defaults" button. So doing will preserve your home and tool head offsets while setting other values to their correct defaults.

Replicator Thing-o-Matic, Cupcake
Acceleration disabled enabled
Max acceleration normal moves 2000 mm/s2 2000 mm/s2
Max acceleration extruder-only moves 2000 mm/s2 4000 mm/s2
Max acceleration X,Y 1000 mm/s2 500 mm/s2
Max acceleration Z 150 mm/s2 150 mm/s2
Max acceleration A,B 2000 mm/s2 10000 mm/s2
Max speed change X,Y (fine quality) 15 mm/s 15 mm/s
Max speed change Z (fine quality) 10 mm/s 10 mm/s
Max speed change A,B (fine quality) 20 mm/s 20 mm/s
Max speed change X,Y (draft quality) 40 mm/s 40 mm/s
Max speed change Z (draft quality) 10 mm/s 10 mm/s
Max speed change A,B (draft quality) 40 mm/s 40 mm/s
JKN Advance K 0.005 0.007
JKN Advance K2 0.055 0.004
Deprime A,B 16 steps 8 steps
Slowdown Enabled Enabled

Step 6: Getting ready for your first accelerated print

You're almost ready. However, it's best to ensure that your extruder is mechanically ready to handle fast feed rates. From either ReplicatorG's machine control panel or a Gen 4 LCD Interface, try some test extrusions at fast speeds. Of course, you first need to get your extruder up to temperature!

If using a Gen 4 LCD Interface, use the "Preheat" menu item to start heating up the extruder. Use the "Extrude" menu item to then do some test extrusions. With that menu item, you can adjust the speed of the extruder as well as the duration of the extrude operation.

If your extruder will not handle faster feed rates — if it skips steps or jams — you should service it and perhaps tune its plunger a bit. It may simply need the teeth of the feed gear cleaned.

Step 7: First accelerated print

For your first print, slice an object at a moderate, but fast feed rate. For example 50 mm/s. Before sending the gcode to the bot or an SD card, make sure that you have selected an accelerated machine in ReplicatorG's "Machine Type (Driver)" sub-menu of the "Machine" menu. Then print it.

The maximum feed rates in the machine definition (driver) will limit the feed rates sent to the bot or placed in the file on the SD card. Furthermore, the per-axis maximum feed rates set in the firmware's acceleration parameters will be applied each time the object is printed. The net effect will be that the smaller of the per-axis limits will always prevail: whichever is smaller from the machine definition or the firmware's acceleration settings. As such, it's generally easiest to have larger limits in the machine definition and then use the firmware's settings to impose your actual operating limits. With that approach, it is not necessary to rewrite the SD card every time you wish to change the limits: just change the firmware's settings.

If your printing doesn't appear to be accelerated, then either there's an issue with the machine definition and ReplicatorG is enforcing too low of maximum feed rates, or acceleration is not enabled in the firmware. Ensure that acceleration is enabled as per the directions in Step 4a.

Step 7: 3mm filament extruders

If you are using a 3mm filament extruder such as an Mk6 or Mk6+, note that presently this combination of ReplicatorG, Skeinforge 50, and Volumetric 5D results in many commands to disable and then re-enable the extruder's stepper motor. This can cause print quality problems: owing to the high pressure in a 3mm filament extruder, when the extruder's stepper motor is disabled, the filament is free to back out a little.

The Sailfish 4.1 and later firmware has an "Extruder Hold" feature which defeats the disabling of the extruder stepper motors once a print has started. By default, this feature is disabled. Using "ReplicatorG 40" or "ReplicatorG 40 - Sailfish", connect to the bot over USB and from Machine > Onboard Preferences, enable the Extruder Hold from the "Misc" tab.

If you have a Gen 4 LCD interface, then Extruder Hold may be enabled via the LCD menu. Look under the acceleration settings.

"ReplicatorG 40 - Sailfish" may be obtained at Thing 32084.


After printing a few objects, you may decide you wish to tune your acceleration settings further, see the tuning guide, Jetty Firmware - Tuning Acceleration.

Install < < < Setup > > > Tuning

Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.