Stepstruder Mk6 With Gen3

Please note: The gen3 electronics on most Cupcake CNCs were designed to run only three steppers - those that control the X, Y, and Z axes. As such, running the StepStruder MK6, which adds a stepper motor to the system requires some hardware and firmware hacks that repurpose parts of the Gen3 electronics. For these reasons, we cannot officially support running a StepStruder MK6 with Gen3 electronics.

Just because you have an older Cupcake with Gen3 electronics doesn't mean you have to miss out on the joys of having a stepper-driven extruder!

Strongly recommend using the newer 5D shield mod described in which will make gen3 basically work like gen4 where the 4th stepper driver is driven from the motherboard, not the extruder board. This also allows use of Thing-O-Matic profiles such as MK7 thus making your Cupcake a fully functioning mini T-O-M.


In general, follow the MK6 assembly instructions for your complete or upgrade kit.

Instead of installing a thermocouple, you will install a thermistor. A thermistor is not included, so you will need to supply your own.


Note that this frankencable only works with firmware 2.x. If you want to use firmware 3.x, you have two options. You buy/build a 3G 5D board or you can build the "ugly cable hack" (also described on that board's link). Both methods connect the Stepper Driver board directly to the motherboard instead of to the Extruder Controller.

The electronics assembly instructions will differ quite a bit when assembling for a Cupcake with Gen3 electronics.

The Stepstruder kits come with a v3.3 stepper driver board. To use it, you'll need to create a cable that connects to two places on the extruder controller:

Stepper Driver Extruder Controller
Pin 1 (GND) D10 GND
Pin 2 (GND) D10 GND
Pin 3 (STEP) Quadrature Pin 7
Pin 4 (DIR) Quadrature Pin 8
Pin 5 (Enable) D10 SIGNAL
Pin 6 (Reset) not connected

Here's what it looks like all hooked up.


Constructing the Stepper Cable

To make this cable you'll need:

  • One of the 6-pin IDC connectors included in your kit
  • One of the 10-pin IDC connectors included in your kit
  • The ribbon cable included in your kit
  • A 3-pin 0.1" female header (not included).

TODO: Detailed instructions

For now, here is a closer photo of the connections on the extruder controller.


For images and pinouts of the individual boards, see:

You can see an example wiring using a v2.3 stepper driver on the general stepper extruder page.

A photo of my completed Y-cable, built by following the wiring diagram below. Click the image for other detailed pictures of assembling the cable.


Wiring Diagram:

Based on Schmarty's photos above, I've prepared the following diagram.


You can click this image for higher resolution options that are easier to read. Also note that the dark lines are the wires, not the spaces between the wires.

The Fan!

The Mk6 instructions tell you how to connect the fan to the Gen4 extruder controller. Ignore these! If you want to be able to control the fan, connect it to Mosfet outputs C+ and C- (making sure to get the polarity correct). That way M106 and M107 commands (from Start.gcode or SF) will start and stop the fan (note that this is not an option if you are using an ABP and HBP, there are not enough Mosfets!).
Otherwise just connect the fan into the 12v supply.


It requires a lot of power to warm up the MK5/MK6 heater barrel. This power cannot be delivered by the Extruder Controller. On board FETs will overheat and (if you are lucky) limit the current, or they can fail completely. You'll need the relay board to provide enough current.

The new MK6+ heater system with the safety board has been released and requires that you put the safety relay board in series with the RB1 relay board. The diagram shows the setup without ABP/HBP but that would just connect to output B of the relay board.5971696797_c0d6f60535_b.jpg


Fitting the EC and an extra stepper controller is a tight fit. Get out your Dremel and make it happen!

Alternatively, you can print this thing to mount all three board to the existing holes. If you extend the thermostat wires, the safety cutoff board can share the mounting holes of the relay board on the side opposite the molex connector, allowing you to mount all four boards without drilling anything.

Extruder Controller Firmware Update

A firmware update to the extruder controller (but not the motherboard) is required!

New!!! Pre-compiled firmware, installed through ReplicatorG!

These steps should allow you to upload either of the with-relay and without-relay versions of the stepper extruder firmwares for Gen3 (v.2.X) extruder controllers via ReplicatorG.

  • Choose Machine | Upload new firmware…
  • Choose "Extruder Controller v2.X (Gen3)", and you should see the two options for stepper extruder firmwares:
    • v2.6 for stepper extruder with relays
    • v2.6 for stepper extruder without relays
  • Pick the firmware appropriate for your bot (relays/no relays) and upload to your extruder controller via your proper serial port.
  • Note there are compatibility issues with v2.6 and RepG 25. Update to the latest firmware, otherwise RepG 25 cannot drive the extruder motor from the control panel (although prints are not effected).
  • Note: It might be worthwhile to explore the firmware in the beta channel: At the time of writing this includes firmware 2.81 which fixes some bugs with RepG 25 and the Gen3 Stepstruder setup.

Here is the manual, compile-your-own method.

I used koenkooi's G3Firmware available on GitHub. I believe you'll need the feature-externalstepper-merge branch. Assuming you have Git installed:

$ git clone
$ cd G3Firmware/v2

You can then compile your new firmware as described on the general stepper extruder page. You'll need all of the prerequisites to compile the v2-firmware. Make sure to use the correct flags for your setup if you're using relays or other special features. For example:

$ scons -f SConstruct.extruder extstepper=true stepper=false relays=true

You can then upload your firmware to the extruder controller using your FTDI serial cable and running:

$ scons -f SConstruct.extruder extstepper=true stepper=false relays=true port=/dev/tty.usbserial-XXXXXXXX upload

Be sure to replace the /dev/tty.usbserial-XXXXXXXX above with the actual name of the serial device for your cable, and press reset on the extruder board just before uploading.

Alternate method

These are the steps I used, slightly different from above. Experimental!

I pulled the firmware from here:

$ git clone git://
$ cd G3Firmware/v2/
$ git checkout master

Then in the G3Firmware/v2/src/Extruder/boards/ecv22/ directory, edit the file:

and change the following line:

uint16_t extruder_steps_per_rev = 200;

Change the 200 to 1600:

uint16_t extruder_steps_per_rev = 1600;

It's probably better to change this line to 800, that way when you input 1RPM, you actually get 1RPM

Then from the /v2 directory, run the scons lines from above:

$ scons -f SConstruct.extruder extstepper=true stepper=false relays=true platform=ecv22

You can then upload your firmware to the extruder controller using your FTDI serial cable and running:

$ scons -f SConstruct.extruder extstepper=true stepper=false relays=true platform=ecv22 port=/dev/tty.usbserial-XXXXXXXX upload

Be sure to replace the /dev/tty.usbserial-XXXXXXXX above with the actual name of the serial device for your cable.

Two notes: Using these steps, I had two issues.

  • When I set RPM to 2, I actually get 4. I had to edit my Skeinforge setting to use 1.0 instead of the stock 1.98 rpm.
  • I had to reverse my stepper wire compared to how it's shown in the documentation. In 'forward' I was getting movement in reverse.

I have also documented more about the cable and other steps here:


RPM control in RepG Control Panel

Because a stepper extruder uses RPM instead of PWM values to set extrusion rates, you'll need to configure ReplicatorG to recognize this for your bot.

This page shows how to get RepG to show an RPM box (and ignore the PWM box) when controlling the stepper driver. IMPORTANT, the linked thread gives an example of a MENDEL profile, this profile will NOT work correctly with a Cupcake (the steps per mm are all totally different).

Basically, you'll want to:

  • Open your machines.xml (or machines/cupcake.xml, depending on your version of ReplicatorG).
  • Make a copy of the <machine> descriptor that matches your machine prior to the MK6.
  • Give it a new name like "Cupcake with Stepstruder and ABP", depending on your configuration.
  • Add a motor_steps="3200" to the toolhead definition (you can actually put any number of steps, the true value is stored in the firmware and cannot be changed without compiling a custom firmware)
  • Restart ReplicatorG and select the new entry from the Machines | Driver menu


You'll want to use Skeinforge 35, which contains the tool 'Reversal' which along with performing the anti-ooze reversals, also converts flow rate S codes (that control the PWM for DC extruders) into R codes (that set RPM's for a stepper extruder). Be warned, if you turn off the 'Reversal' tool, SF35 will not generate the correct G-codes.

