Jetty Firmware - Tuning Acceleration

Setup < < < Tuning > > > Sailfish FAQ

The firmware referenced in this manual can be found on Thingiverse Thing 17855

This document is a tuning guide for the Jetty Firmware's acceleration capabilities. For general information on using the Jetty Firmware, see the Jetty Firmware Manual.


This document provides directions on how to get the best print results with acceleration. It assumes that you have already installed the Jetty Firmware and have it setup and functioning. If you have not installed or set it up yet, please see the Jetty Firmware - Setup Guide.

Printing should always be run from an SD Card. Printing from ReplicatorG will very likely result in prints with many small blobs. At issue is that not only does accelerated printing go much faster, but the firmware uses look-ahead techniques to make printing decisions several line segments ahead of what it's currently printing. As a result, your computer, ReplicatorG, and the serial USB connection may find it challenging to keep up with your printer. When the firmware has to pause for more data, blobs caused by ooze may result.

Know your defects

Before launching into a discussion of tuning, you should first be familiar with three particular print defects which, incidentally, occur with or without accelerated printing. There are other defects as well, but familiarity with these three is helpful as they will show up on your calibration cubes. You may not be used to seeing them when printing at low feed rates (e.g., 30 mm/s). But at high feed rates, accelerated or otherwise, they become easier to see.


Infill telegraphing: This typically occurs when you print with a single shell and your perimeter width to thickness ratio is off such that the plastic being laid down is too lean. It can also be caused by the hot extruder nozzle barrel dragging over or pushing into the layer below it. So check your perimeter width to thickness ratio, and make sure that the nozzle face is clean. If necessary, slice your model with an additional shell or two.

Excess momentum can also cause this effect in which case an extra shell helps hide it. If excess momentum is implicated, then the same techniques used to reduce the next defect, corner ringing, may also be applied here.

Note that the above picture is an extreme case to the point where the infill itself is visible between some of the perimeter's layers. On some of the layers where it is not directly visible ripples caused by it or the nozzle pushing against the inside of the perimeter are visible.


Corner ringing: At higher print speeds, when the XY motion of the build platform or extruder makes a sudden change in direction, a ringing vibration may occur. Although it is quickly dampened, it nonetheless impacts surface finish. Corner ringing is particularly noticeable on long, flat surfaces and appears as ripples which rapidly diminish in amplitude. Like infill telegraphing, this can occur with non-accelerated printing as well as accelerated printing. The advantage of accelerated printing is that acceleration can be used to mitigate the issue while still attaining high print speeds away from corners: lower the maximum X and Y speed change values or the maximum X and Y accelerations or a combination of the two. For non-accelerated printing, the only recourse is to print the entire model at slower speeds.


Stepper clipping: When infill telegraphing and corner ringing are not present, you may see some very faint rippling along flat faces when you look carefully in the right lighting and from the right angle. This is caused by clipping of the sinusoidal control signals to the stepper motors. Thing-o-Matics with stepper motors from before May 2011 are especially vulnerable to this issue. Unfortunately, later models suffer as well as evidenced by the picture above which was produced on a Thing-o-Matic with the post May 2011 stepper motors.1 Ed Nisley described and analyzed this clipping in his blog. At low speeds, this clipping produces a faint repeating pattern of 25 Hz. At much higher stepper speeds, the pattern has a frequency of 50 Hz. Hardware replacement is needed to nearly eliminate the problem: stepper motors with winding resistances at or below 2 Ohms, sufficient pull in torque, sufficiently low inductance, and stepper drivers capable of handling the motors (e.g., Pololu). Entirely eliminating the problem for a Cupcake or Thing-o-Matic's X axis is difficult to achieve owing to the height constraint on the stepper motor imposed by the Y-axis carriage. Altshell can be considered a software remedy to this.

Step 1: Mechanics

Do not jump right in and assume that your bot can run at feed rates of 100 mm/s. Start slower, much slower, and then work your way up to faster feed rates. The two likely trouble spots will be the Z axis and the extruder. Fortunately, it's not critical to have the Z axis run fast: limiting it to feed rates of 20 or 30 mm/s is not going to slow your printing down.

