Anycubic Kossel Marlin firmware

Home / Kossel / Marlin / Anycubic Kossel Marlin firmware
Kossel | Marlin

Why should I upgrade stock firmware?

Anycubic Kossel Linear Plus Firmware Marlin 2.0 offers better performance and more options over the stock Anycubic Kossel FW.
Delta calibration works much better then stock bed calibration.
You can easily make changes in FW.
Configuration files have been created for original Trigorilla board and original drivers which come with the printer.


1. Download Anycubic Kossel Marlin

It was time to move on after announcing bugfix Marlin 2.0 and upgrading the printer to E3D V6 extruder.
I have been testing this firmware almost every day this week with no issues.
You can find 2 different configurations of PID values in the file.
One is for original V5 J-Head and the second is for E3D V6 extruder + new extruder fan.

Configuration files are modified for Anycubic Kossel Linear Plus with original Trigorilla board and steppers.
You can easily modify them for another board such as SKR 1.3 or newer stepper drivers.

Official Marlin 2.0.0 version. 02. 12. 2019 (US 12/02/2019) version

Older version with some bugs – baby stepping, lcd sometimes freezes.

If you want to use an older Marlin version, you can download 1.1.9, but steps in this guide follow only Marlin 2.0 installation.
Flashing Marlin 1.1.9 is similar, but the calibration steps are a little bit different.

Original Anycubic Kossel Linear Plus FW


2. Download and install Arduino IDE

I prefer direct download from arduino.cc.
Arduino IDE installed from the Windows Store is known for issues (I hope that they will fix it ASAP).
Click on Download Arduino IDE, choose a version for you operating system, download and install


3. Connect Kossel to PC via USB

Use the USB cable that came with the printer or a standard USB-B USB-A cable and connect Kossel to your PC.
Turn on the Kossel.
Go to device manager (WIN10 – right mouse click on windows logo, device manager) and you should see Silicon Labs CP210x device under COM ports.


4. Modify Configuration.h

Go to the folder you have downloaded Marlin to (Downloads usually) and extract zip archive.

For Marlin 2.0 go to Kossel-Marlin-2-0-x-LPomykal then to Marlin folder and open Marlin.ino in Arduino IDE.


4.1. Kossel type

Firmware is prepared for a Kossel Linear Plus, but if you want to use it for a pulley version, just modify this one line.

Kossel Linear Plus – define it:
#define ANYCUBIC_KOSSEL_PLUS

Kossel Pulley version – comment the line:
//#define ANYCUBIC_KOSSEL_PLUS


4.2. Autoleveling probe type

This is the standard autoleveling probe which comes with the printer since 2017.
If you have received another type (microswitch is different), your probe is probabably type 1.

If you have a multimeter, you can easily check that. Probe 2 is a NC – normally closed which means that it is normally switched on, so you will read a very low resistance or you can beep the contacts.

Choose the correct version probe version.


4.3. Bed type

Make sure you have chosen the correct bed type.
If you want to modify it, simply change:
#define ANYCUBIC_KOSSEL_ENABLE_BED 2 to:

0) No heated bed:
#define ANYCUBIC_KOSSEL_ENABLE_BED 0

1) Standard heated bed with a black sticker:
#define ANYCUBIC_KOSSEL_ENABLE_BED 1

2) Ultrabase + heated bed
#define ANYCUBIC_KOSSEL_ENABLE_BED 2


4.4. Printable radius

Here comes the tricky part:
Kossel Linear Plus comes with a heated bed with a 230 mm outer diameter.
Ultrabases for the Kossel are made in two outer diameters: 200 mm and 240 mm.

In my case I have a standard 230 mm heated bed with a mouted 240 mm Ultrabase and that means that my printable radius is: (240 mm – unreachable space (10 mm usually))/2 = 115 mm.

Please note that DELTA_* must be defined as a floating point number!
Do not forget to add .0 behind each value.


4.5. Rod lenght

Measure the correct lenght of your rods by disassebling and measuring them with a sliding meter axis to axis – hole diameter and correct the value


4.6. Probe edge

If your printer is probing very near the edges of the bed, you could modify this parameter.
It is a minimal distance of the probe’s microswich from the edge of the bed.


4.7. Safe zone – moving the head down after G28 – home

