Upgrading the KP3S Pro (V1) to Klipper

It’s been since I ordered the , and a slight twinge of shame finally got me to pull the trigger, upgrade it to and install the probe that I ordered with it over .

Wiring the 3D Touch to the KP3S was trivial, since the board has a dedicated connector for it. Kingroon’s site has adequate shots of the connectors, too, so the longest part of the process was running the wiring through the existing loom. I had already done that a month or so in advance, including printing and fitting a probe mount and improved blower (I have the models linked in my ).

The probe wires barely fit inside the wire loom, but it holds together well.

The printer itself has no hardware mods of note, and covers everything–in short, when I got it I ordered a full metal heat break and got third-party Chinese CHT clone nozzles for increased flow, so most of what I did during Summer was upgrading the firmware and tuning the entire thing.

Setting Up

Since my board has an STM32F103, I had to build as if it was targeting a vanilla Robin Nano board:

make menuconfig

[*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32)  --->
    Processor model (STM32F103)  --->
[ ] Only 10KiB of RAM (for rare stm32f103x6 variant) (NEW)
[ ] Disable SWD at startup (for GigaDevice stm32f103 clones)
    Bootloader offset (28KiB bootloader)  --->
    Clock Reference (8 MHz crystal)  --->
    Communication interface (Serial (on USART3 PB11/PB10))  --->
(250000) Baud rate for serial port
(!PC6, !PD13) GPIO pins to set at micro-controller startup

./scripts/update_mks_robin.py ./out/klipper.bin ./out/Robin_nano.bin

I then dropped the .bin in an SD Card to upgrade the printer itself, and I was set–this is the only real difference from the as far as upgrades go.


Since does not support the built-in LCD, I have to use KlipperScreen. That’s no problem since thanks to all my years of tinkering I have enough 3Bs to spare, so I run each printer individually off a tidy little case that uses these LCD display drivers (my model uses the MHS35 variant).

I had already gotten them and they are cheap and effective, but be warned that the touchscreens aren’t anything to write home about, and there is also no support for turning off the backlight (I tried fiddling with the drivers, but the hardware doesn’t seem to support it at all).

This is a bit of a spoiler, but you'll read about it soon.

Configuration and Tuning

Regarding the configuration itself, all I needed to do to get started was grab a reference file off the Internet and tweak some things. Three of them are worth noting here:

  • Reversed one of the steppers (there is some variance in models, and Kingroon keeps making changes to their lineup and components every couple of months, so that was predictable).
  • Tuned the extruder steps/mm (twice, since I got it subtly wrong the first time and it was messing up my flow rate tweaks).
  • Upped max_accel and tweaked the Z stepper rotation.

The 3D Touch probe just worked, which was great (although of course I had to tweak offsets, etc.). Given that I use 200x200x4mm fiberglass sheets (aka garolite) for the bed and they tend to be very flat the probe doesn’t have a lot of work to do, but it’s still useful to account for the minor gradient that is implicit in the cantilever arrangement.

Other than that, tuning the printer followed the usual process–the documentation is still your best guide here, and after geometry, extruder and probe calibration I had the occasion to use the USB accelerometer I built with a TINY2040 :

All the wiring is underneath the board.

The files for the case and cover are up on Github, if you’re interested.

And just for the record, these were the input shaping calibration results:

Input shaper results for the KP3S Pro

Another thing I tried was reproducing the dynamic mesh auto-leveling setup I have been using on my , but it seemed to mess with starting offsets, so my fiberglass bed now sports a couple of battle scars.

Slicer and Filament Improvements

Serendipitously, 1.6.4 came out while I was doing this, so I started using its calibration tools as well. That turned out to be a mixed bag of sorts, since despite attempting to match settings with I only got more aggressive, faster (but lower quality) prints out of it. For some reason, even normal supports came out weird.

Some good came of it, though. As I refined and compared my settings I noticed, among other things, that I was not using the new Arachne slicing engine, and that some of my filament was not properly calibrated (I had to tweak the flow rate, since I had some old settings in there to compensate for the extruder) – plus some of my filament is just plain old.

To counteract the latter, I got a Sovol dual spool dryer on promo, which is doing wonders for my PETG prints even though I keep all my filament in airtight enclosures with car grade dessicant bags.

Once I fixed all these niggles, print quality went up quite substantially, and since all I’m missing in right now are tree supports, I am likely to stick with it even though there’s been a marked lack of updates (or even any recent development).


Given the explosive evolution of the 3D printer market over the past year, I’m still happy I got the even though the amount of features and functionality you can get at a slightly higher price point is pretty insane right now.

I’ve found this to be a solid machine from a build perspective, and even though Kingroon keeps launching new and improved models so fast that (like me) you’re likely to buy something that is nearly obsolete by the time it arrives, I think it was good value for money considering the hardware, and, for me, being able to upgrade it to and have full control of the firmware and features is a huge plus that will extend its lifespan (perhaps as much as my ).

The only mechanical issue I’ve had so far with the printer (and only running ) is that the Y axis seems prone to skipping, as I had a couple of layer shifts during some speed testing. But tightening the Y axis belt and tweaking the acceleration limit seems to have fixed it.

I’m very happy with the results of this upgrade speed-wise, since I can now print functional parts (typically 0.28mm layer height) very reliably at speeds up to 250mm/s, whereas my aging can only get up to half that.

And I am getting very nice quality at 75% and 50% speeds (at least with PETG and matte PLA - silk PLA is still a major nuisance).

Next Steps

Besides the minor chore of setting up new -flavored printing profiles, I’m still sorting out a few quality of life improvements (like macros for filament swap and purge), but otherwise I think the printer is in a good place.

In the long term, I am still interested in getting a CoreXY machine. And the recent announcement that Creality is finally allowing root access on their K1 series is very interesting considering both the overall popularity (and lifespan) of their machines and the fact I now have .

I’d love to get my hands on one, but I can’t justify the expense right now–so the next printer project (which I hope won’t take an entire year) is replacing the extruder on my , for which I’ve already started designing the parts required.

Until then, there is a lot more stuff to do (and eventually write about).

This page is referenced in: