=                  : 

on a cheap 3d printer


I recently bought a Chinese MakerBot clone from a friend of a friend as a way to enter the hobby (very cheaply). Throughout the process of getting this thing to work, I've run across a lot of confusing documentation, conventions, and more that I'd like to make more accessible. There's no guarantee that any of this is correct, but the setup I have no is at least working, albeit not well.

First, the name: as best as I can tell, this printer goes by several names. The most common one I've found is simply the "CTC 3D Printer" [1]. CTC's own website seems to list the name as the "CTC Bizer Dual Nozzles 3D Printer" [2]. Others refer to it by generation, either "CTC 1st Generation" or "CTC 2nd Generation" where the only difference seems to be whether it's unpainted (1st) or painted black (2nd) [3]. The manual also refers to it as "FDM 3D Printer" by "Zhuhai CTC Electronic Co, LTD" [4]. Someone else calls it "CTC Creator Dual Printer" and says it's a "Flashforge Creator/Replicator 2 Clone" [5]. Amazon calls it the "CTC Bizer Series Dual Nozzle 3D Printer for Makerbot Replicator 2" [6]. A Google Group [7] has posts referring to a "CTC Dual (Replicator 1 Clone)" [8]. Another name is "CTC FDM 3D Printer" [9] and "CTC-3D" [10].

If all of that looks like a mess, it's because it is. I'm positive that at least some of those posts refer to different printers than the one I have. The problem is that it's almost impossible to know which one is mine based on the information I have, so I had to try all different combinations to find out solutions to problems I faced. It's not even clear if it's a Replicator 1 or 2 clone.


what works


After tinkering for a long time, I've finally got a setup figured out that does produce prints. The software combination I'm using right now is:

  - Fedora 28
  - Ultimaker Cura 3.6.0 (as an AppImage)
  - GNU Awk 4.2.1
  - markwal's GPX at commit ca1dba4dba79b24200a44d5e65a22c867e2e472c
  - "The Creator/1.0" firmware on the printer

The order that I use these tools is:

  1. Design or otherwise get an STL file.
  2. Load this into Cura.
    2a. Center the object and do any scaling that I want.
    2b. Press the "Prepare" button in the bottom right to slice.
    2c. Press the "Save to File" button to save as a G-code file.
  3. Run my Awk script to post-process the G-code.
  4. Run gpx on the output of the Awk script and save to the SD card.


cura profile


My Cura printer profile is, from a new "Custom FFF Printer":


  - X Width "230 mm"
  - Y Depth "145 mm"
  - Z Depth "150 mm"
  - Build plate shape "Rectangular"
  - Origin at center "checked"
  - Heated bed "checked"
  - G-code flavor "Makerbot"
  - X min "20 mm"
  - Y min "10 mm"
  - X max "10 mm"
  - Y max "10 mm"
  - Gantry height "99999999mm"
  - Number of Extruders "2"
  - Start G-Code:

      G90 ; absolute positioning
      G28 ; go home
      G21 ; use mm
      G92 X0 Y0 Z0 A0 B0 ; reset coordinate system to back right top corner
      G1 X-115 Y-72.5
      G92 X0 Y0 Z0 A0 B0 ; reset coordinate system to middle of plate

  - End G-Code:

      G91  ; relative positioning
      G1 Z15.0  ; move plate down a little
      G90  ; absolute positioning

Extruder 1 (right):

  - Nozzle size "0.4 mm"
  - Compatible material dimension "1.75 mm"
  - Nozzle offset X "17.5 mm"
  - Nozzle offset Y "0 mm"
  - Cooling Fan Number "0"
  - Extruder Start G-code:

      ; nothing here

  - Extruder End G-code:

      ; nothing here

Extruder 2 (left):

  - Nozzle size "0.4 mm"
  - Compatible material dimension "1.75 mm"
  - Nozzle offset X "-17.5 mm"
  - Nozzle offset Y "0 mm"
  - Cooling Fan Number "1"
  - Extruder Start G-code:

      ; nothing here

  - Extruder End G-code:

      ; nothing here


  - Generic PLA on Extruder 1
  - Generic PVA on Extruder 2

Print settings:

  - Build Plate Adhesion Type "Raft"
  - Build Plate Adhesion Extruder "Extruder 1"


post processing


After Cura produces the G-code, I still need to do a bit of work. Currently, this is mostly moving the extruder a little closer to the print surface for better surface adhesion. I'm fairly positive this can be done by other tools (maybe even GPX) but doing it this way gives me more confidence that the G-code is doing what I expect.

The script is intended to be used like:

  $ ./fix.awk input.gcode > output.gcode

