How To: Install Klipper on a CR-30

Wading through Klipper docs or trying to get answers from the Klipper community can take a long time, so here’s a quick guide to getting Klipper up and running on your CR-30.

Note that my setup (printer.cfg) remaps the fans for silent running when not printing (see Silent fans on CR 30 while idle (github.com))

Before you get started, you should understand that Klipper splits the classic “firmware” that runs on your control board into two parts. One is a very small mcu firmware that actually runs on your control board, and the other is klippy which is a python program running on a computer (usually a PI) connected to the the control board. klippy connects to the “real” serial port and creates a “fake” serial port (/tmp/printer) that your spooler (like OctoPrint) connects to.

For this example, I will use a Raspberry PI. You will have to adapt the instructions if you use something else.

In the root of the home directory of the pi user, clone the Klipper repo:

git clone https://github.com/KevinOConnor/klipper

You will need the mcu config file in a later step and it’s best to fetch it now:

curl https://static.grid.space/tmp/cr30-klipper/printer.cfg > printer.cfg

Then change directories to the Klipper scripts directory and run a script to install dependencies necessary to build the mcu firmware. I do not recommend using other people’s binaries since the protocol between mcu and klippy changes from time to time and would invalidate later steps.

cd klipper
./scripts/install-octopi.sh

Once that is done, you will need a valid .config file to build the mcu binary. Fetch the following config file:

curl https://static.grid.space/tmp/cr30-klipper/config > .config

This will create the .config file and you can now run:

make

When that completes, the mcu binary will be in out/klipper.bin

Copy that file to an SD card and rename to something like firmware-klipper-yymmdd.bin – typically this is done from your desktop using a command like

scp pi@<pi-ip-address>:klipper/out/klipper.bin <path-to-local-SD-card>/firmware-unique-name.bin

Place the SD card into the CR-30’s SD slot and turn it off (wait 5 seconds) and back on.

The LCD screen will be blank until the python klippy program on the PI starts taking to the mcu. This is normal.

On the PI, run:

sudo service klipper restart

And the LCD should come alive. At this point, klippy is running and OctoPrint can connect to /tmp/printer. You will also have a log file /tmp/klippy.log that you can tail to see what Klipper is up to.

If something is amiss, this log file will tell you why.

1 Like