Sailfish 7.4 & 4.4 Release Notes

26 April 2013

Sailfish 7.4 & 4.4 Release Notes

  • Sailfish 7.4 for Replicator 1s & 2s
  • Sailfish 4.4 for Thing-o-Matics & Cupcakes
  • ReplicatorG 40r16 - Sailfish

As per the Sailfish Installation Guide, the Sailfish firmware may be obtained using ReplicatorG and pointing the download URL at

The download URL is set via the Advanced section of RepG's Preferences menu. Platform specific distributions of ReplicatorG 40r16 - Sailfish can be found as downloads of Thingiverse Thing 32084.

New for all machines

The following features and changes are new in Sailfish, although not necessarily available on all bots,

  1. RPM no longer supported: With this release of Sailfish, RPM-based slicing is no longer supported. Users of Skeinforge should use Skeinforge-50. Please read RPM no longer supported for important details.
  2. SDHC support: High capacity SD cards may now be used with all Replicators. Thing-o-Matics with ATmega 2560s also enjoy SDHC support with Sailfish 4.4.
  3. FAT-32 support: The FAT-32 file system is now supported, in addition to FAT-16, on all Replicators. Sailfish 4.4 also includes this support for Thing-o-Matics with ATmega 2560s.
  4. Replicator safety improvements: New software safety features have been added for Replicators.
  5. Pause @ ZPos mcode: A new mcode, M322, which allows specification of a Z height at which to pause the print has been added to ReplicatorG. It is also supported by Wingcommander's GPX gcode to X3G converter.
  6. P-Stop hardware support: Supply your own hardware to detect filament feed or other issues and then trigger a graceful printing pause. No more prints lost to filament snags or emptied spools.
  7. Cupcake configurable Z endstop: Cupcake owners can now specify whether their Z endstop is a min or max endstop. Cupcake owners be sure to read this information as the Z endstop's default behavior has changed from being a min endstop to being a max endstop.
  8. ReplicatorG improvements: Use PyPy for 5x faster slicing on Windows and a number of other ReplicatorG improvements as described in ReplicatorG 40r16 - Sailfish.

Additional new features specific to individual bots are presented in the next three sections.

New for the Replicator 1 and 2 (MightyBoard)

Specific to Replicators, changes have been made in two areas. First, the addition of new safety features which are explained in the section New Replicator safety features. Second, the removal from the firmware of the Nozzle Calibration scripts as described below.

For Replicators, the Nozzle Calibration scripts have been removed so as to free up program space. These are the scripts which print the calibration lines used to calibrate the nozzle spacing of Replicator 1 Duals and Replicator 2Xs. These scripts are now accessed via ReplicatorG's menu "File > Scripts > Calibration > Replicator 1, 2 & 2X". Owing to the difference in nozzle spacings, there are two Nozzle Calibration scripts: one for the Replicator 1 Dual and another for the Replicator 2X. Run the correct script for your bot. You can also save the script to an SD card and run it from the card.

After running the script, use the bot's onboard Nozzle Calibration menu found under the Utilities menu. That menu will allow you to enter the X and Y calibration numbers as per the directions at Makerbot's Nozzle Alignment directions.

These scripts were removed as they each take up over 4K of program space. Removing them made room for other features such as SDHC and FAT-32 support.

Note that the Replicator 2 and Replicator 2X firmwares are now distinct. While nothing untoward will happen if you accidentally load the Replicator 2 firmware to a 2X or vice versa, do be careful to select the correct bot when upgrading your firmware. Previously, the same firmware file was used for both bots. That is no longer the case: separating the two allowed for inclusion of the SDHC and FAT-32 support in each. The Replicator 2X firmware needs the menu for entering nozzle calibration information while the Replicator 2 does not. On the other hand, the Replicator 2, has extra code for displaying additional build statistics while printing. The Replicator 2X lacks display space for that information as it displays temperature data for three heaters while printing and not just one like the Replicator 2. Each of these features requires code space and by excluding the code for the unneeded features, room was made for SDHC and FAT-32 support.

New for Thing-o-Matics (Gen 4)

As explained in SDHC & FAT-32, Thing-o-Matics with ATmega 2560s can now use high capacity SD cards as well as the FAT-32 file system. The new P-Stop feature described in P-Stop hardware support is also supported on all Thing-o-Matics.

