Tag Archives: CTC DIY Prusa i3

3D Printing: Fixing Z Banding

Using a low-cost 3D printer like CTC DIY I3 Pro B (Geeetech I3 Pro B clone) with M8 threaded rods as Z axis with loose or floating ends is what you get – and so also some wobble or banding on the X axis due slightly bent M8 threaded rods – they barely come straight. I hesitated to use lead screws due decrease of resolution (M8: 1 cycle = 1.25mm height, lead screw like TR8x8 (8mm dia, 4 starts, 2mm pitch, 8mm lead => 1 cycle = 8mm height) but otherwise gaining pretty straight lead.

Anyway, I searched Thingiverse for Z mounts for the CTC DIY and found a few, and adapted one design and made a remix Geeetech / CTC Prusa i3 DIY – Z Axis Bracket Remix with printable Bearing:

  • changed structural holes (larger hole -> smaller holes)
  • bearing hole widened to have more floating
  • printable bearing added to restrict end (optional)

New Z bracket mounts (black), without/with printed bearing (white):


And I did a few tests:


Left to right (close-ups photos below):

  1. original Z bracket (wood) apprx. 4mm play
  2. new Z bracket without printed bearing, apprx. 10mm play
  3. new Z bracket with printed bearings (with loose tolerance)
  4. new Z bracket with printed bearings (tight tolerance)

Now comes the surprise, the best surface (best to worst):

  1. no bearings / open floating: gives the smoothest surface, most straight Z edge
  2. tight bearings: gives very good surface, slightly worse than with no bearings
  3. loose bearings: noticeable artifacts / wobble, Z edge wobbly
  4. original bracket: worst wobble of all, Z edge wobbly

Which means, either give it a lot of space so the upper end of the Z threaded rods can float, and thereby the X gantry can stay fixed (and not wobble) – or – fix the threaded rods and suppress wobble (there is still wobble but restricted).  Giving it some space on the top means the inherent wobble of the rod is distributed between top and X gantry – giving wobble artifacts on the print . . .

The issue isn’t simple: with or without fixation gives good results, some fixation gives more bad print results.

Open Ends / Floating

The new Z bracket provides more space for the threaded M8 rods than the original wooden bracket:


Printed Bearings

You may print two bearings (OD 22mm, ID 8mm), make sure to test inner diameter, so the threaded rod slides smoothly – if required use a 8mm drill to widen the inner hole.



Worst Z wobble was with original Z mount with ~4mm play or the loose bearing with apprx. 1-2mm play.

Best results I achieved with floating ends or with tight bearing – in other words, either leave it open or make it stay close, but worst is to give it a little play and threaded rods will show their unevenness on the prints.

I would also guess, the unevenness of the threaded rods and their position to each other also matters, e.g. whether left and right go the same way or cancel each other wobble out. What I noticed was, once I used the printable bearings for a print, and removed it, the threaded rods wobble already less – but as said, best results I achieved with no bearing and wide floating ends or with the tight bearings.

Recommendation: print the mounts, print the two bearings, and print the XYZ Calibration Cube or whatever reference item, and see yourself which option works better for you.

Addendum: M6 Z Axis Conversion

I made a small package Geeetech / CTC DIY I3 Pro B M6 Z Axis Conversion to use M6 threaded rods instead of M8. It made little difference:

  • less wobble, but still wobble despite of “straight” M6 threaded rods
  • wobble seems mostly introduced by the couplers (either printed or PVC pipe):
    • out of center alignment = wobble
    • tilted mounted rods = wobble

It is hard to mount the rods perfectly with the couplers, a little misalignment and one introduces wobble (X/Y wiggle).

Anyway, M6 gives slightly higher resolution in Z axis with 0.005mm per motor step.

3D Printing: Layer Height

Printing with different layer heights with the same nozzle diameter (e.g. 0.4mm) gives quite a range of printing quality and printing time – the higher the quality or lower the layer height the more printing time it takes, the 20mm height XYZ Calibration Cube as an example:


0.05mm layer height / 398 layers / 1.38 hrs

0.1mm lh / 200 layers / 0.73 hrs

0.2mm lh / 100 layers / 0.37 hrs

0.3mm lh / 66 layers / 0.25 hrs

0.32mm lh / 62 layers / 0.23 hrs

0.32mm layer height is 80% of the nozzle diameter, and supposed to be the maximum of layer height.

0.14mm – 0.39mm lh / 64 layers / 0.21 hrs

using the Adaptive Layer Height feature of Cura.

0.4mm lh / 50 layers / 0.18 hrs

obviously too high layer height with 0.4mm on a 0.4mm nozzle, some layers have gaps.

0.4mm w/ 0.6mm nozzle / 50 layers / 0.11 hrs

using 0.6mm nozzle on E3D Volcano clone – not quite tuned with under extrusion on the top (90% flow, with 100% flow the X/Y surfaces were terribly over extruded).

All printed with

  • 60mm/s print @ 190C
  • 80mm/s infill
  • 150mm/s travel
  • 1st layer: 20mm/s print @ 200C


  • a heavily improved CTC DIY I3 Pro B (Geeetech DIY I3 Pro B clone) with
  • Bowden setup and E3D V6 clone hotend,
  • sliced with Cura 3.4,
  • printed with white PLA-R (recycled PLA) by Fabru – it was a custom extrusion based on recycled white PLA, they usually sell only black recycled PLA as of 2018.

While reviewing all the samples, I noticed I could improve the Z banding issue, which still showed a bit – addressed in 3D Printing: Fixing Z Banding; done after all my layer tests.


Layer height 0.05mm and 0.1mm look very alike with this XYZ Calibration Cube – so it’s not really worth 0.05mm but 0.1mm would be sufficient. The Adaptive Layer Height turned out quite well, near the same speed as 0.32mm layer height.

The top surfaces of 0.05mm and 0.1mm are very nice, whereas 0.2mm already shows significant artifacts – best choice would be to print the last layer at 0.1mm layer height.

If one prints large volume, it’s worth to consider a larger nozzle, e.g. 0.6mm nozzle diameter, which outputs 2.25x more material already yet direct drive recommended – I struggled with complex prints with retractions with the Bowden setup.

I usually print at 0.2mm layer height, and if a larger piece is required I increase to 0.3mm – for the future I might switch the Adaptive Layer Height feature in Cura in that case.

3D Printing: CTC DIY I3 with E3D V6 Clone Hotend

E3D-V6-J-editedThe CTC DIY I3 Pro B, a Geeetech I3 Pro clone, is the very low-end of 3d printers – quality and pricewise, and uses a direct drive to feed the filament aka “MK8 Extruder”.  I ordered an E3D V6 clone with 0.2mm-0.4mm short nozzles with optional Volcano hotend for larger diameter nozzles (0.6mm – 1.0mm) from China, at EUR 9 price, as I wanted to

  • print faster, above 100mm/s if possible
  • print thicker or larger layer height to reduce print time for larger volume prints, e.g. 0.6mm – 1.0mm nozzles

and E3D V6 hotend seemed to be the remedy.

First I tried the Bowden setup, then printed an adapter so E3D V6 works with original extruder as well, e.g. direct drive is recommended when printing with flexible filament.

2-in-1 Fan Setup for E3D V6


I used the 2-in-1 fan duct: extruder and filament cooler for E3D V6, it’s low complexity and low mass makes it quite suitable, yet, since only one fan is used, it cools at the first layer already and likely reduce adhesion – not optimal but for now an acceptable compromise. The cooling otherwise is excellent, as good as my “duck beak” fan I had with original setup.

To secure the fan better, I used some rubbery-like glue (when dried) and put it on the end of the clamp of the fan adapter (let it dry first before using), to increase the grip on the hotend – as the fan once fell off while printing when it ran off failed printed filament which was cool and hard already – which would have caused quite a chain of dangerous events (hotend no longer cooled, melting the mounts, falling on the heatbed and heat whatever lies on the bed if the print(er) would have let be unattended).

E3D V6 Radial Fan Fang

20180721_143402After some time I switched to E3D V6 Radial Fan Fang, which uses 5015 radial fan, which turns on at 2nd layer – I used a remix which uses 40x40x10mm fan for the heatsink and replaces the small E3D V6 fan.

If you choose this, file the grip a bit so it attached smoother to the heatsink – my first print broke while attaching.


Quality of E3D V6 Clone

e3dv6-cloneBefore I go into the details, let me comment of the overall building quality of those E3D V6 clones: you get what you pay for, a compromise. My hotend leaked like crazy, at the junction of heatblock & nozzle, and heatblock & heatbreak – which is most annoying, and that did not happen with the original MK8 Extruder.

Remedy: I used teflon thread tape used to seal threads of the heatbreak, on both nozzle and heatbreak thread – this is really suboptimal. The teflon thread melted over time (not right away but after days/weeks), so I didn’t keep it.

hotend-problemUpdate 2: the real problem of leaking was the PTFE/teflon inliner, the end toward the nozzle wasn’t perpendicular sufficiently and likely a bit too short (by less than 1mm) and it was too narrow tube with 3mm OD instead of 4mm and be more tight – so the PLA leaked between the inliner and the threads of the heatbreak and nozzle – so the real remedy is to pay close attention of the length of the inliner (in case the E3D V6 clone comes without it as in my case), and give it 0.5mm to 1mm extend with a clean cut and preferably a conic end which presses then toward the nozzle.

Further, I had to use again a teflon inliner/tube – this wasn’t an all metal hotend, means, I am still limited with limited material choices, staying below 240C to preserve the teflon tube.

But on the upside, the quality of the extrusion was excellent, there was an significant improvement of print quality compared to the old “MK8 Extruder” setup, and I seemed to increase printing speed as I desired:

E3D V6 with Original Extruder


I used an adapter but altered it so it prints without support Simplified E3D V6 mount for CTC Prusa i3 Pro B with original extruder, fortunately it maintains the similar Z and Y distance to the bed as the original hotend, so there is little to change.

And the usual XYZ calibration cube at 60mm/s and 120mm/s:

Since I didn’t upgrade or customize my firmware yet, my thermistor likely reported wrong temperature, as the possibly new type wasn’t properly assigned in the firmware – and I had to reduce print temperature, too much stringing otherwise occured:


The tests reveals that stringing is mainly a problem of nozzle temperature, and much less of retraction length.

XYZ Calibration Cube

Left to right: 60mm/s, 120mm/s and 150mm/s:

Surprisingly it still performed quite well with 120mm/s and 150mm/s, although I doubt 150mm/s were really achieved at this small print.

E3D V6 MK 7 Extruder Settings

  • Printing speed: 60mm/s – 150mm/s
  • Infill speed: 100mm/s – 150mm/s
  • Motion speed: 120mm/s – 150mm/s
  • Retraction distance: 1.5mm

E3D V6 with Bowden Setup

With the Bowden setup one uses a teflon/PTFE tube to put the extruder motor stationary aside and push from there, reducing the moving mass on the X axis and so faster printing speed is possible – but as I found out, with faster printing speed more pressure in the hotend and if the hotend isn’t properly sealed, it will leak quickly.


The first run with Bowden setup, the extruder stepper motor not yet mounted but sitting aside:

With the direct drive I printed at 60mm/s as default, now printing at 80mm/s the XYZ Calibration Cube:

and the results are impressive, left 60mm/s, right 120mm/s:

20180603_061929The two E3D V6 bowden adapters I first printed and used required quite some change in Z height, bringing my Z stopper screw to its limits and also were off in the Y axis – so I designed a more suitable adapter with multiple mounting holes: CTC Prusa I3 Pro B E3D V6 Extruder Adapter V2.2 with a simple extruder motor mount at the top left-hand side of the XZ frame.

E3D V6 Bowden Settings

  • Printing speed: 60mm/s – 150mm/s
  • Infill speed: 100mm/s – 150mm/s
  • Motion speed: 120mm/s – 150mm/s
  • Retraction distance: 2.5mm – 4mm (really depends on the length of the Bowden tube)


Using E3D V6 with a low cost and low quality 3d printer:

Faster printing with improved overall print quality.

Aside of the leaking, which was fixed with teflon thread tape, the E3D V6 clone is a great addition to the CTC DIY I3 Pro B – true added value, but comes with more cumbersome handling with sealing threads when exchanging nozzles.

Btw, in this setup I still use M8 threaded rods in the Z axis, and you see no Z wobble artifacts, the linear threads for the Z axis are overrated – it works with simple M8 threads, if you let the couplers flexible enough, like with this “cheap” clear PVC tube, and not fasten the threads on the top, they have to stay floating.

3D Printing Experiences: 60 Days Later

Some further notes using CTC DIY I3 Pro B 3d printer the past 60 days:

Sample Prints

Propeller Guards

Printing propeller guard at 60mm/s (first started with 40mm/s and then “Tune” -> “Speed” changing from 100% to 150% when I saw first few layers went well) with Kaisertech white PLA @ 210C:

This is quite a hectic print, a lot of motion of the head and relatively narrow infills; 20% infill, 0.3mm layer height with 0.4mm nozzle.


I really like, admire the Platonic Solids, and Johnson Solids, and there is the Sphere – the ultimate archetype of form – and for sake of challenge, I tried to print a 25mm diameter sphere – without support (with it, you won’t get a smooth surface).


The trick which worked, was printing a brim and 50um layer height with slow speed of 15mm/s at height 0-4mm height and then 30 mm/s for the rest, that allowed to print the slope at the bottom of the sphere somewhat, not perfect but good enough for now – I will keep refining the process though.

Many Failures

Additional, my one-side blowing part fan showed its weakness, there is a cooling “shadow” (1st photo below) which shows when printing small objects where the nozzle reaches the same point soon and insufficient cooling is happening: the printing curls up, and causes bad surface in the final print.

Cura has a special mode called “Spiralize Outer Contour” and it prints circular with a steady increase of Z, smoothly, yet, without infill, the top won’t work (2nd photo), and the bottom was very weak that it broke when I tried to remove it (3rd photo).

A simple way to print a smooth sphere is to break it in two halves, and print both hemispheres and glue them together.

Challenge 1st Layer

The first layer is the challenge in 3d printing, because it can fail based on various reasons:

  • not well leveled toward X gantry (level it)
  • dusty surface (clean up)
  • uneven bed itself (use glass)
  • uneven bed while heating up (level in warm/hot bed state)
  • uneven bed while hot (let it in hot state for a few mins and level again)
  • bad filament (change it, keep records)

and I discovered another reason:

  • inconsistent extrusion because of
    • missing steps (clicks) of extrusion, too low temperature (increase temperature of extruder +10C)
    • bad teflon tube (replace it)
    • partially jammed or clogged nozzle (clean it or replace it)

which is hard to determine: one has to observe the first 3 layers closely and if it’s laid down “nicely” (even surface), and see if the width of the laid down filament is consistent, if not and it varies then the filament tends to curl on the nozzle instead to lay down to the bed.

I was in the process printing ~100 pieces, in 12 pieces batch prints, after 5 batches and the first layer failed after 10-11 pieces and I had to abort the print for 10x in sequence (re-level and cleaning bed and otherwise determine the problem) until I realized it was the worn out teflon tube, after I replaced it the following prints worked well again.

The past weeks I discovered the hotter the filament, the more likely a good first layer, but you have to print the next layers a bit cooler, otherwise the final surface come out smooth. So, with Cura you can set “Printing Temperature Initial Layer” and increase +10C to the normal printing temperature.

CTC DIY Bad Print Reasons and Remedies

These are the issues I encountered the past 60 days:

  1. two screws which hold the “L” with the extruder on the X axis, they tend to get loose and X motion will change Z level, or give bad layers once in a while when it tilts – retighten those two screws
  2. nozzle gets loose with time giving bad quality prints (e.g. after a few weeks), retighten in hot state (at 215C for example), not too tight
  3. screws and zip ties of the Y bed get loose giving bad quality prints – remove heatbed and rethighten all screws if necessary and retighten or replace the zip ties
  4. recheck X belt tension and Y belt tension
  5. recheck Y motor holding, best fasten entire Y motor at the back with zip ties
  6. refasten screws which connect XZ frame with Z motors
  7. recheck the teflon tube whether malformed or has residue (replace)
  8. clean the nozzle with a fitting drill (e.g. 0.4mm) or cold pull

Changing Filament

Push/pull method:

  1. preheat nozzle (with LCD Controller manually, or with Cura) to 215C for PLA
  2. push manually the filament into the extruder ~2cm firmly, if it goes easy then do 3), if not, wait for a few seconds, and push again (it has to go easy)
  3. swiftly pull out the filament – most of the times the break will happen below heater block; a few times a thin break happens which blocks the extruder wheel
  4. push in new filament manually and push old filament out the nozzle until new filament shows up

