This starts as a simple tutorial for everyone to repeat and follow - as simple as I can do it for you :)
Later I will add custom images to make it even faster and easier for all!
This tutorial is written for folks who are „not completely happy“ with their QIDI printers and want to get full access to the printer and unleash its full potential.
If you copy or take parts of this tutorial, please mention me, the author of this :)
If you do have any questions, find errors or want to add something, please join the discord channel and ping me:
Discord channel: https://discord.gg/TPH3KvKDvQ
Author: coco.33
If you like my work here, I would be happy if you consider a tip
QIDIs X-3 series printers are made out of hardware with very good potential, but they do have outdated software.
The printers could work better/faster with higher usability for every user.
Here is a list of software that bottlenecks the full functionality of the printer by time of writing this:
Before you start, please understand that you will wipe the entire disk and build your OS from scratch.
You will also update all sub-systems (print head „THR“ and the STM32F402 MCU on the mainboard) to the latest klipper.
So you will have an entirely free and custom 3D printer.
Please note, that this will all be done to your own risk and please do not contact the QIDI support if you have any issues. By making these changes, you will lose your warranty in this regard.
There is however a „recovery“-image, that will restore the system to a state that QIDI ships their printers. You then only have to „downgrade“ the THR toolhead board and the mainboard MCU and you are basically back to the start and you should have your warranty back :)
I will describe step by step what and how I did it. Please follow carefully if you are not familiar with these kinds of operations and ask us in the discord channel if you run into some trouble :)
Thanks to redrathnure there is a great Armbian based OS that we use as a foundation.
So download the latest Armbian from https://github.com/redrathnure/armbian-mkspi to get started.
(I used „Armbian-unofficial_24.2.0-trunk_Mkspi_bookworm_edge_6.6.7.img.xz“)
Turn your printer off, wait ~30s.
Open the back cover and remove the EMMC flash.
Use BalenaEtcher and flash the armbian image to your EMMC using the EMMC reader.
Insert the EMMC back to your printer.
Turn it on and connect the printer via ethernet cable to your router.
Connect to your printer via putty (or a similar program) using its IP address.
Log in as
user: root
password: 1234
You will be asked to create a new user.
Create
user: mks
password: makerbase
Now start a new session in putty and login as user „mks“.
Update everything with
sudo apt update
sudo apt upgrade
Update and get the latest kiauh
sudo apt-get update && sudo apt-get install git -y
cd ~ && git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh
Via KIAUH install these software in this order:
Klipper
Moonraker
Mainsail (of Fluidd if you prefer this)
If you do have a webcam, also install Crowsnest.
When asked for the python version, make sure to select python 3.x.
When you access your printer via a web browser, you will see the web interface Mainsail (or Fluidd). It will show you an error like this:
This is because the sub systems being not yet updated with the latest klipper firmware.
The tool head uses a derivate of a „MKS THR“ (https://github.com/makerbase-mks/MKS-THR36-THR42-UTC) and is powered by a RP2040 μC.
For flashing it, you need to turn it into „dfu mode“.
During this tutorial we will do this once. For the future this won’t be necessary.
The reason for this is, because we will flash a special bootloader named „katapult“ (formerly known as CanBoot) that is able to bring the μC in dfu mode without the need of physical access.
If not still open, login via putty as user „mks“ and do
git clone https://github.com/Arksine/katapult
cd ~/katapult
make menuconfig
First, change the μC Architecture to RP2040
Make sure to build a katapult deployment application with the right size:
Finish by hitting „q“ and save with „y“:
Now build the firmware by first cleaning the workspace and then compile with all 4 cores:
make clean
make -j4
You should see something like this:
You should be able to see the RP2040 if you type:
ls /dev/serial/by-id/*
You can see there is klipper installed on the RP2040
Put the tool head board in dfu mode like this:
Now prepare everything for flashing the katapult bootloader by this:
sudo mount /dev/sda1 /mnt
systemctl daemon-reload
You will be asked to authenticate by entering the password:
Now flash katapult to the RP2040 and unmount it:
sudo cp out/katapult.uf2 /mnt
sudo umount /mnt
If you check your devices again, you will see, that the klipper firmware was replaced with katapult
ls /dev/serial/by-id/*
It’s now possible to flash klipper with no access to the printer. You can attach the back cover of the print head back on.
Now let‘s flash latest klipper
cd ~/klipper
make menuconfig
Set everything like you did with katapult like this:
Quit with „q“ and save with „y“:
Now build the firmware by first cleaning the workspace and then compile with all 4 cores:
make clean
make -j4
Check again for your device and remember the device ID by
ls /dev/serial/by-id/*
ID is in this case “/dev/serial/by-id/usb-katapult_rp2040_C5DA4D951E145858-if00” Install python3-serial to be able to invoke the flash process:
sudo apt install python3-serial
Now flash the toolhead – make sure to use YOUR device ID:
python3 ~/katapult/scripts/flashtool.py -f ~/klipper/out/klipper.bin -d /dev/serial/by-id/usb-katapult_rp2040_C5DA4D951E145858-if00
You should see something like this:
Done.The tool head is now on the latest klipper firmware :)
Similar to flashing the rp2040 you need to:
cd ~/klipper
make menuconfig
Set everything according to this screenshot:
Quit with „q“ and save with „y“:
Now build the firmware by first cleaning the workspace and then compile with all 4 cores:
make clean
make -j4
This will generate a „klipper.bin“ file in the /home/mks/klipper/out/ folder.
Use your favourite program to get this file onto your computer (I am using WinSCP).
Then:
If you now go to the machine settings of the web interface (mainsail/fluidd) you will see the current klipper version of the sub systems:
Unleash the full potential of the printer
For best results, a CoreXY printer needs the right and very similar tension of the belts. Fortunately there is a tool called “Klippain Shake&Tune” made by Frix-x (see here https://github.com/Frix-x/klippain-shaketune). This tool gives you insights and a nice graph to compare the belts etc. To install it, simply do:
wget -O - https://raw.githubusercontent.com/Frix-x/klippain-shaketune/main/install.sh | bash
To activate it, include this to your printer.cfg:
[include K-ShakeTune/*.cfg]
You can use this module now and the probably most useful ones being the one for measuring/comparing the belt tension, that you use by writing this in the mainsail/fluid console:
BELTS_SHAPER_CALIBRATION
When you are happy with your belts and tensioned it to a state they look good, you may want to recalibrate the input shapers like:
AXES_SHAPER_CALIBRATION
There are tons of information, so please have a look at the great documentation and examples given by Frix-x on its github page.