The code is:

  #!/usr/bin/awk -f
  BEGIN { FS = OFS = " " }
  NR > 17 {
      for (i=1; i<=NF; ++i)
      if (substr($(i),1,1) == "Z") {
          value = substr($(i),2);
          value -= 0.15;
          $(i) = "Z"value;
  1 { print }


gpx configuration


This printer only supports Makerbot-style "X3G" code, which is a binary printer control language [11]. To convert between ASCII G-code to binary X3G, I use a tool called GPX. One quirk of this conversion is that GPX needs to know the printer specs exactly, including how many stepper motor steps to do to move the print head 1mm.

The command line I ultimately use is:

  $ gpx -c ctc.ini -g input.gcode output.x3g

It is very important that the file extension be the lowercase "x3g" or else the printer won't recognize it as a valid file. The "ctc.ini" specifies all the information GPX needs to know about the printer, and follows.


other notes


Here are some details about this printer that don't fit in other sections.

The printer heats up very quickly. I haven't timed it exactly, but it feels like it goes from room temperature to 60 C (bed) and 200 C (extruder) in 2 to 3 minutes. Coming from a printer that I remember requiring 20 to 30 minutes of heating before we could use it at all, then this is remarkably fast. I haven't verified that the thermistor is correct, so it's possible that it's just lying about what temperature it's at. Regardless of this, it seems to be getting hot enough to melt the filament.

I also haven't had to do too much leveling. This is likely a consequence of getting it from a previous owner who did level the plate already, but I also haven't seen it go out-of-level yet. That will be something to keep an eye on.

My printer comes with dual extruders. I initially didn't see the point of them beyond printing in multiple colors, which isn't that big of a deal for me. However, I found some PVA filament that the previous owner included and realized that this was a great use for the dual extruders because it would mean I can wash away supports without having to chip away at them. I haven't gotten this working yet, however.

One upgrade that many people referred to is upgrading the firmware on the printer to Sailfish [3] [5] [10] [12] [13]. I don't have any plans at the moment to do this because it was hard enough getting it to the point it's at now, but I may try this in the future. In particular [10] looks helpful.

Another upgrade is to switch to a glass bed. This may be one of the first upgrades I make, but I haven't decided yet. I understand that it should improve removal of parts, which is one area that I've been having trouble.

Without anything, the adhesion on this printer was pretty bad and most prints would slide around or otherwise fail. I currently have blue painters tape on the printer, but I've been supplementing it with plain white Elmer's glue. I considered a glue stick, but I figured they should be roughly comparable. It has improved adhesion a lot. The only trouble is that it leaves my build plate very messy, which would be fixed by swapping tape between (every few) prints.




I had to find many of these references to the printer online, so I figured it'd be worth collecting some of them along with brief descriptions of their content.

[1]: https://github.com/markwal/GPX/issues/25

A question on the GPX GitHub about optimal settings for the CTC printer. The user mistakenly thought (as did I) that the "Clone R1 Dual with HBP" or "cr1d" for short referred to any clone of the Makerbot Replicator 1, when it actually refers to a very specific one. This is significant because it shows that the CTC isn't just a regular Replicator 1 clone, but something on its own.

[2]: https://www.ctcprinter.com/product_detail.php?ProId=260

This appears to be the official website and product listing for the printer I have. Here it is listed as a "CTC Bizer Dual Nozzles 3D Printer", selling for "$269.99" after being discounted from "$400.00". It has no reviews, but a pretty extensive promotional page, like you'd see on an eBay listing.

[3]: https://www.3dhubs.com/talk/t/ctc-printer-will-not-read-sd-card/5687/2

A post on 3dhubs with the title "CTC printer will not read SD card". This post suggests the "2nd generation = painted black" idea, which matches other references I've found online. One person suggests following the 7.3 style of filenames, but I've not found that to be a problem. As an example, one file I've printed is called "SmallGear.x3g", which is more than 7 letters at the beginning. Ultimately, the thread doesn't get to the idea that it has to be exactly ".x3g" so I believe I had to find that out myself.

[4]: (PDF) https://www.ctc3d-usa.com/wp-content//mainsite/downloads/ctcmanual.pdf

The official manual of CTC hobbyist 3D printers, it seems. It has clear proof of the "1st generation = wood, 2nd = painted black" and also suggests that there's a 3rd generation that is clear plastic, perhaps polycarb? It lists the following information:

  The total volume of printer: 320 * 467 * 381 mm
  Package Size: 565 * 430 * 535 mm
  Weight (with packaging): 15 KG
  Construction size: 225 * 145 * 150 mm
  Input voltage: 220 V
  Power Requirement: 210 V
  Construct platform temperature: about 110
  Nozzle extrusion flow rate is about 24 cc / hr
  Supported operating systems: Windows XP, Windows 7/8 (32/64 bit)
  Software: ReplicatorG (Software is compatible with MakerWare)
  Print materials: ABS, PLA
  Material properties: 3D printing special ABS and PLA
    (only produced in our company)
  Layer precision: 0.1 mm - 0.5 mm
  Position Precision: XY axis 0.011 mm, Z axis 0.0025 mm
  Filament Diameter: ???
  Nozzle diameter: 0.4 mm
  Movement shaft speed: 30 mm / s - 100 mm / s
  Input file types: stl, gcode

Other than that, most of the manual is about how to put the printer together (mine was already put together when I bought it), how to install ReplicatorG (I tried, but couldn't find one that was easy to set up, so I gave up and used Cura/GPX), and how to print with ReplicatorG. It also shows how to install Makerware, but I had troubles with that as well.

The ReplicatorG support seems to be through the USB cable, but I was never able to connect to it correctly. I tried having Cura and RepetierHost talk to the printer over their Makerbot-style of G-code, but they never talked together. I also tried using GNU Screen to connect directly over the TTY but it didn't seem to work, which I attributed to either baud rate problems or not speaking the right protocols. GPX says it has support for talking over a TTY connection, but I have not tried that yet.

Towards the end of the English section, there does seem to be one small reference to the filename extensions supported. It does list them as "x3g" and "s3g" (lowercase), though it doesn't point out this nuance directly. Also, half of the text about that part is in Chinese, which makes it harder to understand for me.

[5]: http://www.soliforum.com/topic/8262/ctc-creator-dual-3d-printer-initial-review/

A post on Soliforum with the title "CTC Creator Dual 3D Printer - Initial Review". This one talks about how it's a "Flashforge Creator/Replicator 2 clone with dual extruders". The model shown appears to be the 1st generation, which based on the user's measurements, has a different build size than the 2nd generation (220x150x150 vs 230x145x150). Overall, the user seems to really like their CTC 1st generation printer, but it's unclear how much of it applies to mine.

[6]: https://www.amazon.com/CTC-Nozzle-Printer-Makerbot-Replicator/dp/B01138KXLS

An Amazon listing by CTC for the "CTC Bizer Series Dual Nozzle 3D Printer for Makerbot Replicator 2". Someone is selling it new for "$599.99". There is one review from someone that appears to really like the printer and says that it's a great starting printer for $550.

[7]: https://groups.google.com/forum/#!forum/ctc3dprinters

A Google Group called "CTC3Dprinters". It seems to have recent posts, though I haven't really looked into them too much. The latest post I see is from about 11 days ago, and they average 1 to 6 posts a month.

[8]: https://groups.google.com/forum/#!topic/ctc3dprinters/PZ1Z-qyXVZs

One post I found that refers to a printer they call "CTC Dual (Replicator 1 Clone) with Laser". Absolutely no idea if this is my printer, but it goes to show just how much variance there is in CTC products.

[9]: https://www.3dhubs.com/talk/t/ctc-fdm-3d-printer-sd-card-content/11206

A question on 3dhubs titled "ctc fdm 3d printer - SD Card content", asking for the original contents of the SD card that came from CTC. The card originally had Windows driver software, ReplicatorG, Makerware, and some test print. There is a Dropbox link that is still active and I saved a copy here. I make no claim to its safety.


[10]: http://wickwire2099.blogspot.com/2015/12/ctc-3d-and-sitall.html

This post covers one person's setup with their "CTC-3D" printer. They ultimately opted for installing Sailfish (which they talk about) and putting in a glass plate. One useful note is that there is a reset button in "a hole near the USB port in the back of the printer". They had to use avrdude to update the firmware, which looked like:

  $ /path/to/avrdude -C/path/to/avrdude.conf -cstk500v1 \
  >   -P/dev/ttyACM0 -b57600 -D \
  > -Uflash:w:/path/to/mighty_one-Sailfish-v7.7.0-r1432.hex:i \
  > -pm1280

Once they ran that, they pushed the reset button while avrdude tried to connect to the chip.

In their post, they also replace the thermistor.

[11]: http://www.sailfishfirmware.com/doc/details-s3g-and-x3g.html

A helpful document from the Sailfish firmware website about the meaning behind "S3G" and "X3G". In short, S3G is short for "Sanguino3 Gcode" and is a binary format for printer controls. X3G is MakerBot's extension of S3G o include a few other commands. It's mostly used because it's a little faster to parse, which helps bad microprocessors.

[12]: https://www.3dhubs.com/talk/t/decent-slicing-software-for-ctc-bizer-dual-extruder/7207

This is a pretty old post on 3dhubs titled "Decent Slicing software for CTC Bizer (Dual Extruder)". It ultimately comes down to people suggesting Simplify3D.

[13]: https://www.3dhubs.com/talk/t/ctc-3d-printer-software-compatibility-general-questions/3932/2

A post on 3dhubs titled "CTC 3D printer software compatibility / general questions". One of the responses suggests uses Octoprint which has a GPX plugin to hand converting between G-code and X3G. This might be useful in the future because it would mean that I could directly control the printer without being required to use the SD card all the time. I think there's more value that can be gotten from the 2nd post in the thread, but not until I try out Octoprint or want to upgrade to Sailfish.

Also, the second poster is the one who wrote [10], so there's that.