Just for the fun of it: seamless (without interrupting printing) changing filament

Continually or seamless change PLA filament:

  1. preheat nozzle (with LCD Controller manually, or Cura) to 215C for PLA – or you are in the midst of an existing print job
  2. cut perpendicular (not pointy) filament few millimeter above the extruder
  3. cut perpendicular new filament (not pointy)
  4. extrude more filament (with LCD controller or Cura) until old filament disappears into the feeder
  5. insert new filament so there is a seamless continuation of filament (too much force screws up Z layer height, too little force doesn’t take up the new filament)
  6. hopefully the new filament pushes the old one nicely through

Improving CTC DIY Prusa i3 Pro B

Replacing Pulleys

After some hesitation, I replaced the white plastic pulleys and printed pulley holders for the new GT2 metal 16 teeth pulleys, also for the X and Y motor, with the existing bearings (MF85ZZ: 8mm outer diameter, 5mm inner):


I printed a small washer (in white PLA) (8mm outer, 5mm inner, and 2.5mm thick) so the pulley would stay more centered and not move or wobble like the older/original pulley holders.

Replacing Y Bed Bracket

Quite an obvious move, when you look at the way the bed it attached with the Y belt it’s not parallel, and I felt this will interfere with precision in Y axis in general – so I used this CTC Prusa Y Belt Holder / Bracket to replace it:



