Skip to content

03. Research: Firmware

1. Reserch of 3D printer firmwares

Content in this page was summarized or generated by ChatGPT, based on following sources.

Prompt A: Please summarize the following articles and tell me which firmware is suitable for beginners to develop a 3D printer from scratch.
Prompt B: How can I modify the firmware depending on a specific hardware such as motor specifications, gear ratio etc.?
Prompt C: Make a detailed comparison table between Marlin and Klipper.

3D Printer Firmware Overview

3D printer firmware is software that translates G-code from a slicer into electrical signals, controlling the printer's movements and functions. Popular firmware includes RepRap, Repetier, Marlin, and Klipper. Marlin is the most widely used, followed by Klipper.

Marlin, developed in 2011 by Erik van der Zalm for UltiMaker, was designed for affordable 8-bit Arduino microcontrollers. Klipper, on the other hand, leverages more powerful devices like Raspberry Pi for precise control.

Modifying Firmware for Specific Hardware

To tailor firmware for specific hardware components such as motors, gear ratios, and sensors, users adjust configuration files and, in some cases, recompile the firmware.

Modifying Marlin Firmware:

  1. Edit Configuration.h for primary settings (printer size, motor specs).
  2. Adjust Configuration_adv.h for advanced features (motor currents, sensors).
  3. Compile and flash the firmware using tools like PlatformIO in VSCode.

Modifying Klipper Firmware:

  1. Edit printer.cfg, a simple text file, to define motor specs, gear ratios, and sensors.
  2. No recompilation needed; changes apply after rebooting Klipper.
  3. Use the web interface (Mainsail/Fluidd) for restarting Klipper.

Comparison of Marlin and Klipper Firmware

Feature Marlin Klipper
Architecture Runs on microcontroller (8/32-bit), written in C++ Splits tasks: controller (C) + Raspberry Pi (Python)
G-code Processing Directly on printer’s board Offloaded to Raspberry Pi (Klippy)
Configuration Modify and recompile config files (.h files) Simple text-based config (printer.cfg), no recompile
Installation Flash firmware via USB/SD card Install on both controller and Raspberry Pi
Ease of Use Beginner-friendly, extensive documentation More complex, but flexible and easier to tweak
Add-on Integration Works well with OctoPrint Better with Mainsail/Fluidd; uses Moonraker API
Motion Control Stable, with Linear Advance, basic Input Shaping Advanced Input Shaping, Pressure Advance, faster prints
Community Support Large, beginner-friendly, extensive online resources Smaller but growing, passionate, strong online presence
Updates Frequent updates, nightly builds Continuous improvements via GitHub, automatic updates via UIs
Best For Beginners, stable setups, 8-bit boards Advanced users, faster prints, experimental features