I actually have Marlin + Octoprint but found out recently that Klipper exist. I read everywhere that Klipper is better but I don’t really get why. I understand that Klipper use raspberry as powerfull calculator instead of the STM32 of the printer, but octoprint is used to send Gcode to Marlin too… So what’s the really difference please?

Edit : I don’t understand how Klipper or Marlin can give better results when gcode and instructions are generated by Cura

  • ffhein
    link
    fedilink
    English
    41 year ago

    gcode only contains high level instructions, e.g. “move 10mm on the X axis”, which the firmware has to convert this to electrical pulses that can be sent to the stepper motors. If this is done naively the hardware wouldn’t be able to follow the instructions due to inertia, filament viscosity, etc. Both firmwares have several methods to deal with this, but afaik Marlin does not have anything that does the same as Klipper’s input shaper. Marlin has “linear advance” while Klipper has “pressure advance” which both try to solve the same problem but have different algorithms and you calibrate them differently. Using Klipper with calibrated input shaper will probably allow you to print faster than Marlin at an equivalent quality level.

    Another difference is that all Klipper configuration goes into a text file, and you just restart Klipper to reload it. To change some settings i Marlin you have to re-compile the entire firmware and flash it.

    Marlin’s G29 command has different syntax depending on which ABL algorithm the firmware was compiled with, which IMO makes it more difficult to help other people who didn’t compile their own firmware (i.e. who don’t know which ABL algorithm their Marlin has).

      • ffhein
        link
        fedilink
        English
        31 year ago

        Found out just now that Marlin finally got input shaping: https://marlinfw.org/docs/gcode/M593.html

        There’s however a risk that you have to compile your own firmware if you want to enable it. Definitely not impossible if you know your way around computers, but editing Marlin configs can be quite daunting. Not that installing and configuring Klipper would be trivial for a computer illiterate person, but over all I’ve found it much easier to work with. I used Marlin for about a year, including compiling my own version of it, before switching.

        For me the biggest disadvantage with Klipper is that I haven’t got around to printing an enclosure for the RPi so it’s just sitting on the desk next to the printer, and it’s not compatible with the E3v2 display so I have to use Mainsail on my phone if I want to control the printer from the same room. I could of course buy a proper touch screen and run KlipperScreen, but they’re a bit pricey.

        • @CmdrShepard
          link
          English
          2
          edit-2
          1 year ago

          I’ve been looking into using an old Android phone as a display/control screen. The only thing holding me back is that my spare device (Note 4) doesn’t have pass-through charging and won’t run off a charging cable without the battery installed. This can be bypassed by attaching a couple wires to the pins where the battery connects but I’ve been too busy with other stuff to do it.

          Might be an option for you if you have one laying around. Many newer phones can run without a battery just fine.

        • anderfrank
          link
          fedilink
          2
          edit-2
          1 year ago

          There is an add-on that lets the E3v2 screen work with klipper. I have it working and while the feature set is a bit limited its enough to see the print status and start a new print (among other things). You just need to run 7 wires from the screen to the GPIO pins on the pi. I used a front panel cable from an old PC case to accomplish this. Check it out!

          https://github.com/GalvanicGlaze/DWIN_T5UIC1_LCD/wiki

          • ffhein
            link
            fedilink
            English
            11 year ago

            Ah, nice! I started implementing the same thing a long time ago but got bored making all the UI screens after I had coded the basics :)