Users identified several bugs associated with ABP handling and printing of multiple copies. These issues have been fixed in this release.

New for Cupcakes (Gen 3)

For Cupcakes there is a new EEPROM setting which declares the Z endstop to either be a min or max endstop. Previously for Gen 3 electronics, Sailfish treated the Z endstop as a min endstop like the X and Y endstops. Now, the default Sailfish behavior is to treat it as a max endstop. To change this interpretation, use ReplicatorG's "Machine > Onboard Preferences" menu. In the "Endstops/Axis Inversion" tab there is now an item labelled "3G5D Z endstop is min". When checked, the Z endstop is treated as a minimum endstop as in prior versions of Sailfish. When not checked, it is treated as a maximum endstop. After upgrading to Sailfish 4.4, Cupcakes owners should install ReplicatorG 40r16 - Sailfish and then set this setting appropriately. Otherwise, they may find their bot not homing correctly for the Z axis.

ReplicatorG 40r16 - Sailfish

Somewhat unexpectedly, this release has found itself with a number of important ReplicatorG improvements, many of which are community contributions. These improvements (and fixes) include,

  1. Improved PyPy support courtesy of Kobus du Toit. PyPy is a faster Python interpreter which speeds up slicing by a factor of roughly five. In the past, however, it was difficult to find a PyPy distribution which would work with ReplicatorG and Skeinforge: Skeinforge's profile editor requires that the PyPy distribution include a module named "Tkinter". Unfortunately, there is no readily available PyPy distribution with Tkinter for Windows. Kobus du Toit's innovation is to specify up to two different Python interpreters for ReplicatorG: one for slicing which does not need Tkinter and a second one for profile editing which does. This then allows most any PyPy distribution to be used for slicing and the standard, but slower Python distribution for profile editing. You can download a PyPy distribution from Unpack it on your system and then use the "Advanced" tab of the Preferences window to select the pypy.exe from the PyPy distribution you just installed. If no interpreter is specified for profile editing, then the slicing interpreter used. Note: if your slicing interpreter does not include Tkinter, then you will be unable to use the skeiniso and skeinlayer modules of the Analyze section of the Skeinforge slicing profile.
  2. Improved Fill plugin courtesy of delsydsoftware, Thing 65624. This improved Fill plugin allows,
    • specification of the number of solid surface layers by target thickness rather than layer count;
    • removal of the top solid surface layers making it easier to print cups, vases, and similar models; and,
    • forcing even or odd layers for the top surface.

  3. Courtesy of tasmaniandroid, a new Thing-o-Matic machine profile for Thing-o-Matics with ABPs and Mk6 stepstruders.
  4. Support for the new M322 Pause @ ZPos mcode as described in Pause @ ZPos mcode.
  5. The Altshell plugin now has an option to slow down printing for all shells and loops rather than just exterior shells.
  6. As part of retiring RPM support, all start and end gcode files have now been changed to use Volumetric 5D anchors rather than RPM based anchors. Additionally, the replace.csv files have been updated to comment out all M108 R and S commands. M108 T commands may still be used for selecting the active extruder (tool).
  7. Fix for the problem on Windows whereby ReplicatorG may hang when editing slicing profiles.
  8. Fixes for bugs identified by Wingcommander in ReplicatorG whilst he was developing GPX.

RPM no longer supported

With this release of Sailfish, support for RPM based slicing has been retired. Skeinforge users should use Skeinforge-50 (SF-50). If you still need RPM, then please use the older Jetty Firmware. If you are using your own start or end gcode, then it should be updated to no longer use RPM-centric commands. While the older RPM based anchors may still work after a fashion, Volumetric 5D anchors should instead be used. Refer to ReplicatorG 40r16's supplied start and end gcode and replace.csv files for working examples.

New Replicator safety features

Thing-o-Matics and Cupcakes have safety hardware designed to reduce the likelihood of the bot's extruder overheating. The Replicators lack this particular safety hardware. To help compensate for that lack, new safety features have been added to Sailfish. However, there is only so much that firmware can do to assure safe operation of your bot. Firmware bugs including the microprocessor locking up will prevent software safety measures from functioning. Always operate your bot safely and in accord with the manufacturer and distributor's directions. Leaving your bot operating unattended is not recommended.

