Klipper is a 3D printer “firmware” that decouples motor timings and core kinematics from Gcode parsing and path optimization, leaving low-end MCUs to actually drive the servos running a very small core (based on Marlin) while a beefier controller (typically a Raspberry Pi) performs all the high-level calculations and runs all the UI.
One of the major quality of life improvements it brings (besides faster printing speeds and higher quality thanks to bed leveling, input shaping and other optimizations) is the ability to reconfigure your printer by just editing a configuration file (instead of re-flashing all of the defaults), and since it is largely written in Python, it has sprouted a veritable cornucopia of tooling and add-ons.
This is what I do to update my Prusa, which runs off a Pi 3B:
cd klipper # RP2040 Accelerometer make menuconfig # select RP2040 make clean; make # it will output to out/klipper.uf2 dmesg # hold down Boot button and re-insert USB cable sudo mount /dev/sda1 /mnt sudo cp out/klipper.uf2 /mnt sudo umount /mnt # will automatically re-attach as ttyACM1 # verify working by resetting and issuing ACCELEROMETER_QUERY # Linux process (deprecated since I no longer use GPIO accelerometers) make menuconfig # select linux process make clean; make # it will output to out/klipper.elf sudo service klipper stop make flash sudo service klipper start # verify working by checking version number # atmega2560 make menuconfig # select ATmega AVR -> atmega2560 make clean; make # it will output to out/klipper.elf.hex sudo service klipper stop FLASH_DEVICE=/dev/ttyUSB0 make flash sudo service klipper start # verify working by checking version number
My web UI of choice
|Plugins||2023||Adaptive Mesh Leveling and Purging||
Very clever way to do localized bed leveling