I am considering porting Klipper mainline to my rooted Ender 3v3 KE.
The version on the printer is outdated and not directly updateable, because
Creality made some changes and did not merge them into mainline klipper.
So far, I am aware of the following difficulties:
PRTouch (Probe Z-Offset) via load cell at the front left is not included in the standard Klipper
Possibly binaries for the MCU, no sources from Creality
Unknown commit at which Creality split off the development of Klipper
Nebulapad (standard display on the Ender) may no longer be usable
Do you have any ideas about what else might need to be done and how hard this can be, or is there already a project in the works?
The KE has an embedded SBC (nebula board) that runs an unknown Linux distro that hosts Klipper. That board is connected to the motherboard with a proprietary 10 wire ribbon cable.
I ASSUME they include 2 USB data lines (could be RS232), 4 pass through GPIO pins for the accelerometer, 5V power and ground from the MCU board to power the nebula board.
The nebula board does have boot and reset switches which should allow the OS to be updated easily. I can’t determine what CPU is on the board and ARM distros are usually chip specific.
I can see 4 paths to “Kick creality to the curb” and take control.
Root the nebula board, use kiauh to uninstall Klipper and associated modules, update the OS as best you can, use Kiauh to reinstall klipper, build and flash klipper to the MCU
Install a clean distro on the Nebula, Kiauh, Flash (I have no idea if a compatible distro exists)
Decode the 10 pin cable and install a “better” SBC with OS, Kiauh, Flash.
Decode the umbilical cable and replace the SBC and mainboard with a 5+ driver Klipper friendly board (so you can enable Z tilt).
Any of the 4 should allow the loadcell to be used for setting the Z offset. There is always the “paper test” as a fallback while you get the loadcell online.
#2 is quite elegant and I’m sure it would be VERY popular with other KE owners. It is however WAY beyond my skillset.
I can answer these, even though neither is my fork.
0xd34d’s branch was originally for the KE, jpcurti added screen support for the se
the se does use a different display which requires different communication, I am not that familiar with the nebula display
I think you’re confusing the pr-touch with the cr-touch, the pr-touch is the loadcell in the bed for auto-z height, 0xd34d’s branch uses creality’s pr-touch v1 implementation as they have not provided anything but binary blobs for v2
I’m not sure exactly what you mean, but you can cross-compile for most targets on most hosts
About the Nebula Display: It is essentially an SBC with a MIPS CPU (Ingenic XBurst@II.V2) and 256 MiB RAM (200 MiB usable). It runs Buildroot Linux with an outdated C library and various Creality customizations, e.g., an init script that can update the MCU (of course with Creality bootloader and no katapult, SIGH).
Therefore, you cannot simply cross-compile with a current gcc, but need a special environment.
Since it took me several days to get this up and running, I have published it here:
Yes, I mean the PR Touch (i.e., auto nozzle-to-probe offset with load cell).
There is the Creality implementation (prtouch.py) for this, and there is a load_cell implementation in Klipper mainline. I would prefer to use the one from Klipper mainline, possibly combined with a macro. But I’m not done with that yet.
The Creality CR Touch (auto bed levelling) can be used in Klipper mainline simply as a BlTouch.