home / code / contact / GnuPG Key / Keys transition statement

Cetus3D printer mods (free cetus !)


The Cetus is a 3D printer by Tiertime. It’s small and affordable (although not on the super cheap range of the Chinese printers). Also the quality of the build and hardware components is quite good, featuring linear rails and a 32bit cpu.

The downside to this printer is that the firmware on the printer is not open source, and it does not work with gcode as the vast majority of the other printers on the market do. Once you buy it, you’re stuck with the slicer that Tiertime provides which, of course, only works for Mac and Windows … and although it is super simple and “it just works”, it’s really annoying in some aspects.

So, there’s the reason on trying to fix something that’s not broken.

There’s a company that has developed a drop-in replacement of the original cpu board, but that runs with an open source firmware (smoothieware).

The main goal is to use open source software on all the steps of the process, from design to print, so I won’t have nasty surprises in the future (when Tiertime discontinues the printer, or stops giving support for it, or any of the fun stuff companies like to do, so they try to force you to buy new products) and use the OS that I want, and also a better control of the print settings for some 3D models that need more than the basics.

The model I own is a MKII. This model does not have end stop switches. The homing is done when the cpu detects that the motors are stuck because they have reached end of travel. A bit crude, but I guess it saves cost on production.

So, the first step for this conversion is to install limit switches. This is called “downgrade to MKI by Tinyfab”. This needs to be done because the new cpu does not support that kind of brute homing. Also, I prefer the switch homing, as is less aggressive with the hardware, specially the motors and some small printed parts

Here and here you can find a tarball with the files needed to print the adapters for the limit switches. They are the same files provided by Tinyfab, but renamed so it’s clear which ones do you need to use.

You’ll need both X and Y axis pieces and one of the Z axis pieces depending on the model you have (standard or extended).

If you plan to use a capacitive bed sensor, print also the piece to fix it to the hot end carriage. Here and here you can find a 3D model I did for that, as the one Tinyfab provides was broken for me.

Print this before any disassemble of the machine of course !

You can check the installation process on Tinyfab website. For me it was a little bit different than the pictures they show. So I’ll try to describe it.

Now it’s time to open the main printer case and access the motherboard.

Remove the current “limit switches”, in case of the MKII those are some extensions to the cables that come from the motors. Connect the new ones in place and route the cables so they are not in the way and all axis can move freely. I routed mine below the Z axis motor.

In case you also want to use the bed capacitive probe, you’ll have to solder a connector to the “case open” slot and put the X axis limit switch there (and the bed probe where the X limit is supposed to be). This is needed because the case open slot does not provide the power needed by the capacitive sensor. Also, some changes will be needed on the config later.

Remove the stock cpu and replace it by the tinyfab one. Simplest step in the whole process.

Get the last firmware file from Tinyfab website. It comes with an example config file already.

Connect the printer via USB to a computer. It will appear as an external drive. That’s the SD card on the printer board.

At this point, if you just copy the config file as the Tinyfab docs say and reboot the printer, you’re almost good to go. Put there the firmware and rename it to ‘firmware.bin’ so it gets upgraded on next boot, just in case the cpu did not have the last version installed already.

Set up the gamma_max, which is the max travel on the Z axis. I did this manually with the “paper” method. So connect with a Gcode sender program like Repetier-Host or UGS. Then:

Now, enjoy your free 3D printing experience !

I did some config tweaks though. Here and here they are for reference.

Basically, I removed the section for the second hotend, as it was bothering me and I’ll never have one on this printer.

Changed the X axis limit switch pin, as there is now the capacitive bed sensor, so alpha_max_endstop is now 2.13^

I also enabled the zprobe, set up the good pin number 1.24!^ and did the bed level process. It’s a bit tricky, but it works in the end (mind that I use the “Rectangular grid compensation” method as described on smoothieware website, maybe the easier triangular method is enough)

This calibration will be read on power up by the printer, so no need to do it again unless you change something related to the bed plate.

Some things to take into consideration, I cheated a bit to be able to perform the process. The way it works is, you define a bed size and an odd number to be the size of the probing grid, in my case 7 (so 7x7 points will be probed). You al so need to enter the offset of the nozle and the probe. The problem is that that offset gets added to the bed dimensions for probing, so in my case the offset would be +40 for the X and -10 for the Y, that means that the probing would start at -40 on the X and will end on 190 on the Y. Maybe for other printers that makes sense, but the Cetus has its travel limited to the size of the bed.

So what I end up doing, was set up a bed grid size of 140 on the X by 170 on the Y and setting up only the Y offset. It’s not perfect, but is close enough and it works kind of right.

Also I did a pid temperature auto test. You can get more info about this here. It can easily be done with the command:

M303 E0 S210

M303 is the actual command, E0 is the heater (0 as is the first and only), and Sxxx is the target temperature. Use a temperature you’re going to use in real prints.

At the end you’ll get a message like:

Cycle 4: max: 246.189, min: 227.627, avg separation: 0.418274
    Ku: 34.9838, Pu: 39.85
    Kp:  21.0
    Ki: 1.053
    Kd:   105
PID Autotune Complete! The settings above have been loaded into memory, but not written to your config file.

So there you have your pid values you can put on the config file. Mine won’t be probably good for you, although default ones may work.

And finally I modified the max PWM value for the hot end control. The default was 160 and I could not get the hot end to temperature … it fell always short. Maybe 255 is too much and a little lower is ok, I still have to try that. I hope is not too much and I don’t fry something.

With all this, the Cetus is now a normal printer you can use in combination with the open source slicer and gcode sender of your choice. I personally prefer Slic3r and Octoprint (so the printer is not right next to me).

$Id: free-cetus.md,v 1.5 2019/03/25 19:15:00 paco Exp $