And now the belt is parallel to each other and the smooth rods and threaded rods as you can see.

Stabilizing Y Bed on XZ Frame

The Y bed is just fastened at the back and in the middle with the XZ frame, and it’s quite wobbly – so I tightly fastened with two more M10 nuts and washers.

Note: Although the upgrade looks simple, but it is not: when you fasten the M10 nuts on the XZ frame, do this while the printer sits properly on a table (which is cumbersome) – fastening the nuts in another position will results in a skewed geometry of the printer (happened to me at first).

After this upgrade most flimsyness of the frame has vanished, which otherwise this 3d printer is known for.

Cooling the Extruder

CTC did a sloppy extruder construction: when you look closely you see a small black screw holding the heating screw but also doesn’t allow the cooler seamless attach the aluminium block – there are several remedies, I choose to give the screw a bit space by drilling a small dent into the cooler (you know where to drill as the screw likely has hinted the position already):

So now the cooler makes good contact to the aluminium block which transfers the heat of the extruder/nozzle.

Replacing Fan Blades, Adding Fan Covers


I broke one of the fans and I tried to replace it. Unfortunately to remove the old fan blades is a tricky thing and I broke the fan – the proper way is to remove the label at the back, push the blades on the other side so the pin comes out where the label was – and remove the ring coming out – this allows to remove the blades from the fan.