You can get a starter profile by duplicating the Thing-o-Matic profile that most closely matches yours, and turning off tools that don't apply to your machine, like Home and Wipe. You'll also need to edit the start.gcode and end.gcode files to match your normal startup and cooldown procedures.

Note that the location of the start.gcode and end.gcode files that you should change will be located in the ".replicatorg" folder in your user Home folder (Mac, Windows, and Linux). An easy way to open this folder without activating showing hidden folders is to open CMD (windows) or a terminal (for Mac/Linux), navigate to your Home directory (terminals tend to start in Home directory by default), and type "dir" (windows) or "ls" (Mac/Linux). In RepG 25, you can hit the 'Locate' button when selecting an SF profile to open the folder that profile is stored in.

Do you see the ".replicatorg" folder? if so, type "cd .replicatorg" to navigate into the folder. Then type "open ." (Mac) or "start ." (Windows) (Linux folks know what to do or will use "vi" anyway) — in both cases, type WORD followed by a space, followed by a period. Now you can quickly navigate through the folders to where you need to revise the start.gcode and end.gcode.

Double check the Flow Rate value in the Speed tool to make sure it's a reasonable value, like 1.98. The usual value of 255.0 is great for PWM since it drives a DC motor full speed. 255 RPM is an insane request for the stepper motor. :)

Some default values to try using a MK6 with the new 0.40 nozzle-
Thanks to MakerBot Operator Passim

Layer height (carve): .30
Perimeter Width over Thickness (carve): 1.667
Infill width over Thickness (fill): 1.667
Feed rate (Speed): 32.0
Flow rate (speed): 1.1
Reversal speed RPM: 17.5
Reversal time: 75
Reversal push back: 78
Reversal threshold: 1.0
Activate early pushback: checked

Variable things: Extra shells (2 normally, but less if it has small detail), Solid surfaces - 3 usually.


  • The Cupcake driver for a stepper extruder works differently from the Thing-o-Matic driver:
    • The Cupcake driver emulates the DC motor by accepting speed values (albeit in RPM format) and then following motor on/off commands in the G-Code with a custom stepping routine. (I think?)
    • The Thing-o-Matic driver requires the definition of an "A" axis, which is then hijacked and driven like the other steppers on the machine, albeit triggered by the usual motor on/off codes.
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.