This variable causes the printing head to move approx. 50 mm down after homing at the end of a printing session.

If you are going to print tall models, please comment this line:
#define DELTA_HOME_TO_SAFE_ZONE


4.8. Maximum speed

A standard Kossel without corner reinforcements, belts well tensioned can do about 60mm/s max.
If you have these upgrades, you can easily achieve 100mm/s and even larger speed.


4.9. Maximum acceleration

You can define maximum acceleration values in this part of the configuration file.
Just keep in mind, that if you want to print with higher acceleration, the FW will not allow you to do that.
I consider these values as a “failsafe” against too high acceleration values.


4.10. Restore autoleveling

This is almost critical.
For anyone using another FW, check if this line is defined.
It ensures that after a reboot, the printer will still use values from your delta calibration.

There is also another solution:
Placing M420 S1 after G28 in start G code in your slicer


4.11. Homing speed

Homing speed is a crucial setting. It allows you to lower homing speed making homing and calibration more precise.
Instead of a fast homing and “crushing” into end stops you can slowly approach and trigger them.


4.12. Probing speed

XY_PROBE_SPEED – XY movement between probing points in mm/minute
Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z – slow probing speed is equal to HOMING_FEEDRATE_Z
Z_PROBE_SPEED_SLOW – slow probing speed set up to a one third of Z_PROBE_SPEED_FAST


5. Upload new Marlin FW

In Arduino IDE click on Tools and choose Mega 2560 as a board and ATmega2560 as a processor.
Pick the correct COM port (you can check that in device manager, com ports).

Click on Projects and upload.
Or simply use Ctrl + U shortcut.

The moment you see Upload complete you can disconnect the printer and calibrate your bed.


6. Delta calibration

This important calibration measures each end stop’s position and arm lenght.
Is also auto levels your bed.


7. Hotend PID calibration

You also should perform PID calibration to get rid of any thermal runaway problems.

Similar Posts