To secure the blades better, I printed two fan covers for those 40mm x 10mm fans, one for the extruder fan, and one for the part fan.


Further, the fast X axis movement doesn’t do good on the fans – and so just after 2 weeks with the new part fan cooler, it already makes noises when starting up – as if the initial tilt of the fan being in resonance and not able to achieve full speed; a gentle tap on the fan cover brings it out of resonance – this isn’t a good solution though.

Z Motor Stand

20180520_124738It bothered me at the very beginning, and finally resolved it: the Z Motors are lifted 8mm in air with a bracket, the force from the XZ frame and the smooth rods is distributed between just three screws, whereas the most tear is just on one screw – it’s fairly simple to make some stand so the entire Z motor takes some weight as well and adds stability.

Download the STL of the “Z Motor stand” at thingiverse and print it yourself.

Y Bed Cable Chain

The past weeks I noticed the narrow bending of the cables at the Y heating bed and it eventually will break there. So I searched on Thingiverse for some solution, and I found Cable Chain with a nice cable chain element:

Note: You must mirror both mounts (left <=> right) – within Cura use the Mirror Tool –  the mount on the side (CTC_Y_base_mount.stl), and the mount on the bed (CTC_Y_bed_mount_bottom.stl) – because the original setup is meant for the left side, but if you do that you have to switch the back planes of the Y bed to move the Y stopper switch on the other (right) side, but you can avoid this by mirroring both mounts before you print them.

The cables of the heat bed and termsistor were sufficient long to be wired via the right side, and then below the bed to the left side where the controller board resides.

Update: I moved the cable chain mount up ~1cm on the side and not reuse the screw which holds the power connector but drilled a dedicated hole – which makes the cable chain fairly horizontal now.

Documenting XYZ Cube and other Prints

One of my habits is to document things properly through time so I can fine-tune things I did already and review changes, in particular with 3d printing, using the 20mm XYZ calibration cube, writing down

  • date
  • printing speed [mm/s]
  • filament brand
  • extruder temperature [C]
  • infill [%]
  • layer height [mm]
  • special features (e.g. brim, raft, etc)


It helps me to review:

  • whether my changes on the printer increased or decreased the printing quality
  • whether filament from the same source but different color have different settings
  • whether filament quality decreased due my own storage

Software Tools

Mostly I use

  • OpenJSCAD.org, a local copy of it to be precise (offline), whenever I have a common theme or functionality, when special features become functions and things a composed programmatically,
  • OpenSCAD.org, the known scripted CAD approach, and
  • for WYSIWYG-like I use TinkerCAD.com for quick and simple models (online) but save all models as STL as backup.

For Linux users, as viewer I use

  • MeshLab (apt install meshlab) and ensured it’s the primary application for .stl files – for Ubuntu 18.04 LTS you have to edit /usr/share/applications/meshlab.desktop, ensure “%f” is added in the “Exec=meshlab” line:
[Desktop Entry]
GenericName=Mesh processing
GenericName[en_GB]=Mesh processing
Comment=View and process meshes
Exec=meshlab %f

and I installed the STL thumbnailer for Nautilus (GNOME default file browser) as well:

Screenshot from 2018-05-12 21-03-19


From now on I will post smaller blog posts more focuses on particular issues, and tag them with “3d printing” and alike.

3D Printing Experiences: 30 Days Later

After 30 days after receiving the CTC DIY Prusa i3 3d printer, here some notes of what I did:

Sample Prints

I choose the “easter eggs” series as designed by Antonin Nosek as sample print to tune and review my machine settings (extrusion flow, nozzle temperature, printing speed) and compare the quality of the results:

For now I used “Sienoc” branded PLA filament (purple, black) which performed well (adhesion, printability), “Kaisertech” white PLA which was OK, and a collection of 20 colors of PLA of unknown brand each 10m for smaller prints (required 215C instead of 200C).

  • “Voronoi Loopy” egg stresses the 3d printer with short segments, stringing issues will show up if temperature is not well tuned (much stringing, likely too high temperature, increase travel speed)
  • “Plain” egg I used for general temperature setting

Here are few brief video samples of printing pieces at difference challenges:

Easter Eggs

