Episode 1: Cupcake155 Resurrection Lift-off

After victory and defeats in the early days of 3D printing, I shelved my MakerBot Cupcake until recently. The desire to print has re-emerged in me with a brutal vengeance and print I shall!

While waiting for new electronics to upgrade Cupcake155 with, I opted to get it as far as I could with the stock Gen3 electronics. I’m well-aware of the 3G 5D hack to get the Gen3 board to drive a 4th stepper, for an extruder, but I figured I’d rather not spend time and money on upgrading the Gen3 when there are new boards on the scene.

A n00bs-eye-view

Being away from 3D printing for 6+ years restored my n00b status and at first I was quite confused by the whole work flow of these machines. Here’s what I came to understand after reading a bunch of pages, exploring software and talking to people on IRC:


As it turns out it seems most of these printers are running on derivatives of the gen3 (or at least something in-common), the Arduino platform.
Though there’s a lot of duplication of efforts and lots of variance as people make their own modifications to suit their equipment and goals.

There are various Arduino ‘firmwares’ (I think of them more just as Arduino applications, since they seem to require the Arduino bootloader, which in my brain is the firmware). The one I ended up goofing with is Marlin. Here’s a general list of firmwares for printing.

I did try to get the old school firmware from my Gen3 going, but had serious pains with ReplicatorG. I compiled various versions from source, goofed with its XML backend and so on, but I couldn’t get it load on to my board. In fact, I had a lengthy side project of building an AVR ISP out of a standard Arduino because over the years, my Gen3 board lost its bootloader, somehow. Once I reloaded it, it was fine.


Hardware Supporting Software

In order to load in the Sanguino bootloader, I needed an AVR ISP. I think most people won’t generally need to do this, but if they can’t get their firmware to load, then they may have the same problem I did with their bootloader being stale/failed. I compiled & used the latest release of the Arduino software, though pre-compiled versions should work well. I initially compiled the head version of Arduino and ended up having some problems that I think were caused by things they’re working on, so remember to look for releases to use and be aware if you just compile the head version of a project.

For machine firmware, I opted to try Marlin. I read that their 1.0.1 release is reasonably stable and so I loaded that in to my Arduino application and edited the Configuration.h file to work with my machine. I’ve uploaded my configuration file here.

Key configuration parameters for the Cupcake were available to me in the xml configuration files found in ReplicatorG, which I also tried to get working, but I had very limited success with that.

For the Cupcake, MakerBot has specified the following:

axis id="x" length="100" maxfeedrate="5000" stepspermm="11.767463" endstops="min"
axis id="y" length="100" maxfeedrate="5000" stepspermm="11.767463" endstops="min"
axis id="z" length="100" maxfeedrate="150" stepspermm="320" endstops="min"

These are some of the parameters I used in my configuration file linked above.


When I assembled my Cupcake the instructions had stated that endstops were optional. I kind of wish I didn’t read that part as I think I had some amplified problems due to it. So I took an extra couple days to carefully wire up and test all my endstops. Thankfully most of them worked without any effort. A couple needed some reflow work and one seems to be a write-off. No matter, it seems that the typical configuration these days is to run only with min endstops. I opted to leave out my Z-max, for now.

I used hot glue to secure the cables to the printer body and some zip-straps where I could. I like MakerBot’s choice to use RJ-45 connectors and am kind of disappointed to see it seems that practice didn’t survive.


My original extruder won my hate many years ago so this entire project was actually kicked off by me ordering a modern extruder from ebay. Without any real research or thought I picked an MK8 extruder. It took me some time to figure out how to mount it on cupcake155’s Z platform, but a little patience and scrap aluminum got me most of the way there.

I opted to mount the extruder by removing some screws from it and adding my own external plates. This ate up some of the screw length and on the Stepper-motor side meant my screw was no longer able to reach the threads inside. It took me trips to 6 stores to find a remotely compatible replacement screw. My MK8 extruder uses M3 screws and I figured I needed about 40mm long ones. I could have ordered some, but instead opted for 50mm ones and just used some old stand-offs to deal with the excess length.

Since I’d ordered new boards to replace the Gen3 guts, I didn’t do anything more with the extruder than mount it. Episode 2 will begin to use it.

Host Software

There are various nice looking host software application you can use to at least send your gcode to your printer. Most of them have some support to slice an STL (3D object file) in to gcode for you as well (even if only by launching Skeinforge to slice for you).

Following the advice of someone on IRC, I used Cura as my slicer to generate my gcode. Then I loaded the gcode in to Pronterface and used that to drive my printer.


Working Axes

After a lot of goofing-around, I finally got all X, Y and Z stages working, with end-stops. Here’s proof:


More Information

As I went, I kept a kind of diary of this project on the RepRap Community Forums, here.

I also photo-documented and uploaded to Flickr, here.