<blockquote>
  <p>Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?</p>
</blockquote>

<p>A few days ago I came across <a href="https://github.com/KevinOConnor/klipper" rel="noreferrer">klipper</a>.</p>

<p>It seems to do exactly that functionality split you mention</p>

CC BY-SA 3.0
2017-02-09T21:44:31.860Z
Thanks for sharing, hadn't seen that, that is the kind of thing I am looking for.
Mtl Dev
CC BY-SA 3.0
2017-04-12T13:37:12.073Z
Update: After significant review of Klipper, have found it to be excellent, first choice.  The design (all calculations done on the host) is a significant step forward.
Mtl Dev
CC BY-SA 3.0
2017-02-09T19:15:04.683Z
2017-02-09T19:15:04.683Z
mogul
<p>Your choice of firmware depends on a lot of factors, but to name a few important ones: features, your driver board (RAMPS vs Sanguinololu vs Gen..etc), and G-code support.</p>

<p>Smooth/quiet operation is dependent on the motors and the driver chip's micro-stepping capabilities. The way the firmware interfaces with the driver chip plays a very minor factor in that.</p>

<p>Check this page for a list of firmware, their capabilities and compatible electronics (driver board):</p>

<p><a href="http://www.reprap.org/wiki/List_of_Firmware" rel="nofollow noreferrer">http://www.reprap.org/wiki/List_of_Firmware</a></p>

<p>Would be useful to check G-code support of various firmwares also:</p>

<p><a href="http://reprap.org/wiki/G-code" rel="nofollow noreferrer">http://reprap.org/wiki/G-code</a></p>

<p>Also, as a note, a lot of the community uses Marlin, but for a lot of the commercial printers, the code has been modified slightly to fit their needs. </p>

<p>There is no perfect answer to this. Check the links and compare against your needs. Marlin is the safest bet since it has the most support, though you may need to modify or reconfigure it slightly for your custom board.</p>

CC BY-SA 4.0
2016-11-23T21:07:08.327Z
2018-08-07T13:36:32.327Z
2018-08-07T13:36:32.327Z
Hong
<p>We are custom building a Cartesian 3D printer to be used in a production 3D printing environment, with the following requirements:</p>

<ul>
<li>Intended Z resolution 0.13mm;</li>
<li>Dual extruders (primary + support material);</li>
<li>Four spools (two per material with y connector, perhaps add auto switch-over functionality later);</li>
<li>Camera;</li>
<li>Onboard 11" touchscreen for control &amp; interaction, run by a Raspberry Pi 3;</li>
<li>Custom board based on ATMega2560 to control the printer;  </li>
<li>Printer should gracefully handle conditions like "out of material", etc.</li>
</ul>

<p>Question: How to select firmware? </p>

<p>Are there notable differences between the primary firmware options (Marlin/Repetier) for this setup?  From the google code groups, I understand the Repetier has a much cleaner code base, and apparently gives smoother physical performance.  Yet, from what I can gather, 95% of the community uses Marlin - is that correct?</p>

<p>Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?</p>

<p>Edit 12/April/2017:</p>

<p>For others looking: After much review, Klipper was selected as the most forward firmware - all kinematic calculations are done on the host computer, instead of on the microprocessor, resulting is significantly faster/smoother stepper movement.</p>

CC BY-SA 3.0
2016-11-21T20:14:14.890Z
You say the printer is intended to be _high end_, so what do you mean by good speed/resolution? Do you have any particular figures/ranges in mind?
Greenonline
CC BY-SA 3.0
2016-11-22T12:23:01.193Z
So you have a custom controller board...you know you will need to heavily modify the firmware to get it working right?  Anyway, I voted to close because you didn't specify what you were looking for in the firmware.  All of them easily hit your standard goals at this point.
tjb1
CC BY-SA 3.0
2016-11-22T12:51:55.407Z
Besides that high-end printer and Atmega sound mutually exclusive to me, many if not all open-source firmware should work after proper configuration. The only exception is some rarely used printer mechanics, like SCARA
Mikhail Z
CC BY-SA 3.0
2016-11-22T15:57:04.830Z
Thanks, I have modified Marlin and it is working on the custom board now.  Just trying to understand if there is a significant difference between firmware options - aka is there a reason that a significant majority of people use Marlin over Repetier?
Mtl Dev
CC BY-SA 3.0
2017-04-12T13:39:55.143Z
@MikhailZ FYI it eventuates that, if you use firmware that performs all the kinematic calculations on the host, then ATmega is more that sufficient: ~20% cpu usage @ 150mm/s.  Physics quickly becomes the limiting factor, rather than the processor.
Mtl Dev
CC BY-SA 3.0
2017-04-12T18:08:59.370Z
This can be a solution, but haven't you checked boards based on processors like STM32? In most cases they have enough capacity to handle all calculations even for more complex devices, like deltas. In any case, for production printer you may want to stretch your speed goal far beyond 150mm/s.
Mikhail Z
CC BY-SA 3.0
2017-04-12T18:39:02.403Z
Just FYI 150mm/s @ 20% cpu, Klipper can run well over 400mm/s without maxing cpu.  Appreciate the faster boards, though it just seems (to me) a much cleaner design (& faster) to pre-calculate on a host (RPi is order of magnitutude+ faster than STM32),  & keep only real-time operations on the real-time hardware.
Mtl Dev
<firmware>
Firmware Choice: Marlin vs Repetier vs Other
Mtl Dev
# Firmware Choice: Marlin vs Repetier vs Other