The easter egg “minecraft” version on the lefthand side usually requires support to print the overhangs, but at 40% size (~25mm height) with sufficient cooling at the nozzle/part extrusion it prints properly without support, printed at 60mm/s (black PLA by Sienoc @ 200C).

Easter Egg “Voronoi Loopy”

The easter egg “Voronoi Loopy” is a bit of torture for the 3d printer, as the layers are chopped into many very small segments which in 3d form many loops covering the surface. It’s printed at 0.2mm layer height and 60mm/s printing speed, but since it’s printed at 0% infill that speed is not reached – black PLA by Sienoc @ 200C.

Bathtub Plug

A friend required a fitting plug for a bathtub and I quickly made a small cylinder or rather cone with two different radius. Since it was used in outdoor and forcefully inserted, I printed it with 30% infill and 0.3mm layer height (with 0.4mm nozzle) and 80mm/s printing speed to save time, printed with black PLA by Sienoc @ 200C.

LED Strip

I already added a white LED nearly the nozzle, which highlights the immediate printing areas but I wanted to have good light for the overall printing – so I added a LED strip along the inner XZ frame.


Bed Surface

Using original blue tape strips eventually gets ripped and damaged with a lot of printing and I ended up replacing it. At first I tried to put entire blue tape sheets on the bed, but those worked terribly: the tape was so adhesive to the printed parts, that the tape ripped easy from the bed, and some tape remained on the parts bottom even.

As next I’ve got a stickable printing surface, which worked very well at first but after a few prints had hard time to get a good first layer regardless at which bed temperature, the filament didn’t stick well on the surface but curled among the nozzle.

Currently I used the black stickable surface and blue tape sheets on top, until I found a better solution.

  • Black Stickable Surface: at first worked good, but then had unreliable 1st layers often – it seemed to me it’s more critical to the bed leveling, too small or too big distance and the 1st layer will fail, and filament curl on the nozzle.
  • Blue Tape Sheet: PLA sticks (too) well, but rips from the bed when removing the part; unless you wait the bed cools off down to 20C, but for larger parts with a lot of area at the first layer, I ripped off the sheet from the bed.
  • Blue Tape: the original tape worked very well, the PLA sticked well and very tolerant to bed leveling, and printed parts were able to remove easily – large 1st layer area one has to use a tool to left the parts; with frequent use the tape loses some of the adhesive quality of the prints.

Networked 3D Printer with OctoPrint

20180506_182205I used this guide to add OctoPrint to Orange Pi Zero, and used the 3d printable case I developed for OP Zero to mount the device to the frame.

To use OctoPrint with Cura:

  • enable the OctoPrint Plugin within Cura (“Plugins” -> “Browse Plugins” -> “Octoprint” -> “Download” and restart Cura then)
  • “Printer” -> “Manage Printer” -> click on “Connect OctoPrint”
  • enter IP, API Key (visit OctoPrint direct in your browser, and “Server” -> “API Key” and copy) and paste API Key in Cura:Octoprint
  • it will look up API Key and give “OK”

As next instead of “Print to USB” it will show option “Print with OctoPrint” in Cura.

Fastening Y Motor

I noticed that the Y motor mount wasn’t really well fastened and those two tiny M3 nuts worked themselves into the wood – a disaster waiting to happend – and I replaced the mount and used two zip ties to firmly mount the motor to the back plane – just in case.

Additionally I printed an Y Motor mount (read the comments there) or alternatively this version might work as well – as another spare one.

That’s it . . .

CTC DIY Prusa i3 (CTC DIY i3 Pro B) – Most Affordable 3D Printer (2018)

s-l1600 (2)Updates

2018/03/26: Initial post with description, assembling and first test print.
2018/03/27: Board identified as “Anet A1284-Base-Control Board V1.0”. More details on adding a printer to Cura and included brief video of the first print.
2018/03/28: fan duct added, replaced broken extruder fan (see section “Fixes & Upgrades”)
2018/03/29: added white LED near nozzle, XYZ calibration cube fan vs fanless printing.
2018/03/30: added serial plate and label plate, calibrating X and Y axis properly.
2018/04/19: cables sorting
2018/04/23: printed X gantry/axis parts and replaced them
2018/04/25: refasten screws & cable binders of Y carriage


Back in 2013 I’ve got pulled into 3D Printing and did some work on

  • theoretical issues (2013) and
  • software (coauthor of OpenJSCAD.org, 2013-2016)
  • and briefly cooperated with a small 3d printer company, where I printed my first pieces as part of testing 3d printers

but I didn’t own a 3d printer myself until 2018/03/21 – roughly 5 years later – when I ordered an DE A8 3D Printer DIY i3 Upgradest High Precision Reprap Prusa 3d Drucker” for EUR 99.00 (apprx. USD 120) shipment from and to Germany included – that is by far the most affordable 3d printer I ever saw (2018/03).

s-l1600 (1)As the product image shows – it is hastly translated from english to german, and doesn’t make a very serious impression. After some research I realized it’s an CTC DIY Prusa i3 aka CTC DIY i3 Pro B (product link valid 2018/03/22) sold for USD 140, produced by Zhuhai CTC Electronic Ltd located at Zhuhai City, Guangdong, China – located at another peninsula west of Shenzen and Hong Kong. On further investigation I found out that the CTC DIY I3 Pro B is a clone of Geeetech DIY I3 Pro B, which is advertised as “Geeetech I3 pro is based on the Reprap open source project. Geeetech I3 is highly recommended for students and beginners who want to start journey in 3d printing technology.”

Technical Specifications

  • Method: FDM (Fused Deposition Method)
  • Volume: 200mm x 200mm x 180mm (X Y Z)
  • Printing Resolution: 100um
  • Layer Precision: 50-100um
  • Filament Diameter: 1.75mm
  • Material: PLA (platform 50-60C), ABS (platform 110C)
  • Nozzle Diameter: 0.4mm
  • Mechanical Positioning:
    • XY: 11um
    • Z: 25um
  • Speed Positioning: 300mm/s, 100mm/s
  • Recommended Nozzle Speed: 35-40mm/s
  • Power: 220V / 80W
  • Connectivity: USB & SD Card
  • Product Size: 36cm x 38cm x 43cm
  • Transport Package: 50cm x 42cm x 23cm, 9.13kg