Step 1a: Maximum feed rates

The likely limit on your printing speeds will be your extruder. So, make sure it is clean and functioning well. You may need to adjust the pressure of the side plunger which keeps the filament engaged with the motor's pinch gear. If your accelerated print exhibits sudden gaps of missing filament then suspect missed extruder steps. If that happens, try reducing the firmware's maximum extruder feed rate by 10 or 20 mm/s and see if that corrects the problem. If it does, then try increasing it by steps of 5 mm/s in order to find a faster but acceptable value.

Note that Mk7 and Mk8 Stepstruders should be capable of feed rates in the 75 - 100 mm/s feed rate range. Even higher with good tuning and filament of good uniform diameter. Once you go much faster, both slippage and temperature cycling in the melt chamber become limiting factors. The faster you feed cold filament in, the more the heater core has to cycle on and off to maintain temperature. If you normally extrude at 225C, you may want to increase your extruder temperature by 5 or 10C — experiment. But for filament slippage, the best you can do is clean your gear, play with the plunger tension, and ensure that your filament doesn't have too much variation in diameter. That or experiment with alternate filament feeder designs from Thingiverse.

As regards the Z axis, watch out for missed steps which result in your object being shorter than intended and likely unwanted circumferential bands (e.g., a layer which bulges out). Decrease the maximum Z axis feed rate and possibly the maximum Z axis acceleration as well. (The extruder axis can handle pretty high acceleration, in case you're wondering, as there is little mass to move.) Z axis feed rates in excess of 30 mm/s may be pushing your luck. Also, not having Z Hold enabled can show as a similar defect. ToM Mk7's in particular should have Z Hold enabled for accelerated or non-accelerated printing, and other bots may need it, especially if targeting higher feed rates.

Again, start with slow maximum feed rates. It's okay to slice at 100 mm/s and then write the print to SD card using a machine definition (.xml) that allows really high feed rates. But, you'll then want to start your tuning by setting the acceleration parameters to have a moderate maximum feed rate for the A axis (extruder). You can leave the maximum feed rates for the X, Y, and Z axes at their defaults: setting the maximum feed rate down for the A axis will effectively limit the others as well. Try starting with a maximum A axis feed rate of 50 mm/s and then work up in increments of 10 mm/s.

Refer to the Jetty Firmware - Setup Guide for information on setting the maximum feed rates. Make successive prints with incrementally higher maximum feed rates. Then judge what mechanically works best for your bot.

Step 1b: Momentum and maximum accelerations

Cupcake and Thing-o-Matic build platforms have a significant amount of momentum; especially along the Y axis. The Y axis carriage carries the X carriage, build platform, a stepper motor, and steel guide rods. More mass means more momentum and more kinetic energy. If the maximum X and Y axis accelerations are too high, you will see overshoot such as "corner blobbing" on calibration cubes. (Be warned, however, that this is not the only source of corner blobbing: if you have corner blobbing it may in part be coming from other sources such as residual pressure in the extruder which is addressed by the JKN Advance K2 setting.)

Since the maximum accelerations are also the maximum decelerations, setting them too high is telling the bot that it can slow down really fast. E.g., "stop on a dime". If you set these maximum accelerations too high, you will get overshoot: the bot really cannot stop or slow down the carriage as fast as you are telling it that it can. Consequently, you don't want to set the maximum X and Y accelerations much above 1000 mm/s^2. Indeed, values around 500 mm/s^2 are preferred. But, you can make the tradeoff between speed and quality as you see fit. On objects which are largely circular, you can push these values higher. For objects where one axis regularly comes to a stop (e.g., cubes), you will want smaller values.

Step 1c: Jerks and maximum speed changes

Finally, we need to look at jerks. Fortunately, not the human ones you may have encountered out in the Real World. Instead, we're here concerned with mechanical jerking which is caused by changes in acceleration.

When printing, with or without acceleration, your bot rattles and shakes every time the build platform makes a significant change in direction. Especially when, for instance, it's doing back and forth infill. This shaking is caused by mechanical jerking. It's the primary thing holding back the feed rates on non-accelerated printing: print too fast with non-accelerated printing and you will shake your bot apart.

Accelerated printing's primary (if not sole) goal is to deal with this limitation by smoothly accelerating to and from higher speeds. By slowing down — decelerating — before making a change in direction, accelerated printing controls the amount of mechanical jerking. But, the accelerated firmware needs to know how much it needs to slow down by. Early attempts at acceleration slowed all the way down to rest between each line segment. While that works mechanically, it also causes blobbing: plastic continues to ooze out of the extruder even when the build platform is at rest. Consequently, we don't want to slow down too much. On the other hand, if we don't slow down enough, we cause too violent shakes. This is the fundamental trade-off when doing accelerated printing: slowing down enough to not shake too much or cause strong ringing patterns after cornering, but not so much as to invite blobbing. Plus the desire for fast printing which also calls for not slowing down more than necessary.

With that said, know that with the maximum per axis speed change parameters you tell your bot just how much it has to slow down when changing direction. You should start with values not too different from the maximum unaccelerated feed rates. For a Thing-o-Matic for example, 30 mm/s for the X and Y axes, 16 for the Z axis, and 30 again for the A (extruder) axis. You can tune them from there. Note that the X and Y axes have a lot of latitude: they may be fine going as high as 60 mm/s. You need to be careful with the Z axis as it misses steps easily (skips). The extruder axis isn't as lenient as the X or Y axes, but is not as sensitive as the Z axis.

Step 2: Calibration cube

The first step to getting a good accelerated print is to make sure that your printer can print out a good calibration cube non-accelerated at 100% fill and at 30 mm/s feed rate. There are various guides on achieving this and they boil down to adjusting the width to thickness ratios or changing the feed rate. For our purposes here, you'll want to adjust the width to thickness ratios, leaving the feed rate fixed at 30 mm/s. See, for example, Thing 5573.

Note that ReplicatorG ships with a copy of the 20 mm calibration cube: from the "File" menu select "Examples > calibration > 20mmbox.stl".

Be warned that you do not want to use Print-o-Matic when doing this step as Print-o-Matic will override your width to thickness ratios. On the other hand, you may first want to do a test print with Print-o-Matic: you may find that it computes a perfectly adequate ratio for you.

Switch off acceleration before printing your tests. The print should be filled correctly and not overfilled.


This photo shows a correctly filled cube in the middle, underfilled on the left and overfilled on the right.

  • A indicates gaps between the segments, indicating underfill.
  • B shows overfill up by protruding edges first, then as it gets worse, it will tend to push plastic around on the top surface.
  • C shows good, fill; i.e., segments are joined together.

Once you are satisfied, save your final calibration cube and label it "no acceleration". You will want to refer to this cube, particularly it's corners when tuning your acceleration parameters. Turn acceleration back on.

And now a caveat to put in the back of your head: the diameter of your extruded plastic increases with increasing feed rate. The amount of expansion tapers off but is quite noticeable in the range of 10 to 80 mm/s. This impacts the width to thickness ratio. So, at some point after you have finished all your other calibrations, you may want to go back and revisit the width to thickness ratios while printing with acceleration at your target accelerated feed rates. However, since accelerated printing occurs using a large range of feed rates, there's no single width to thickness ratio which will apply across an entire print when using acceleration.

Step 3: Extdr. Steps/mm

The Jetty Firmware needs to known how many extruder steps it takes to produce a millimeter length of extruded plastic. If you have a Gen 4 LCD Interface, you can use the interface to help you determine this value. This is done with the interface's menu for setting the "Extruder steps/mm" acceleration parameter. At a fast feed rate (e.g., 75 mm/s), output 200 or 400 steps of noodle. Then measure the length and divide it into the number of steps to determine the steps per millimeter. You may want to do this several times and average the values. Note that ooze may contribute an extra millimeter or two to the overall length of the noodle. You may want to subtract that from the measured length if you have a feel for just how much extra oozes out.

If you do not have a Gen 4 LCD Interface, then you can calculate a theoretical value for your bot. See Example 2 of
Jetty Firmware - Setting Parameters without a Gen4 Interface for details.

Step 4: JKN Advance K

The Jetty-Kubicek-Newman (JKN) Advance parameters address extrusion issues associated with accelerating and decelerating molten plastic through the extrusion chamber. Left uncorrected, these issues can result in excess plastic at points of low speed (blobbing) as well as small zits (pimples) and small gaps. In truth, some of these issues are best addressed by using an acceleration-aware slicer or gcode post processor. However, at present no such tools exist.

The first of the two JKN Advance parameters, K, addresses an issue associated with a plastic deficit when accelerating and a plastic surplus when decelerating. You will find a suitable value for K by looking at the corners of your calibration cubes printed with acceleration enabled and at a reasonably fast feed rate. The fill need not be solid. Indeed, printing with 20% infill will also be informative — make sure that it still looks good.

Begin calibrating K by ensuring that acceleration is enabled and setting the JKN Advance K2 parameter to 0. Also, make sure that the maximum X and Y axis acceleration values are at or below 500 mm/s^2 so as to minimize overshoot effects. You will also want a calibration cube sliced at a feed rate of 100 mm/s which you can then print at a high feed rate you have determined your bot can handle. If you do not have a Gen 4 LCD Interface, then see Example 7 of the guide to setting Jetty Firmware acceleration parameters with a modified version of ReplicatorG.

Print a calbration cube with the default K value of 0.00850. Then print two more cubes, one with K set to 0.00500 and another at 0.01000. It can also be helpful to print a cube with K set to 0 for comparison.

What you are looking for is a value of K which helps reduce the amount of extra plastic at the corners but doesn't reduce it so much that the corners start being bevelled (foreshortened) or gaps begin appearing in the solid surface layers (e.g., the cube's top face). As you decrease K below the
optimal value, the fills will be fine but the extra plastic at the corners will begin to increase.

