Tuning < < < Sailfish FAQ
The Sailfish firmware referenced in this manual was originally released on Thingiverse as Thing 32084.
Table of Contents
What is Sailfish?
Sailfish is an alternative, community-supported firmware for The Replicator 1, Thing-o-Matic and Cupcake. It is an accelerated firmware that adds features beyond those provided by the standard MakerBot firmwares, including ditto printing, multiple usage profiles, filament usage counters, and the ability to save and restore EEPROM values to and from SD card.
Sailfish is the only accelerated firmware available for the Thing-O-Matic. Rob Giseburt's alternative Cupcake firmware features acceleration, but has not been updated in some time.
How is Sailfish related to other firmwares?
Sailfish builds on Makerbot's Gen4 and MightyBoard firmwares using acceleration derived from the RepRap firmware Marlin. It also adds a number of original improvements, including the asymmetric JKN Advance algorithm, the Yet Another Jerk jerk control, and use of fixed point computations for speed. Previous to Sailfish 4.0 for Thing-O-Matics and Cupcakes and Sailfish 6.2 for The Replicator 1, Sailfish was known as Jetty Firmware.
What are the hardware requirements for Sailfish?
To run Sailfish, you will need one of the following:
- The Replicator 1
- A Thing-o-Matic or Cupcake with Gen 4 electronics with a StepStruder Mk6, Mk6+, Mk7, or Mk8
- A Cupcake with Gen 3 electronics, the 3G 5D shield, and a Stepstruder Mk6, Mk6+, Mk7, or Mk8
- A Cupcake with Gen 3 electronics, the Ugly Cable Hack, and a Stepstruder Mk6, Mk6+, Mk7, or Mk8
What are the software requirements for Sailfish?
Sailfish requires either the most recent official release of ReplicatorG or one of the special Sailfish versions of Replicator G available at http://www.thingiverse.com/thing:32084. Currently we recommend that you use ReplicatorG 0039 - Sailfish unless you are using a bot with a 3mm extruder, in which case you should use ReplicatorG 0040.
Slice models for Sailfish using Skeinforge 50 or later. Other slicers, including slic3r and KISSlicer, have also been configured to work with Sailfish. For more information, inquire on the MakerBot Operators Google Group.
How do I get Sailfish?
Sailfish firmware for the Thing-O-Matic and Cupcake is available, along with the standard MakerBot firmware, at http://firmware.makerbot.com/firmware.xml, which means that all you have to do to get it is run the "Upload new firmware" tool from the Machine menu in ReplicatorG.
Sailfish Firmware for The Replicator 1 is not hosted by MakerBot. To upload Sailfish to a Replicator, open up ReplicatorG 0039 - Sailfish and set your Firmware Update URL to http://jettyfirmware.yolasite.com/resources/release/firmware.xml. You can find the Firmware Update URL setting in the Preferences menu, under the Advanced tab. Then run the "Upload new firmware" tool as you normally would.
For more information on installing Sailfish, see http://wiki.makerbot.com/sailfish-firmware-installation-guide.
The source code for Sailfish is hosted at http://github.com/jetty840/
Is there anything I need to do to set up Sailfish?
There are a few settings you will have to edit in order to start printing with Sailfish. For details and instructions, see http://wiki.makerbot.com/sailfish-firmware-setup-guide
What do I do if I'm having trouble with Sailfish?
First check the Troubleshooting section below to see if your question has already been answered. If you still need help, post your question to the Jetty Firmware Google Group.
How do I remove Sailfish?
To remove Sailfish, just install another firmware in its place. If you may want to restore Sailfish later, consider saving a copy of your bot's EEPROM settings.
To save the EEPROM on a Replicator, go to the bot's onboard Utilities menu and select EEPROM. Choose "EEPROM -> SD" to save the EEPROM to an SD card file. You can restore the settings later by inserting the same SD card and selecting "SD -> EEPROM".
To save the EEPROM on a Thing-O-Matic or Cupcake, you will need a Gen4 LCD Interface. Go to the EEPROM menu item and choose "EEPROM -> SD" to save the EEPROM to an SD card file. You can restore the settings later by inserting the same SD card and selecting "SD -> EEPROM".
My bot moves much too fast and violently
First, ensure that Acceleration is enabled. You can find this setting under the Acceleration tab in ReplicatorG's Onboard Preferences menu or through your bot's LCD interface.
If acceleration is already enabled, make sure you're using the correct version of ReplicatorG and the correct kind of build file. As of Sailfish 4.0 for the Thing-O-Matic and Cupcake and Sailfish 6.2 for The Replicator 1, Sailfish uses a new kind of accelerated move command. In ReplicatorG 0039 - Sailfish, those new commands are used when generating .s3g files, while in ReplicatorG 0040, .s3g files use the old commands and .x3g files use the new ones. If you use an .s3g file generated with any version of ReplicatorG other than 0039 - Sailfish, it will contain the old accelerated move commands and Sailfish will run them as non-accelerated moves, resulting in violent, jerky movement that is bad for your bot and your prints.
If neither or these things turns out to be the issue, go to ReplicatorG's Machine menu, select Onboard Preferences, and compare the values in the Acceleration tab to the ones shown here: http://wiki.makerbot.com/sailfish-firmware-setup-guide#toc7. If they look very different, your bot may have already had some wild values in the relevant memory locations before you uploaded Sailfish. Reset the motherboard to factory settings using the button at the bottom of the Onboard Preferences menu. This will not lose your toolhead or home offset settings.
My bot homes in the wrong direction.
Make sure that the "Use default start/end gcode" box in ReplicatorG's Generate GCode window is checked. If you are using your own start.gcode file, check it for errors.
There is a known bug in ReplicatorG 0039 and 0040 whereby the default Thing-O-Matic profile uses the wrong start and end GCode files, causing your Thing-O-Matic to home in the wrong direction. Avoid this by checking the "Use default start/end gcode" box in ReplicatorG's Generate GCode window or by creating a duplicate slicing profile and correcting the start and end GCode files in that profile's alterations directory. If you are already using custom start and end GCode, check it for errors.
My bot is heating to the wrong temperature.
You probably have Sailfish's "Override Gcode Temperature" feature enabled. This feature overrides the temperature set in your GCode in favor of the temperature set in your onboard Preheat Settings. You can set the Preheat Settings to the temperature you need, or turn the feature off altogether in ReplicatorG's Onboard Preferences window.
My bot is skipping or missing steps.
You may be running an axis faster than it can tolerate. The Z axis, especially on a Cupcake, is particularly sensitive to this. The maximum feedrates allowed for each axis are specified in the machine definition file used by ReplicatorG. Those maximum feedrates are specified in units of mm per minute. You may need to reduce yours. After changing a machine definition, you will need to exit and restart ReplicatorG so that ReplicatorG registers the change. Then you will need to connect your bot to ReplicatorG via USB so that ReplicatorG can communicate the change to your bot.
While you may be allowing too high of a rate of acceleration, that's much less likely: unaccelerated operation uses very high rates of acceleration and if those were not a problem, then the moderate rates of acceleration used by Sailfish are unlikely to be an issue.
My dualstrusion offsets are wrong
If you are using ReplicatorG 39 - Sailfish, then your tool head offsets should be small values, typically between -1.0 and +1.0 mm. If you are using ReplicatorG 40 or ReplicatorG 40 - Sailfish, then X axis tool head offset needs to be around -34.0 to -32.0 mm. The difference between 39 and 40 is driven by a change in how ReplicatorG handles the dualstrusion tool head offsets.
To change your bots tool head offsets, you will need to use either ReplicatorG 0039 - Sailfish or 0040 - Sailfish. The standard version of ReplicatorG 0040 will use the wrong units when manipulating the offsets.
Go to Machine > Onboard Preferences. Find the Homing/VREFs tab and the "X toolhead offset" setting. If your offset is within a millimeter or two of 0, subtract 33mm. For example, if it's 0.018mm, change it to -32.982mm. If it's -0.125 mm, change it to -33.125 mm. Then click the "Commit" button. If your prints center too far to the left or right on the build platform, then adjust your X home offset. You will likely want to reduce the X home offset by about 16.5 mm; e.g., reduce it from about 152 mm to about 135.5 mm. These centering issues will be addressed in a version of Sailfish after version 7.0.
Thing-o-Matics & Cupcakes
In ReplicatorG, the Onboard Preferences shows a tool count of -1.
This is normal — just set the extruder count to the correct count of either 1 or 2.
What is the correct extruder name and tool number for a bot with a single extruder?
A single extruder will be identified as "Extruder A" or "Tool 0" depending on the context.
My 3mm extruder seems to be depriming/retracting too much.
Use RepG's Onboard Preferences window to enable "Extruder Hold". It's in the "Misc" tab. For extruders with high internal pressure — 3mm extruders, typically — it is helpful to ignore GCode commands to temporarily disable the extruder stepper motor during a build. While this may not have been a problem for you previously, Skeinforge 50 generates these commands before any travel move.
No plastic comes out my extruder.
With 5D, or volumetric printing, the extruder is run in the opposite direction from non-5D. You likely need to change the "Invert A axis" setting in Machine > Onboard Preferences.
At the end of a build, my HBP temperature starts climbing.
If you are using the Altshell plugin in Skeinforge, make sure that the "Use M320/M321" box is checked. Leaving the box unchecked may trigger a non Sailfish related bug in older versions of the Extruder Controller board.
Tuning < < < Sailfish FAQ