Anleitung: Marlin 2.x selbst kompilieren

  • (Erster Entwurf. Work in Progress. Anmerkungen und Verbesserungsvorschläge willkommen.)


    1. Visual Studio Code installieren

    2. PlatformIO und Marlin Auto Build installieren

    3. Quellcode von Marlin und Configurations.zip runterladen

    4. Marlin entpacken und Drucker-Konfigurationsdateien ersetzen

    5. Komplieren

    6. Weitere Änderungen vornehmen

    7. Von SD-Karte flashen


    Voraussetzung: 3D-Drucker-Mainboard mit 32-bit-Prozessor. Marlin 2.x wird nicht für 8-bit-Boards empfohlen. Auf manchen Boards läuft es trotzdem (TriGorilla), aber es muss wegen des kleinen Speichers stark abgespeckt werden (siehe hier) und kann bei fehlendem Bootloader nicht von SD-Karte aufgespielt werden. Das ist ein ganz anderes Projekt.

    Was ist Marlin?
    Marlin ist die Firmware des 3D-Druckers, sozusagen das Betriebssystem. Die Firmware setzt die Befehle (GCode) in der Druckdatei die der Slicer erzeugt hat in Druckbewegungen um. Die Firmware wird dauerhaft in einem Speicherbaustein gespeichert ('geflasht').
    Der Quellcode von Marlin besteht aus vielen einzelnen Text-Dateien in denen z.B. definiert wird, wie groß der Druckbereich ist, welche Funktionen es geben soll, was das Display anzeigt und sogar welcher Pin auf dem Mainboard welche Funktion hat.

    Was ist Visual Studio Code?
    VSCode ist ein freier Quelltext-Editor für Windows, MacOS oder Linux. Marlin 2.x kann/soll nicht mehr mit der Arduino IDE kompiliert werden, deshalb musste ein Editor mit moderner Oberfläche her. Es darf jeder seine eigene Entwicklungsumgebung benutzen, aber auf der Marlin-Homepage wird es mit VSCode erklärt.

    1. Visual Studio Code installieren: Download

    2a. Installation von PlatformIO: In VSCode Ctrl-Shift-X drücken, im Suchfeld PlatformIO eingeben, PlatformIO IDE installieren.

    2b. Installation von [Marlin Auto Build]: In VSCode Ctrl-Shift-X drücken, im Suchfeld marl eintippen und [Marlin Auto Build] auswählen. Das [Marlin Auto Build]-Plugin stellt den richtigen Prozessor für das gewählte Mainboard ein. Man kann das auch von Hand machen, aber so ist es sicherer.

    3. Marlin Quellcode herunterladen. Bei Marlin gibt es offiziell freigegebene Versionen (aktuell 2.0.7.2) und den sogenannten Bugfix-Zweig. Man sollte wenn möglich die freigegebene Version verwenden, weil sie auf Fehler geprüft wurde. Allerdings gibt es für viele Druckermodelle für 2.0.7.2 noch keine fertigen Konfigurationen (als getrennte Datei Configuarations.zip). In diesem Fall muss man die Bugfix-Arbeitsversion benutzen, die ständig aktualisiert wird und keine Versionsnummer hat. Ich benutze das Datum meines Downloads zur Unterscheidung, also "Marlin_2.0.7.2_Bugfix_2021-01-24".

    Für viele Drucker gibt es fertige Konfigurationsdateien unter config/example/{Hersteller}/{Modell}. Diese Unterverzeichnisse sind nicht in Marlin enthalten, sondern in der Datei Configurations-xxx.zip, die man getrennt herunterladen muss. Die Version von Marlin und die Configurations.zip müssen zusammen passen, beim Bugfix also beide aus dem Bugfix-Zweig und dort sogar vom gleichen Tag sein. (Es wird in der Arbeitsversion immer mal wieder die Syntax von neuen Befehlen geändert und dann gibt es unlösbare Fehlermeldungen beim Kompilieren.)

    Am Einfachsten lädt man Marlin von der Marlin-Download-Seite, dann passen Marlin und Configurations.zip garantiert zusammen. Die Bugfix-Version gibt es unten bei 'Nighly Builds'.
    Sonst kann man Marlin hier und die Configurations hier bei GitHub herunterladen. Links oben gibt es einen Knopf mit dem man die 'Zweige' auswählen kann.

    Wer einen Drucker hat für den es keine fertigen Konfigurationsdateien gibt der kann die Dateien eines ähnlichen Druckers (Mainbard, Display, nicht Druckbereich) anpassen. Das ist aber deutlich mehr Arbeit.

    4. Marlin entpacken und Drucker-Konfigurationsdateien ersetzen
    Die heruntergeladene ZIP-Datei von Marlin jetzt entpacken und den obersten Ordner sinnvoll umbenennen (zum Beispiel von marlin-bugfix-2.0.x zu Firmware-Ender-3). Den Ordner so verschieben, dass der Dateipfad nicht zu lang wird (255 Zeichen?).

    Aus der Configurations.zip den richtigen Ordner für den Drucker und das Mainboard heraussuchen und den Inhalt (configuration.h, configuration_adv.h und wenn vorhanden _bootscreen.h und _statusscreen.h) in den Ordner Marlin kopieren. Dort gibt es die beiden ersten Dateien bereits. Sie müssen durch die neuen aus der Configuration.zip ersetzt werden.

    5. Kompilieren. Jetzt in VSCode den umbenannten Marlin-Ordner auswählen [File, Open Folder oder Ctrl-K Ctrl-O]. Dann einmal zum Testen auf [Marlin: Build] drücken und die Firmware wird kompiliert, also in Maschinencode für den Prozessor umgesetzt. Wenn das Kompilieren unten im Fenster ohne rote Fehlermeldungen durchläuft könnte man die erzeuge Binärdatei jetzt auf den Drucker aufspielen.

    6. Weitere Änderungen vornehmen
    In Marlin sind standardmäßig einige Funktionen nicht eingeschaltet die man vielleicht gern hätte. Also kann man jetzt Änderungen vornehmen. Dazu in VSCode links oben auf das Symbol Explore [Ctrl-Shift-E] klicken und im Verzeichnisbaum die passende Datei suchen und anklicken.

    In den beiden Dateien configuration.h und configuration_adv.h im Unterordner Marlin sind die wichtigsten veränderbaren Einstellungen enthalten.

    Zeilen mit // werden als Kommentare angesehen und beim Kompilieren ignoriert. Gelegenheitsnutzer brauchen zum Einschalten von Funktionen meist nur das // vor dem passenden #define zu löschen. Es gibt allerdings auch Kombinationen, die nicht gleichzeitig funktionieren. Dazu später mehr.

    Eine komplette Liste aller Funktionen gibt es hier. Die Kommentare im Quellcode sind auch oft hilfreich und zusammen mit der Liste aller GCodes von Marlin kommt man recht weit.

    Es lohnt sich regelmäßig Sicherungskopien der beiden Dateien zu speichern (oder das Versionsmanagement von VSCode zu nutzen) und nach jeder Änderung zu testen, ob das Kompilieren noch durchläuft. Die Fehlersuche kann sehr aufwändig werden wenn man nicht mehr weiss was man alles geändert hat.

    7. Von SD-Karte flashen. Die erzeugte Binärdatei der Firmware (meist mit der Endung .bin) sinnvoll umbenennen (siehe oben; keine Leerzeichen, keine Sonderzeichen, keine Umlaute). Der Dateiname muss sich von dem der vorhandenen Firmware unterscheiden.

    Auf eine SD-Karte kopieren, Drucker ausschalten, Karte einstecken, Drucker starten. Der Drucker erkennt die neue Firmware-Datei und installiert sie automatisch. (Bei Creality nach 10 Sekunden.)

    Man kann Firmware auch per USB-Kabel über Pronterface oder viele Slicer direkt aufspielen.

    Jetzt noch veraltete Daten aus dem EEPROM-Speicher löschen. Dazu z.B. mit Pronterface über USB-Kabel die Befehle
    M502 (Factory Reset) und M500 (Save Settings) an den Drucker schicken. (Man kann auch von Hand eine .gcode-Datei erzeugen und von SD-Karte 'drucken' die das macht.)

    Wer zusätzlich auch die Hardware geändert hat sollte jetzt erst einmal (z.B. mit Pronterface) jede Achse und Funktion einzeln testen.


  • Respekt und Danke.

    Wenn in diesem Stil mal die Zusammenhänge der 220x Treiber erklärt würden(wenn ich richtig verstanden habe, müssen die ja auch in die Firmware rein), wäre ich ganz überwältigt :D

  • Wenn das Gerüst oben für jeden funktioniert wollte ich die einzelnen Funktionen kurz beschreiben, so dass jeder der das schon mal erfolgreich gemacht hat sein Fachwissen dazugeben kann.

    Ich dachte an einen Thread pro Funktion, dann bleibt es noch irgendwie überschaubar.

  • Ja wenn Du so eine Sondermaschine kaufst ;)

    Versuch mal raus zu bekommen, ob es Mainboard, Treiber und Display von Deinem Drucker auch an anderen Druckern gibt, für die es Konfigurationen in Marlin gibt. Dann kann man die Einstellungen relativ einfach zusammenkopieren.


  • Vorsicht bei DWIN Displays an den Druckern. Der CR10 S Pro ist so einer. Je nach aktivierter Marlin-Funktion nach obiger Anleitung fehlt Dir u. U. die entsprechende Möglichkeit diese auch zu nutzen, da es keinen Menüpunkt dafür in der DWIN FW des Displays gibt. Genau am CR10s Pro, sowie am Ender 5 Plus, dem CR10 Max und eben allen, die ein solches Display besitzen, würde ich keine eigene Marlinversion kompilieren wollen. Ohne die Anpassung der Display FW kannst noch nichtmal die Bettgröße ändern, ohne dass es negative Auswirkungen hat.

    Es gibt aber eine nette Alternative zur Werksfirmware. Tiny Machines Firmware aka Insanity Automation.

  • Quote

    Zitat von mehrwiedu am 25.01.2021, 22:10 Uhr



    Vorsicht bei DWIN Displays an den Druckern. Der CR10 S Pro ist so einer. Je nach aktivierter Marlin-Funktion nach obiger Anleitung fehlt Dir u. U. die entsprechende Möglichkeit diese auch zu nutzen, da es keinen Menüpunkt dafür in der DWIN FW des Displays gibt. Genau am CR10s Pro, sowie am Ender 5 Plus, dem CR10 Max und eben allen, die ein solches Display besitzen, würde ich keine eigene Marlinversion kompilieren wollen. Ohne die Anpassung der Display FW kannst noch nichtmal die Bettgröße ändern, ohne dass es negative Auswirkungen hat.

    Es gibt aber eine nette Alternative zur Werksfirmware. Tiny Machines Firmware aka Insanity Automation.


    Hallo,

    Super erklärt.

    Ich habe auf meiner Kiste die Tiny-Machines DW 6.5 drauf, bin auch zufrieden.

    Wäre halt interessiert manche Sachen zu änder oder freizuschalten.
    Manche Sachen gehen halt nur direkt in der Firmware.

    mfg

  • Quote
    Wäre halt interessiert manche Sachen zu änder oder freizuschalten.
    Manche Sachen gehen halt nur direkt in der Firmware.


    Was meinst Du denn speziell. Solange es dafür keine Bedienung über das Display geben muss, kann man das natürlich tun. Ein Beispiel wäre vielleicht LinAdvance oder Bed PID Tuning. Das kann man aktivieren. Man kann auch den Sensortyp ändern. Von induktiv/kapazitiv auf BLTouch. Aber Mesh-Matrix ändern, Bettgröße ändern, von ABL zu UBL wechseln...sowas geht nicht.

    Aber auch Insanity Automation hat ne Source. Die ist zwar etwas komplexer aufgebaut, weil die prinzipiell alle Drucker bedient und man die einzelnen Modelle darin nur definiert und dann auf die entsprechenden Parameter zurückgegriffen wird, aber letztlich kann man da auch noch spezielle Sachen ändern.

  • Genau sowas möchte ich machen.

    linear advance aktivieren.

    Die Temperatur wenn ich auf PLA klicke nicht auf 210 und 70°C heizt sondern auf 200 / 60°C.

    Beim Leveln auf 60 und 200°C und nicht auf 55 und 215 hochheizt.

    Das sind nur so ein paar Kleinigkeiten die ich gerne Aktivieren und ändern würde, aber ich bin irgendwie in dem Alter wo alles nicht mehr so einfach ist. :)

    Ich will nicht das Rad neu erfinden, aber so paar Verbesserungen für mich wären schon ok.

    Bin und bleibe ein Hardwareguru.



  • Ich hab das Gefühl, dass bei fehlenden Drucker-Konfigurationen meist das Display das Problem ist. Da benutzen mehr Hersteller ihre eigene Hardware als bei Mainboards. Die Mainboards werden oft bei verschiedenen Druckermodellen benutzt, da gibt es früher oder später jemanden der für sich eine Konfiguration bastelt.

    Wenn man unbedingt Marlin möchte kann man ja sein Originaldisplay ausbauen und eines der unterstützten Displays einbauen, z.B. ein BTT TFT24 für unter 20 €.

  • Hach ist das alles kompliziert.... jedenfalls solange wie ich DAU es noch nicht wirklich verstehe...

    ich möchte mir meine eigene Marlin zusammenschustern da die originale und die aktuelle einfach nicht in den vorhandenen Eeprom sondern immer auf die SD-Karte schreibt... das nervt so langsam. Weiterhin will ich ein paar Mesh-Punkte mehr haben für das ABL... 9 Punkte ist zwar schön, 25 sind schöner (ich will immer mehr) . Vorgefertigt gibt es wohl keine passenden Config's... es handelt sich bei meinem (noch) druckenden Gerät um einen Ender 3 pro mit 4.2.2 Mainboard (nicht Silent).

    Wenn also jemand schon was vorgefertigtes findet, hat oder sowieso bauen will dann her damit... ansonsten muss ich mich vom DAU zum Normaluser hocharbeiten.... ;) :mrgreen:



    Haaaaalt, Kommando zurück!

    Entgegen der Webseite mit den angezeigten Config's enthält die komplette *zip auch jede Menge Creality dateien... darunter auch mein Ender 3 pro 8-)

  • Hallo, ich hab heute in meinen Ender 3 pro das silent Board 4.2.7 mit dem tmc2208 eingebaut und die Marken 2.07 geflasht. Soweit hat auch alles geklappt, das einzige was ich vermisse ist das mesh leveling im Menü. Kann mir einer sagen wie ich das in Marlin aktivieren kann? Wenn ich lcd bed leveling aktiviere dann bekomme ich einen Fehler beim flashen.

  • super vielen Dank das werde ich nachher gleich mal prüfen.

    hast du vielleicht auch eine Idee warum ich Probleme habe den Drucker mit octoprint zu verbinden seitdem das neue Board drin ist?

  • Super Anleitung.

    Aber bei Punkt 7 stehe ich an: Wie erstelle die Datei .hex für SD Card oder den Upload im Silcer.

    Im Merlin Plugin finden ich nur eine Button für Upload?

    Bitte um Hilfe.

    lg

    Dieter

  • Moin!

    Ich habe leider das Problem, dass es auf Anhieb nicht funktioniert.

    Ich habe eine Ender 3 v 2 mit dem 4.2.2 board sowie einen BL Touch.

    Versucht habe ich es sowohl mit der "bugfix" Version als auch mit der "latest release" Version aus dem Link zu der Marlin Homepage.

    Nachdem ich die Dateien aus dem Ordner des Ender 3 V2 mit denen aus dem Marlin Ordner ersetze

    diesen in CS Code öffne und via Marlin autobuild durchlaufen lasse kommt u.A. folgender Fehler:



    "Fatal error: can't create .pio\build\STM32F103RET6_creality\FrameworkArduino\stm32f1\wirish_debug.cpp.o: No such file or directory"

    Ich bin echt verzweifelt und auch überfordert :)



    freue mich auf eure Hilfe.

    So ein Murckz..

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Unread Threads

    1. Title
    2. Replies
    3. Last Reply
    1. "Platte" (Raft) unter dem Druckmodell bei Flashprint

      • EmmaLee
    2. Replies
      0
      Views
      17
    1. BIQU Hurakan erste Eindrücke 14

      • Fritz
    2. Replies
      14
      Views
      253
      14
    3. Joker

    1. V0.2 ist raus 26

      • top_gun_de
    2. Replies
      26
      Views
      925
      26
    3. felixna

    1. Hintereinander Drucken oder Pause machen? 1

      • EmmaLee
    2. Replies
      1
      Views
      33
      1
    3. 3D-Designer

    1. Betthaftung zu gut 1

      • adet
    2. Replies
      1
      Views
      27
      1
    3. 3D-Designer