Keep in mind that there is no single "ideal" value for K. You just want to get it into the right range.


In the three cubes shown, the cube on the right with K=0.01000 is showing some gaps and the value of K is too large. The middle cube with K=0.00500 has a nice top surface but the corners might do with a little less plastic (increase K). The left most cube, K=0.00250 could stand to have a better top surface (increase K). A better value of K probably exists between 0.00500 and 0.01000. Note that the firmware's default value is 0.00850 which has been tested on a Thing-O-Matic MK7. Different extruder geometries / gearing will likely need a different value.

Step 5: JKN Advance K2

The JKN Advance K2 parameter further corrects for over pressurization in the extruder during the deceleration phase. This is because the pressurization (acceleration phase), and depressurization (deceleration phase), are non symmetrical in effect.

JKN Advance K2 is used to reduce blobbing and splaying in the corners of cubes and at sharp angles between line segments.

To tune this value, begin by tuning JKN Advance K first as per Step 4. When tuning K2, leave K set to the value you arrived at from that step: do not set K to zero when tuning K2 unless you found zero to be the best choice for K.

Start by printing a calibration cube with K2 set to 0 and 100% fill. Look at the corners, you'll see they protrude in the direction of the filament travel. Increase K2 in units of 0.001 and check again. Keep increasing JKN Advance K2 in units of 0.001 until the corners are pulled in as much as possible.

