(Erster Entwurf. Work in Progress. Anmerkungen und Verbesserungsvorschläge willkommen.)
- Visual Studio Code installieren
- PlatformIO und Marlin Auto Build installieren
- Quellcode von Marlin und Configurations.zip runterladen
- Marlin entpacken und Drucker-Konfigurationsdateien ersetzen
- Komplieren
- Weitere Änderungen vornehmen
- 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.