(Asked by: username_0 on 2016-11-21)

We are custom building a Cartesian 3D printer to be used in a production 3D printing environment, with the following requirements:

* Intended Z resolution 0.13mm;
* Dual extruders (primary + support material);
* Four spools (two per material with y connector, perhaps add auto switch-over functionality later);
* Camera;
* Onboard 11" touchscreen for control & interaction, run by a Raspberry Pi 3;
* Custom board based on ATMega2560 to control the printer;
* Printer should gracefully handle conditions like "out of material", etc.

Question: How to select firmware?

Are there notable differences between the primary firmware options (Marlin/Repetier) for this setup? From the google code groups, I understand the Repetier has a much cleaner code base, and apparently gives smoother physical performance. Yet, from what I can gather, 95% of the community uses Marlin - is that correct?

Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?

Edit 12/April/2017:

For others looking: After much review, Klipper was selected as the most forward firmware - all kinematic calculations are done on the host computer, instead of on the microprocessor, resulting is significantly faster/smoother stepper movement.

**Tags:** firmware

> **Comments:**
> **username_1**: You say the printer is intended to be _high end_, so what do you mean by good speed/resolution? Do you have any particular figures/ranges in mind?  
> **username_2**: So you have a custom controller board...you know you will need to heavily modify the firmware to get it working right?  Anyway, I voted to close because you didn't specify what you were looking for in the firmware.  All of them easily hit your standard goals at this point.  
> **username_3**: Besides that high-end printer and Atmega sound mutually exclusive to me, many if not all open-source firmware should work after proper configuration. The only exception is some rarely used printer mechanics, like SCARA  
> **username_0**: Thanks, I have modified Marlin and it is working on the custom board now.  Just trying to understand if there is a significant difference between firmware options - aka is there a reason that a significant majority of people use Marlin over Repetier?  
> **username_0**: @username_3 FYI it eventuates that, if you use firmware that performs all the kinematic calculations on the host, then ATmega is more that sufficient: ~20% cpu usage @ 150mm/s.  Physics quickly becomes the limiting factor, rather than the processor.  
> **username_3**: This can be a solution, but haven't you checked boards based on processors like STM32? In most cases they have enough capacity to handle all calculations even for more complex devices, like deltas. In any case, for production printer you may want to stretch your speed goal far beyond 150mm/s.  
> **username_0**: Just FYI 150mm/s @ 20% cpu, Klipper can run well over 400mm/s without maxing cpu.  Appreciate the faster boards, though it just seems (to me) a much cleaner design (& faster) to pre-calculate on a host (RPi is order of magnitutude+ faster than STM32),  & keep only real-time operations on the real-time hardware.  

---

## 2 answers

### Answer by username_5 on 2016-11-23. Score: 6 | Accepted answer

Your choice of firmware depends on a lot of factors, but to name a few important ones: features, your driver board (RAMPS vs Sanguinololu vs Gen..etc), and G-code support.

Smooth/quiet operation is dependent on the motors and the driver chip's micro-stepping capabilities. The way the firmware interfaces with the driver chip plays a very minor factor in that.

Check this page for a list of firmware, their capabilities and compatible electronics (driver board):

<http://www.reprap.org/wiki/List_of_Firmware>

Would be useful to check G-code support of various firmwares also:

<http://reprap.org/wiki/G-code>

Also, as a note, a lot of the community uses Marlin, but for a lot of the commercial printers, the code has been modified slightly to fit their needs.

There is no perfect answer to this. Check the links and compare against your needs. Marlin is the safest bet since it has the most support, though you may need to modify or reconfigure it slightly for your custom board.


---

### Answer by username_4 on 2017-02-09. Score: 8

> Given that this printer will have the Pi3 to control "higher functions", is it worth considering a compact firmware like Teacup?

A few days ago I came across [klipper](https://github.com/KevinOConnor/klipper).

It seems to do exactly that functionality split you mention

> **Comments:**
> **username_0**: Thanks for sharing, hadn't seen that, that is the kind of thing I am looking for.  
> **username_0**: Update: After significant review of Klipper, have found it to be excellent, first choice.  The design (all calculations done on the host) is a significant step forward.  

---