When JKN Advance K2 is set too high, you'll begin to see breakup in the top surface of the cube.

Note that the firmware's default value is 0.00900 which has been tested on a Thing-O-Matic MK7. Different extruder geometries / gearing will likely need a different value.


All four cubes shown have K=0.00850. The leftmost cube, K2=0.0000, shows the corners when K2 is not applied. The second cube with K2=0.0050 shows a little improvement with the two upper corners not projecting quite as much. The third cube with K2=0.0100 is just beginning to show some of the infill plastic pulling away from the perimeter loops. This is quite noticeable for the final cube with K2=0.0300. A good value of K2 is likely to be found between K2=0.0050 and K2=0.0100. Note that the differences will be more noticeable to you when you have actual cubes in your hands which you can look at from all angles. The pictures here do not fully illustrate the effect of K2 on the prints.

Step 6: Extruder Deprime

The extruder deprime mechanism is intended for preventing blobbing in prints which is caused when the extruder stops turning. This can occur when repositioning the head by gcode, or if there are no print commands that currently need to be executed. During that pause the extruder's ooze may produce an unwanted zit or blob. This can be prevented by having the accelerated firmware do an extruder reversal. This reversal — a "depriming" of the extruder's melt chamber — helps to reduce the chamber's internal pressure and hence reduces oozing. When the firmware resumes printing it can then re-prime the extruder.