(Numbers taken from the flyer 2018/03/24)


After 2 days, after ordering on Ebay.de, it arrived with DHL, a 9kg (20lbs) package.

The package is well composed, most parts are marked, some of the labels didn’t stick to the parts though. The controller board is orange with an ATMEGA 1284P in the center, with all connectors well labeled – it seems it’s loosely identified as “Anet A1284-Base-Control Board V1.0”. Gcode M115, which identifies the firmware, responds as

Marlin V1; Sprinter/grbl mashup for gen6 FIRMWARE_URL:https://github.com/ErikZalm/Marlin/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:I3 Pro B EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000

The shipped 3d printer does not match the photos in the Ebay posting, therefore the product link to the CTC manufacturer is also not correct. It turns out it’s either another version of the “CTC DIY I3 Pro B” or a remix of another line, the included manual states it’s a “CTC DIY Printer” by “Zhuhai CTC Electronic Co., Ltd”.

Here the main differences:

  • LCD has 5 buttons – advertising shows a dialer with integrated push button
  • controller board is orange with green power connectors, stepper motors drivers are soldered on (cannot be replaced) – advertising shows board with replaceable stepper motor drivers
  • heating bed is aluminium with blue tape already on – advertising shows orange/red heating bed with a glass plate

The only things I thought was missing was

  1. the small fan near the controller board, the screws and distance tubes were included (stepper motors drivers have passive coolers attached), perhaps they meant the fan attached to the extruder (which is included) . . .
  2. on/off switch for the main power, a small hole (~4.8cm x ~2.6cm) is prepared, but none was included

20180324_132223The XZ frame comes with a small plate “CTC Y 3228”, which likely is the serial number of this frame/printer.


The included manual (diy-manual) on the CD is cumbersome to read – so here the assembling procedure which worked for me and for my own future reference:

Mechanical Assembling

I realized to first assemble mechanically and then electrical (wires) is the best procedure; also re-fasten all screws of the preassembled pieces to ensure the stability.

Here as reference the 3 axis as mentioned further below:


  1. nut-washer-screwuse the two sheets/feets so the XZ frame stands upward, the larger ventilation grill comes to the right-hand side when looking to the front; use M3 with washer on the front, and the nut within the sheets/feet; don’t tighten it too much otherwise you will crush the wood.
  2. the right-hand middle screw at the XZ frame has to be flat without a washer this screw otherwise crashes later with the X axis moving up/down the Z axis.
  3. add the two Z axis stepper motors, the one with the end stopper switch comes at the left-hand side, again M3 with washers and nuts.
  4. add the X axis:
    1. the X axis stepper motor goes on the left-hand side
    2. insert the threaded rods, the flexible tubes looking downside (thread them from bottom to top) – a bit time consuming
    3. the X axis with the threaded rods push unto the flexible couplers on the stepper motors, at least 1cm or 1/2″ on the stepper motor, leave 0.5-1.0cm or 1/4″-1/2″ spacing between stepper motor shaft and threaded rods (I have seen others leaving little space, but larger distance worked for me so far)
    4. twist threaded rods so X axis is visually horizontal (fine tuning comes later)
    5. insert the smooth rods (no threads), the holes at the stepper motors require some filing (use the included grater), the smooth rods get pushed apprx. 5mm in
    6. insert the top ends which fixates the smooth rods but not the threaded rods (those have to stay floating)
  5. add Y axis, since it’s mostly prepared already you just lay it into the XZ frame, with the stepper motor behind, two additional (unfastened) sheets to attach the Y axis with its larger threaded rods to the XZ frame
  6. add printer head: take it apart (first the nozzle and then L shaped support), use prepared M3 to attach the L and then add the printer head (without nozzle) to it, and then add the nozzle again (screw it with the cable looking left-hand side, once fully screwed on they look on the left-hand side again).
  7. add LCD screen on the top of the XZ frame20180324_151149
  8. add power supply on the right-hand side (looking from the front), just three M3 (one corner of the power supply is in the air), the electrical connectors are looking downward
  9. add controller board on the left-hand side

this finishes the mechanical assembling.

Electrical Assembling

Attaching all the cables to the controller board is easy since all connectors are labeled:

  1. add main 12V power from the power supply to the controller board
  2. attach the 2 long stepper motor cables (one end fits stepper motor, other connector to board – not interchangeable) to
    1. the right Z axis stepper motor (not moving)
    2. the extruder stepper motor (moving)20180324_134010
  3. attach the shorter stepper motor cables to
    1. the left Z axis stepper motor (not moving)
    2. the X axis stepper motor (moving)
    3. the Y axis stepper motor (not moving)
  4. attach the thermistors
    1. E/T: extruder thermistor
    2. B/T: bed thermistor
  5. attach the stopper switches:
    1. S/X: stop X axis
    2. S/Y: stop Y axis
    3. S/Z: stop Z axis
  6. attach extruder fan to “FAN2” on the controller (always on, but anoying but if you print larger pieces, the extrude fan must be running at first layer already)
  7. attach heating bed power to “BED” (polarity doesn’t matter here)
  8. attach extruder heating power
  9. attach LCD display with marked “LCD” on the controller (one connector aside remains empty)
  10. attach main power cable 110V / 220V to the power supply (don’t plug power yet): european standard: green/yellow = GROUND(3), blue = NEUTRAL(2), brown = LIVE(1)20180325_121125

before you bundle the cables, control all connections again – missing or mixing up just one connector can damage the 3d printer once powered on.

Make sure the correct voltage 110V or 220V is chosen at the power supply (default 220V).