65 Comments

  1. Pane Lukáši mám problém. Mám aktuálně v tiskárně Marlin 2 a extruder se pokouší odjet z podložky což dopadá tak že se tvoří díry v hotbedu. Cura ani PrusaSlicer nic nezměnily ale na jiném počítači tiskárna funguje. Nevíte kde může být problém. Děkuji za pomoc.

    1. Zdravím, nechápu výraz “extruder se pokouší odjet z podložky”
      A jak tiskárna na jiném PC funguje?

      Takže tipuji tisk přes USB (který se těžce nedoporučuje, doporučuje se tisk přes kartu).

  2. Hi Lukas

    For the Anycubic Predator With skr pro 1.1 it is similar fonctions in marlin ?

  3. Thank you lukas.
    Got my printer last week with stock fw my god it was terrible.
    Thank god I found this guide its detailed and helped a lot getting things set up.

    Printer now works a treat just need to tune my cura settings

  4. ciao io ho installato tutto perfettamente la stampante è andata bene 2 giorni, adesso mi viene fuori errore: THERMAL RUNAWAY : E1 PRINTER HOLTED please reset

    da quello che ho capito fa partire estrusore 2 che io non ho e va in crash cosa devo fare ? grazie mille in anticipo

  5. Hello Lukas,
    I’ve got the kossel linear and updated to your Marlin 2.0 my bed is 200mm, aluminum heatbed with glass bed and my probe is V 2. What do I have to change in config.h? After the upgrade it won’t do auto calibration. Please any advice.

    1. Zdravím Lukáši,
      snažím se nahrát do svojí tiskárny Marlin 2.0, ale nedaří se mi vůbec.
      Mám trigorilla 1.1 desku ( nechápu proč teď jsem tiskárnu kupoval novou).
      K tomu jsem dokoupil TMC2208 v3.0 drivery. Dodělal jsem si přisvícení a vyztužil jsem rám plus tisknu na zrcadlo.

      k problému:
      Snažím se nahrát Marlin 2.0 podle návodu výše a pokaždé když to chci zkompilovat a poslat vychrlí to na mě hlášku: #error “Oops! Select ‘Arduino/Genuino Mega or Mega 2560’ in ‘Tools > Board.'”
      Zkoušel jsem se dívat i do záložky Boards.h a tam našel tu verzi desky co máte Vy a zadal jí ručně znovu. -> pořád stejné. Drivery jsou tam teď úplně nově a změnil jsem je i v kódu, ale bohužel nic nemůžu nahrát.

      díky za radu
      Jakub

      1. Čau,
        Přečti si znovu bod 5 hned pod nadpisem a bude ti to jasné.
        V Arduino IDE musíš vybrat správnou desku a procesor, na který to budeš nahrávat.

        1. Ahoj,
          tento krok se mi povedl, ale nastala další nepředpokládaná chyba.

          C:\Users\Jakub\AppData\Local\Temp\ccBZV1Iq.ltrans0.ltrans.o: In function `Buzzer::tick()’:

          :(.text+0x14dc): undefined reference to `tone(unsigned char, unsigned int, unsigned long)’

          C:\Users\Jakub\AppData\Local\Temp\ccBZV1Iq.ltrans1.ltrans.o:(.rodata+0x13): undefined reference to `Print::write(unsigned char const*, unsigned int)’

          c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr6/crtatmega2560.o:(.init9+0x0): undefined reference to `main’

          collect2.exe: error: ld returned 1 exit status

          exit status 1
          Nastala chyba při kompilaci u desky Arduino Mega or Mega 2560.

          nevím co to úplně znamená v těchhle oblastech jsem nováček 🙂
          s pozdravem
          Jakub

        2. Ahoj,
          Díky za odpověď, změnil jsem to a narazil jsem na další problém 🙁
          v téhle oblasti sw jsem začátečník tak mě prosím ber s rezervou 🙂
          vyhodilo to na mě tuhle hlášku:

          C:\Users\Jakub\AppData\Local\Temp\ccBZV1Iq.ltrans0.ltrans.o: In function `Buzzer::tick()’:

          :(.text+0x14dc): undefined reference to `tone(unsigned char, unsigned int, unsigned long)’

          C:\Users\Jakub\AppData\Local\Temp\ccBZV1Iq.ltrans1.ltrans.o:(.rodata+0x13): undefined reference to `Print::write(unsigned char const*, unsigned int)’

          c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/7.3.0/../../../../avr/lib/avr6/crtatmega2560.o:(.init9+0x0): undefined reference to `main’

          collect2.exe: error: ld returned 1 exit status

          exit status 1
          Nastala chyba při kompilaci u desky Arduino Mega or Mega 2560.

          jestli víš co s tíhmle budu strašně šťastnej když se podělíš

          díky

          Jakub

          1. Netuším, co jsi s tím Marlin dělal, ale doporučuji ti, stáhnout ho znovu a nedělat nic víc, než je nutné.

  6. Thank you… after three days of fighting with the delta printer, in the end you helped me see the light … good work…

    1. Can you give me your firmware for reference? I couldn’t configure it.
      My printer: Anycubic kossel linear plus, probe version 2, bed version 1,
      thanks

        1. This configuration file you have configured for the printer Anycubic kossel linear plus, just download and use it? do you need any more correction? thank you

          1. My personal advice is:
            Download and, check all steps one by one and modify anything you need to.
            I used it for Anycubic Kossel Linear Plus, Probe 2, Ultrabase.

          2. Well thank you for your advice very much! let me ask a question that in your zip file I see no other libraries like board.h, stepper.h .v.v.

  7. Everything for me has been working extremely well except for the one issue I’m encountering right now.

    example case printing calibration cube
    leveling is good and print goes well, however, at about 95% completion the printer doesn’t fill in the entire Z and instead trails off the print completely with the last bit of filament extruded on the side of the build plate.

    example 2 printing small figurine.
    once again everything seems to be going perfectly fine but at about 40% completion the printer decides to start printing about 0.5inch higher than the rest of the print.

    Am I missing something? Is there a chance this isn’t firmware related?

  8. Disaster! After printing fine I cannot auto calibrate. I have reinstalled many version of marlin 2 and nothing works. Printer starts auto calibrating, then stops half way to the bed, start gonung uo in increments (says checking AC) goes sideways and says Probing failed! I have tried resetting through meny and through pronteface. At some point pronterface says my eeprom is different version than firmware. I think it all started when I selected initialise eeprom at some point after something I read online. I am really frystrated working for 2 days on this.I was printing rc3 face masks for covid19 for a voluntary group and now I cannot Please help

  9. Hi , I have installed Marlin on my Kossel Plus and it works great. Is there any guide for the menu? How to adjust Z offset after auto calibration? I used tune after I started the print and I managed to adjust the issue. Is there another way in the menu?Thank you

  10. Dobrý den Lukáši,
    jsme úplní začátečníci v 3D tisku. Máme novou 3D tiskárnu Anycubic Kossel Plus. Po sestavení se nám zapne, uvítá nás, display naběhne do info stavu. Při vložení dodané karty, se karta načte a lze procházet. V menu dáme Print from SD, zde lze procházet strukturu adresářů, ale nejde (a nebo neumíme) zvolit stl soubor – vůbec nejsou vidět, přestože při procházení na počítači na dodané kartě nějaké testovací a ukázkové jsou. Jiné karty Adata SDHC 4GB, Kingstone 8GB, formát FAT32 s obsahem jen dvou stl souboru se v tiskárně vůbec nenačtou.

    Při použití dodávaného SW Cura 15.04.6 (nastaveno dle manuálu na Windows 10 ver. 1909) se po odeslání modelu na tisk stane to, že se tiskárna zřejmě restartuje. Display na ní na okamžik zhasne, problikne ANYCUBIC PLUS Welcome a zobrazí se základní info screen. A SW nahlásí chybu spojení.

    Prosím nesetkal jste se s podobných chováním? Vyřešil by i toto chování nový firmware? Můžeme ho přepsat, i když je tiskárna v záruce?

    Děkuji a přeji hezké Velikonoce.

    Dan

    1. Tiskárna neumí číst stl soubory, je potřeba používat gcode soubor, který generuje slicer (Cura například).
      Nový FW klidně můžete zkusit použít.

  11. Hi Lukas, awesome guide tanks!
    I tried to load the firmware but I report a “probing failed” when I try to make Delta Calibration on my printer… I don’t knows what’s wrong… These was what PC receiving when G33 starts:

    21:11:19.346 : N20 G28*33
    21:11:24.408 : X:0.00 Y:0.00 Z:326.07 E:0.00 Count A:44725 B:44725 C:44725
    21:11:34.858 : G33 Auto Calibrate
    21:11:34.861 : Checking… AC
    21:11:34.863 : .Height:310.00 Ex:+0.00 Ey:+0.00 Ez:+0.00 Radius:132.44
    21:11:34.865 : . Tx:+0.00 Ty:+0.00 Tz:+0.00
    21:11:41.355 : Deploy Z-Probe
    21:11:59.767 : Iteration : 01 std dev:293.474
    21:12:04.116 : Stow Z-Probe
    21:12:07.421 : Error:Probing Failed
    21:12:07.423 : Correct delta settings with M665 and M666

    1. Hi,
      Did you check your probe type?
      Check your wiring and connectors also.

      Also did you click the button to deploy Z probe?

  12. Hi thanks for this guide.
    But I found one problem marlin 2.0 when is printing finished printing head start going up and collisioning with linear plus X. Can you help me with this problem?

  13. Lukas,
    I have not been able to get online for a while but i wanted to thank you for all your help in previous posts i was never able to get the new magnetic rods to auto calibrate so i went back to stock rods thank you so much for your help though and good health to you!

  14. I was thinking of selling Kossel as the 1.1.8 version of the autocalibration issue.

    However, I updated to version 2.0 and the problem disappeared neatly.

    Thank you very much

  15. First thanks for sharing the right up it has been extremely beneficial.
    It is very clear and was able to get my anycubic linear plus up and printing again with stock rods . I have a question though I have a set of magnet rods and when I switch them out and adjust the values the auto calibration wants to crash into the tower after the first few center points I have measured multiple times and the rods are from blueagle they came with exact measurements do you know what might cause this?

      1. i utilized https://www.thingiverse.com/thing:2470129 and had the the effector adapter and carriage mounts printed professionally in nylon i am using blue eagle rods at 288.13 mm all came labeled and when i checked they are exactly 288.13 here is what is in my config h
        #if ENABLED(ANYCUBIC_KOSSEL_PLUS)
        // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
        #define DELTA_PRINTABLE_RADIUS 120.0 // (mm)
        // Center-to-center distance of the holes in the diagonal push rods.
        #define DELTA_DIAGONAL_ROD 288.13 // (mm)
        // Horizontal offset from middle of printer to smooth rod center.
        #define DELTA_SMOOTH_ROD_OFFSET 186.0 // (mm)
        // Horizontal offset of the universal joints on the end effector.
        #define DELTA_EFFECTOR_OFFSET 31.0 // (mm)
        // Horizontal offset of the universal joints on the carriages.
        #define DELTA_CARRIAGE_OFFSET 20.6 // (mm)
        // Horizontal distance bridged by diagonal push rods when effector is centered.
        #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-(DELTA_EFFECTOR_OFFSET)-(DELTA_CARRIAGE_OFFSET)) // (mm) Get this value from G33 auto calibrate
        #else
        // Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers).
        #define DELTA_PRINTABLE_RADIUS 120.0 // (mm)
        // Center-to-center distance of the holes in the diagonal push rods.
        #define DELTA_DIAGONAL_ROD 288.13 // (mm)
        // Horizontal distance bridged by diagonal push rods when effector is centered.
        #define DELTA_RADIUS 97.0 // (mm) Get this value from G33 auto calibrate
        #endif

        1. I have also tried adjusting both of these up and down to see if it effects the crash with out any change
          // Horizontal offset of the universal joints on the end effector.
          #define DELTA_EFFECTOR_OFFSET 31.0 // (mm) tried upto 37.0
          // Horizontal offset of the universal joints on the carriages.
          #define DELTA_CARRIAGE_OFFSET 20.6 // (mm) tried upto 28.0

  16. Awesome Guide. I’m having an issue when the probe is lowering for the auto-calibration is stops about 1 inch from the bed, never touching, and then gives a probing failed error. what do you think could be causing this? Thanks!

  17. Hi there!
    Thank you very much for this (and the other) great guide(s)! Keep up the excellent work! Maybe you could write something about PETG & retraction & the Kossel. I wasted hours in the Cura options to find a ideal solution for supports and the right retraction with PETG.

      1. Hi,
        thank you for your reply. I am using 60 mm/s at 3mm for retraction. It is still not perfect. I have still trouble with some strings. Especially on the first layer.

  18. Hi, Thanks for your article.
    I am new to these things and a bit daunted. I bought an ANYCIBIC linear plussome time ago and after a straight-forward build with good initially tests of bed-leveling and so-forth moved it to its working bench, wrongly re-connected a wire which had come adrift in transit and blew Trigorrila board. Bought replacement board and installed but got lost trying to configure Marlin. Then busy with other stuff so the pKossel has just been sitting there for about 6 months!
    I’m ready to have anpther go using your info but confidence is at a minimum.
    Already stuck as to where to find the configuration of PID values for the original V5 J-Head. I would be very grateful for your help with this. I’ll probably have some other stupid questions to ask later.

  19. Awesome guide! I have owned kossel plus now for 4 months, and wanted to get rid of the stock firmware – this helped me get everything set up!
    Next step: V6 upgrade (probably) 🙂

  20. Hi Lukas,

    thanks a lot for your guide!

    Do you know what setting I have to use for and SKR 1.3 with TMC2209 (V3 from Fysetc)?

    And is there a newer configuration as Marlin is already on 2.0.3?

    Best regards
    Mischa

    1. Hi, you are welcome.
      Look for a bigtreetech GIT, look for a SKR manual.
      Compare Fysetc and Bigtreetech driver pins, set it to UART and connect it by the manual.

      There is no need to upgrade from 2.0.0 to 2.0.3, there is no major difference.

    2. Hello Lukas,
      I’ve got the kossel linear and updated to your Marlin 2.0 my bed is 200mm, aluminum heatbed with glass bed and my probe is V 2. What do I have to change in config.h? After the upgrade it won’t do auto calibration. Please any advice.

      1. What do you mean by “After the upgrade it won’t do auto calibration.”?
        All steps should be mentioned in the guide, such as rod lenght, bed radius and so on.
        Follow the next guides about calibration.

Leave a Reply

Your email address will not be published. Required fields are marked *