Note, however, that this deprime feature of the firmware may not work well with Skeinforge's "Reversal" plugin. They can counter act each other unintentionally. As such, you may find that you need to re-slice a model with Reversal disabled in order for it to work well with the firmware's deprime feature, or alternatively disable deprime, by setting it to 0.


The "Altshell" Skeinforge plugin slices your model such that the exterior shell is printed without acceleration. The inner shells (loops) and any infill are printed with acceleration. This gives you the best of both worlds: fast accelerated printing without any of the minor surface defects that accelerated printing might cause.

To use the Altshell plugin,

  1. Install it as per the setup directions.
  2. In ReplicatorG, use the "Edit Base Profiles…" sub-menu item of the "GCode" menu.
  3. From the pop-up window, select the Skeinforge profile you wish to enable Altshell for and then click the "Edit…" button.
  4. In the resulting "Skeinforge Settings" editing window, select the Altshell plugin and check the "Activate Altshell" check box. If you do not see the Altshell, make sure that the "Profile Type" is "Extrusion" and that the "Craft" collection of plugins is selected. If the Altshell plugin still does not appear, then you likely have not installed the plugin for this version of Skeinforge or the plugin is not correctly installed.
  5. Use the "Save and Close" sub-menu item of the "File" menu to save the change. Finally, click "Done" in the "Edit Profiles" window.
  6. Slice your model using the Skeinforge profile you just edited. The resulting gcode will have standard mcode commands embedded in it which disable acceleration for the outer shell of your sliced model.

When your model is printed, the unaccelerated segments will be feed rate limited using the "maximum speed change" values. That is, the normal maximum feed rate parameters will not be used to limit the constant speeds used for the unaccelerated segments. Instead, the typically smaller maximum speed change values will be used. Thus the outer shell will be printed as though you had sliced the entire model at a much slower feed rate and printed it without acceleration.

As regards tuning Altshell, the only parameters which might be tuned are the maximum speed change values. The use of JKN Advance is disabled for the unaccelerated shell and as such they have no impact on its the appearance. However, it sometimes helps to have more than one shell when appearances matter: even with 100% non-accelerated printing, it is possible to have infill printing effect the outer shell when there is only one shell. For example, the edge of the nozzle barrel may create defects as it scrapes over the print layer surface.

To disable use of Altshell, edit the Skeinforge profile and uncheck the "Activate Altshell" checkbox.

Afterwords: Tunings to do a later day

You may want to adjust the maximum X and Y axis accelerations to get a feel for the degree of overshoot which you find acceptable. The higher the maximum acceleration, the more overshoot you will see on the corners of the calibration cube.

Similarly, increasing the maximum speed change values will decrease your print times. You may want to experiment with increasing the values, particularly those for the X and Y axes. See if increasing them by 10, 20 or 30 mm/s still works fine for your prints.

You can also retune your width to thickness ratios for accelerated printing at your target feed rates. Keep in mind that owing to extrudate swelling, the diameter of your extruded plastic increases with increasing feed rate (up to a point).

[Jetty Firmware - Setup Guide|Setup]]] < < < Tuning > > > Sailfish FAQ

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