The new safety features include

  1. Pause heater timeout: If the bot is left paused for more than 30 minutes with its heaters enabled, then the bot will automatically switch to a "Cold Pause". In a Cold Pause, all heaters are turned off, the extruder stepper motor is disabled, and the LEDs are turned off.
  2. Improved failure messages: Heater failure messages now indicate which heater has failed. This is useful for Replicators with more than one heater. E.g., both models of Replicator 1s as well as the Replicator 2X.
  3. Pause with Heat option: the Pause with Heat option now defaults to OFF in the EEPROM when restoring the EEPROM to factory defaults. It must explicitly be set to ON in order to enable the feature.
  4. Logic bugs: Two logic bugs in the MBI firmware associated with heater failures have been fixed. These bugs were the cause of prints beginning when the extruder had failed and not reached temperature.

SDHC & FAT-32 support

Support for High Capacity SD cards — SDHC cards — and the FAT-32 file system has been added to Sailfish 7.4 for all Replicators. Sailfish 4.4 only provides this support in the ATmega 2560 builds as there was insufficient code space for it on Cupcakes and Thing-o-Matics with ATmega 1280s.

Bots with this new support may now use SD cards with capacities of 4 or more gigabytes. MicroSD cards, when placed in SD card carriers, also work. To make use of this extra file space, the FAT-32 file system is also supported. Your operating system should automaticallys format larger cards using FAT-32: you should not need to do anything special to format your cards for FAT-32. Note that FAT-16 and Standard Capacity SDSC cards are still supported.

And, remember that an earlier release of Sailfish added support for file folders on SD cards. So, feel free to organize your files using folders.

Please note that SDXC — eXtended Capacity — cards are not supported. Similarly, the proprietary exFAT (eFAT) file system is not supported either

Pause @ ZPos mcode

Want to trigger a pause at a certain layer height without having to input the value via the bot's front panel? For all bots except Cupcakes, a new M322 mcode is now supported by ReplicatorG and GPX,

M322 Zzzz.zz

With the above command, the bot will pause printing when the Z height attains or exceeds the value zzz.zz. While you may insert multiple M322 commands, only the last one seen prevails. That is a M322 command when encountered in gcode processing by the bot overrides any previous, active M322 command. Consequently, multiple uses of M322 in the same gcode file only make sense when a second M322 is placed later on in the gcode, after the Z height has exceeded the Z height called for by any prior M322 command.

Additionally, a M322 command placed after the requested Z height has been attained in the gcode is still honored: the test is whether the Z height has attained or exceeds the requested Z height. It is therefore okay to use M322 commands to pause within a layer.

Finally, note that the pause will not actually occur until the acceleration planner has emptied its queue of planned segments. Consequently, a carefully placed M322 command may not see the pause occur at that exact location in the gcode: there may be upwards of 32 planned segments to first clear.

Note that Cupcakes have never supported Pause @ ZPos in any form as they lack an LCD display.

P-Stop hardware support

A Pause Stop (P-Stop) is a hardware mechanism which causes your bot to pause its operation by gracefully entering a state from which the print can later be resumed. From the firmware side, a P-Stop behaves like an endstop switch and is normally HIGH. When a P-Stop is to be triggered, the endstop is taken LOW. The firmware sees the LOW state and, after emptying the queue of planned segments, enters a Cold Pause state by clearing the build platform, turning off all heaters, and disabling the extruder stepper motor.

From the hardware side, the P-Stop should behave electrically like a Makerbot endstop. Note that while the build platform is clearing itself in response to a P-Stop, a message indicating that the P-Stop was triggered is shown. However, once the bot is then paused, that indication no longer appears. As such, the P-Stop hardware itself may wish to visually indicate that it has been triggered (e.g., a flashing LED).

For Replicators, the unused X Min endstop is used for the P-Stop. On Replicator 1s, there already is a labelled header on the motherboard to which a normal endstop cable may be connected using a CD audio connector. For Replicator 2's, that board position is not populated. For Thing-o-Matics, the unused X Max endstop connector is used for the P-Stop. P-Stop functionality is not supported for Cupcakes: there are no spare endstops available when the 3G5D shield is used.

By default, use of the P-Stop is disabled. It may be enabled using either ReplicatorG's "Machine > Onboard Preferences", or via the General Settings menu on the bot itself.