DIY Blog

Why I prefer Klipper over Marlin?

When it comes to 3D printers, there are three firmware options you can run: Klipper, Marlin, or RepRap firmware. Most printers are shipped with a customized version of Marlin configured for the specific hardware and manufacturer’s branding. If you decide to modify the printer, you will likely have to flash the firmware. Let’s look at their differences and why I prefer Klipper over the others.

Architectural differences

There is a significant architectural difference between Klipper and the other firmware. Marlin/RepRap runs entirely on your printer’s controller board. On the other hand, Klipper needs a more capable chip to run, like a Raspberry Pi. It then attaches to the controller board and sends commands to it.

Standalone mode is a lot more simple architecture. However, the chips on the controller boards are very limited in terms of processing power or memory. RepRap firmware can’t even run all its features on some controller boards because they don’t have enough memory. Many people running Marlin still add Rasperry Pi with OctoPi for more complex features like remote control or webcam support.

Master-slave configuration requires two devices to run the printer, which means extra complexity and cost. The master device is usually a more powerful board that runs Linux based environment like a Raspberry Pi. Klipper does all the calculations on the master device, and the controller board behaves like a dummy secondary device that moves the steppers as told and switches various pins off and on. It enables advanced features like controlling multiple controller boards on the same printer or more complex calculations for “input shaping”.

Why Klipper?

  1. I found the Marlin ecosystem to be a huge mess. People made many forks (new copies) to support specific printers and features. You can get a Marlin firmware version with particular features, but you will have difficulty combining two different versions you find. Klipper, on the other hand, is a healthy open source project. There’s one active repository with people contributing to it, and the same repository hosts configuration examples for various printers.

  2. Klipper can change any part of the printer configuration without rebuilding and reflashing the firmware. You have a configuration file with all the settings: you change it, then restart the controller, and that’s it. A big part of the Marlin configuration is compiled into the firmware. It means that configuration changes may require recompiling the firmware code, putting it onto an SD card, and flashing the printer. It was a massive pain for me.

  3. Modern web interfaces like Mainsail or Fluidd only work with Klipper.

You may not care about these things, and that’s fine. Let me know your reasons to go with one or the other in the comments below.