As next bundle

  • all wires from the print head, with the black plastic wire bundler, these wires move the most
  • all wires from the heating bed (heating and thermistor) with zip ties, and slightly lift them up so they don’t lay on the Y axis frame near the bottom otherwise the zip ties will eventually hang themselves there and block Y movement
  • bundle the other wires neatly with isolated wires or zip ties spiral cable wrappers (only one is included, so get 2m extra) – on a 2nd thought avoid zip ties as they tend to hang somewhere when on moving parts


Adjusting X axis Height

This part is crucial for the geometric accuracy of all your prints:

  • use any kind of item with a certain length, a pencil, a stick, or a ruler – whatever, long and short enough to match the height of your X axis (moving up/down the Z axis)
  • put the item on the bottom of the left Z axis stepper motor and adjust the height manually by twisting the Z axis manually until the item touches the X axis; you might have to adjust the right side as well to stay somewhat horizonally
  • now move the item to the right side of the X axis, and measure the same distance and adjust the height of the right side
  • now both sides have the same distance to the bottom (the stepper motors at the bottom) – which means, the X axis is now perfectly horizontal

As next make sure the Z axis stopper on the left-hand side near the bottom, that screw coming down on the X axis is fully extended: move the nuts up so the screws extends down and reaches the stopper early.

Adjusting Printing Bed aka Bed Leveling

20180325_125605When all is assembled mechanically and electrically, you turn on the machine; the LCD display should light up in blue with white letters.

Note: when the printer is powered on, the stepper motors become active and hold their position, you can’t or shouldn’t move the X or Y axis manually anymore, unless you choose in the menu “Prepare -> Disable Stepper Motors”

  • choose “Prepare -> Auto Home”; and carefully watch the printing head moving left to X axis home, moving backward with Y axis to home and Z axis downward:
    • if the screw hitting the Z axis end stopper missed, push the stopper before with your fingers, you otherwise damage your printer
    • if the screw hits the stopper, good
  • you likely have too much space between the nozzle and the printing bed
    1. adjust the screw hitting the stopper to minimize the distance of the nozzle to the end, hit “Prepare -> Auto Home” until the nozzle is within 0-3mm distance of the bed
    2. hit “Prepare -> Disable Stepper Motors”,
      1. adjust the bed with the manual fly nuts, put a piece of paper on the bed, and adjust distance so the nozzle barely touches the paper (left/front side of the bed), then
      2. move the printer head on the X axis manually to the right side, and adjust right/front side alike , then
      3. move the Y axis forward manually so you reach the end of bed (right/end side), adjust height, and
      4. move the printer head on the X axis so you reach (left/end side) and adjust the height as well,
      5. and repeat it once more to make sure the nozzle is 0.1mm distance from the bed (that’s the thickness of a piece of paper)

You have now adjusted the printing bed, you are ready to print now.

Installing Cura

The included Cura slicer and front-end on the CD (as in my case) is of version 14.07 (roughly 5 years old) and has no Linux version, as of 2018 I can’t even find a binary anymore for Linux – so I installed the latest on my Linux laptop; you download Cura-3.2.1.AppImage or something newer, once downloaded you execute it direct (it does no install) with right mouse click and “Execute”; under Windows or Mac it may install differently.

Once Cura started up:

  1. add a new printer
    1. choose “Other” -> “Prusa i3 Mk2” as type
    2. name it “CTC DIY i3 Pro B” or something like this
    3. Printer Setting:
      • enter as printing volume: X = 200mm, Y = 200mm, Z = 180mm
      • select “Reprap” or “Marlin” as GCode flavor
      • select “[x] Heated Bed”
      • you don’t have to edit the Start or End Gcode
    4. Extruder Setting:
      • define the nozzle 0.4mm and filament 1.75mm diameter
  2. open xyzCalibrationcube.stl (download .zip and unpack it)
  3. it will slice right away once it appears on the virtual printing bed

First Test Print

Best choose PLA in Cura as a first test print, it’s easier to print.

  • Connect the controller board with your computer with the USB cable.
  • Go into the menu of LCD display (with 5 buttons, “up/down/left/right” and “select” at the center), and choose “Prepare -> Preheat -> Preheat PLA 1”, and wait 60 seconds, then
  1. cut the filament so you get a sharp pointy end
  2. push the filament into the printing head (the 2nd hole closer to you)
  3. start the print of the “XYZ Calibration Cube” on your computer:
    1. choose triangle near right-side bottom of the CURA window, deselect “save to …” but change to “print to USB”
    2. then press that button
  4. the printer will now start to heat the bed to 55C (takes longer) and the printer head (faster heating because it’s a smaller heating mass) to 210C20180325_144700
  5. after 60-90 seconds when those temperatures are reached your print will start
    1. it first auto home (X=Y=Z= 0) and then will try to push out some PLA just to clear the nozzle, at your first print this might not happen right away, because the filament isn’t far enough through the nozzle yet
    2. it will try to print a circumference of the test print, wait and see if any PLA comes out of the nozzle, if you see the actual cube or test print you chose is about to be printed, and still no PLA comes out, try to push the filament into the printer head or abort the print and when the printer head is stopped, push the filament into the printer head (perhaps try to pull and push again to see where the filament is blocked)
    3. start the test print again, eventually the PLA comes out of the nozzle
      • if no PLA comes out, repeat 5.1
      • if PLA comes out, and attaches to the bed, you likely have a successful first print ahead
      • if PLA comes out and doesn’t attach to the bed but creates a mess, abort the print and check “Adjusting Printing Bed” again

In my case the bed was too close to the bed, so the test cube was too firmly attached to the tape that I ripped the tape off the bed when removing the test cube.

The very first test print worked extremely well, beyond my expectations – no Z wobble at all, some stringing at “X” and “Y” though.

Fixes & Upgrades

Filament Guide & Cleaner

  • filament guide and cleaner:
  • 2nd filament guide for holding the wires of the printer head

Extruder & Part Fan

