The Sailfish firmware is an enhanced firmware for Makerbot printers containing features intended for advanced users. These features fall into several broad categories:

  1. Advanced printing features such as changing the printing speed and temperature while printing,
  2. More robust error handling,
  3. Additional features such as support for high capacity SD cards and file folders on SD cards,
  4. Support for Core-XY and H-Gantry, and
  5. Auto-leveling support.


The bot's firmware is the software which resides within the bot and controls the bot's behavior. It is the software which receives printing instructions from MakerWare, ReplicatorG, SD card files, and other desktop programs and then executes them to create your 3D print. Sailfish has existed since late 2011 and is based upon a combination of the RepRap Marlin and MBI Gen 4 firmwares. Sailfish was originally known as the "Jetty Firmware". In early Fall of 2012, MBI adopted the core acceleration and printing control code of Sailfish into their own firmware. However, MBI's firmware does not include many of the more advanced features of Sailfish -- in part because of the limited program space in Makerbots and MBI's need to use much of that space for "first run" features.


What follows is a description of features found in Sailfish which are not part of the MBI firmware for Makerbots. A good number of these features are also found in RepRap firmwares; they are not necessarily unique to Sailfish.


Advanced Printing Features

  1. Change the printing speed from the LCD display while printing.
  2. Change the extrusion temperature from the LCD display while printing.
  3. At the end of a print, the total print time and the amount of filament used is displayed.
  4. At the end of a print, you can elect to repeat the same print: no need to go through screens reselecting the file. Quite useful when asking an associate, spouse, or child to repeat a print several times.
  5. "Ditto" printing for dual extruder printers: simultaneously print the same model twice using both extruders or do other clever tricks.
  6. Override temperatures found in gcode with different temperatures: useful for redoing a series of prints at different temperatures without having to reslice.
  7. Control whether or not heaters are left active when prints are paused.
  8. Jog the axes when a print is paused so as to make mid print filament loading easier. The axes' position is automatically restored when the print is resumed.
  9. On printers with a most two heaters, a line of the LCD display provides constantly updated build statistics: filament used, percent complete, elapsed time, estimated time remaining, and current height.
  10. Much finer control of the height to pause at with Pause @ ZPos: MBI's firmware only allows specification to the nearest millimeter whereas Sailfish allows 0.01 mm resolution.
  11. Multiple Pause @ ZPos positions may be specified in gcode.
  12. When used in conjunction with GPX, automatic compensation for different filament diameters when placing Pause @ ZPos commands within your gcode.
  13. Support for Emergency stop and Pause stop hardware. Pause stop hardware allows a print to gracefully be paused when hardware detects a temporary problem such as filament running out or being snagged. Once the condition is resolved, the print may be resumed.


SD card features

  1. Support for file folders on SD cards.
  2. Support for high capacity SD cards (e.g., 4, 8, 16, 32 GB, etc.).
  3. Support for the FAT-32 file system.
  4. Support for the Toshiba AirFlash Wi-Fi card: send files to your bot over Wi-Fi.
  5. SD card error detection and correction.
  6. Long filenames are allowed; long file names scroll in the display so that the entire name can be viewed. MBI's firmware limits file names to 15 characters, not including the mandatory, case-sensitive ".x3g" extension.
  7. Ability to save and restore the bot's internal settings -- onboard preferences -- to an SD card. Backup your bot's settings or quickly transfer them to another bot.


Robustness features

  1. Track your filament usage: storage and recall of used filament counters; filament "odometers".
  2. Improved error handling and reporting of heater errors. For example, on bots with more than one heater, the heater errors indicate which heater the error message refers to. No more trying to figure out if it's your HBP or extruder (and which one) which is failing.
  3. MBI's firmware does not return errors when printing over USB. This typically results in gcode instructions being dropped. Often that is benign and merely results in a slight printing blemish (i.e., a dropped G1 command), but in some instances can and will result in prints being ruined. For example, there's been cases of commands to re-enable stepper motor currents being lost, and commands to turn off extruders lost. Sailfish actually returns errors when printing over USB so that MakerWare and RepG can intelligently handle the problem.
  4. Improved SD error messages: finer detail on what failed with the SD card (http://sailfishfirmware.com/v73-v43.html#sderror). MBI's firmware often produces a message indicating that the SD card is not formatted as FAT-16 when the actual error is something else entirely. This because the firmware lumps about five or six different error cases into one.
  5. Additional safety features: http://sailfishfirmware.com/v74-v44.html#safety.


General features

  1. Better print quality. Sailfish is careful to run critically timed operations at the highest priority in the microprocessor. Unfortunately, not so in the MBI firmware. When printing very fine detail at high print speeds, this can make a difference. Also, when printing over USB, the fact that the firmware returns error messages actually leads to improved print quality. When no error message is returned as is the case with MBI's firmware, MakerWare and RepG actually pause waiting for a response and then just resend the same command which may then fails again, leading to another pause. These pauses can leave the bot sitting idle, producing a small, extra blob of plastic on the print and visible as pimples when they occur on the outer surface. By returning error messages, these pauses are avoided.
  2. Improved leveling script: allows you to move the extruder to any location over the build platform as many times as you want and however you want. No more checking just a few predefined points.
  3. Extruder hold feature for use with 3mm extruders which have higher internal pressure and thus more significant problems when the gcode gratuitiously disables the extruder motors. This feature allows gcode commands to disable the extruder to be ignored. (Some slicers like to generate many such commands.)
  4. More precise and stable heater control: MBI's firmware introduces an additional +/- 1C of measurement error in their PID control.
  5. Support for auto-leveling: requires printers with ATmega 2560 processors and a Z height probe.
  6. Support for Core-XY and H-Gantry drive systems: the Core-XY drive system offers superior mechanical performance.