I had attached the extruder fan to “FAN2” which is an always on 12V source (surely can be turned off), the fan ran for few minutes and died; I replaced it and attached it to “FAN1” which turns on after 2nd layer of printing which is sufficient and kept it there, as I printed once a large piece which caused the extruder heat up so much that filament got stuck – so it’s remained on “FAN2” (always on).

  • 40mm fan duct for CTC Prusa (printed with “support” enabled) as part fan attached electrically to extruder fan which is connected to “FAN1” on the controller, which turns on at 2nd layer printing20180328_170516
  • after the 40mm fan duct “part fan” attached the prints significantly improved, for example #3dbenchy I would have dared to print without fan, still a bit stringing but overall a very good print:
  • fan vs fanless printing side-by-side:

White LED

Adding white LED near the nozzle for better viewing, attached to “FAN2” on the controller board (always on), 1K resistor in series with LED on 12V.20180329_184236



I thought the printer lacks proper labels, also one of the reasons it’s sold in so many variants and you don’t know what kind of “CTC DIY I3” you get.

  • label plate “CTC DIY I3 Pro B”  (just press “Generate STL” -> “Download”) or download STL
    Hint: your printer must be calibrated, even 1% margin will make the label not fit – best print 2-3 layers first, then abort print and measure hole-to-hole (centers), and then rescale piece (100%/your-length*157.5) in Cura so the distance of the holes fit 157.5mm distance finally – see next section “X & Y Axis Calibration”.
  • serial plate “CTC A9999” and check Description, edit your serial number & press “Update”, then press “Generate STL” -> “Download”

X & Y Axis Calibration

When I printed the labels I realized my X and Y axis were off by 1.49% each, which made more than 2mm on 150mm distance (way too much); I printed out an “L shape” of 150mm length 10mm wide X and Y axis, and measured the length, apprx, 147.8mm. I went into the LCD menu “Control -> Motion -> XSteps/mm & YSteps/mm”:

Current settings:

  • XSteps/mm: 78.74
  • YSteps/mm: 78.74

and calculated 78.74 / 147.8 (measured) * 150 (should be) = 79.91

New settings:

  • XSteps/mm: 79.91
  • YSteps/mm: 79.91

I printed out the “L 150mm” again, and remeasured: 147.8mm – it made no difference, checking back the settings they were reset back to 78.74. So, I could edit it, but it had no effect whatsoever . . .

Using Repetier helped as I was able to manually send Gcode without actually printing anything and checking back with the LCD menu, and so reconfigured it to enter “M92 X79.91″ which was set as “XSteps/mm 79.9” when reading back in the LCD menu – when I printed with Repetier the L shape again I ended up with 149.5mm instead of 150mm, still a bit off.

I decided to stay for now with Cura – as I’m used to it right now – and after some additional test prints I ended up adding following “Start Code” in Cura at the bottom of the existing code:

M92 X80.27 ; change xsteps to 80.27 per mm
M92 Y80.27 ; change ysteps to 80.27 per mm

Screenshot from 2018-03-31 12-25-17

That finally worked, the L shape of 150mm ended up with 150.0mm (+/- 0.2mm) as measured with a ruler.

Even though I printed out the 20mm calibration cube, the 1% or 0.2mm I could hardly see with the simple ruler (right, require analog or digital caliper) – the Z axis seems fine but needs verification as well.

Update 2018/04/25

After a lot of tuning, I ended up with this single line

M92 X80 Y80 E96

which sets X & Y Steps per second as well the extrusion flow (instead using 105 steps as the default and reduce by 95% you define E96 and stay with 100% extrusion flow).


I used some more cable spirals to sort the cables better and give them some kind of stiffness while still being flexible, e.g. the Y axis cable I lifted up so it stays flexible and won’t catch on anything while moving:

What’s left to do it is a cover over the controller board.

Replacing X Gantry/Axis Parts

I finally dared to print the X gantry/axis parts as enclosed on the CD I received, and replaced the black parts:

I had to remove the XZ Frame flatter screw as it touched the X pulley on the right side slighly at the same Z height – and I didn’t want X position errors at that particular Z height. Also, the Z Stopper seemed now too far on the right, and the screw pushing on the stopper too far on the right, so I printed a 10mm wide 5mm height cylinder with 2.8mm hole inside, which I screwed on the bottom of the M3 Z Stopper screw which extends the area and now reliably pushes the X Stopper switch.

Loose Screws & Cablebinders: Y carriage

After roughly a month of usage, the printed started to make noises, more so the bed leveling was almost impossible to perform, after each print the level was misaligned and I wondered. Finally I removed the heatbed and retighten all screws and nuts and refastened the cable binders which held the linear bearings of the Y carriage.

That made a huge difference . . . I was finally to print again 60mm/s and most of the stringing went away due the higher speed; I even printed at 80mm/s at still acceptable quality. The entire printer sounded now differently, it mad an immense impact to retightend those screws, it did not just affect Y axis, but also the X axis – and the overall prints are cleaner, more precise and I’m able to print at higher speeds without loss but actual gain of printing quality.


This 3D Printer is the low cost hobbyist or entry-level “maker” approach to 3D printing – and even when you end up with a broken printer, the parts are worth it as you likely are unable to source the parts yourself for less than EUR 100 with shipment.

Expect to invest heavily in regards of time to educate yourself and fine-tune your printer and extend it so it becomes easy to use.

It is worth it – but what you order might not what you get . . . 



  • 1kg PLA “Sienoc” purple (2018/03): nice color, bed adhesion ok, printed at 200C, good flow
  • 1kg PLA “Sienoc” black (2018/04): very good bed adhesion, fully opaque at 0.15mm layer already, very glossy, printed at 200C, very good flow
  • 1kg PLA “Kaisertech” white (2018/04): adhesion ok, layers quite opaque (0.15mm partially transparent, 0.25mm already quite opaque), printed at 200C, flow not ideal
  • 20 pieces/colors a 10m colored (incl. transparent, glowing, gold, silver) PLA of unknown brand (2018/04): 210-215C required, at 200C possible of non extruded filament (missing extruder steps) and therefore missing regions of material

Note: I will update this post with new discoveries and experiences, and see also additional blog posts with CTC DIY i3 Pro B tag.