3D-DIY.de

Marlin Firmware Update via OctoPrint

Der übliche Weg, eine neue Version von Marlin aufzuspielen, führt über die Arduino IDE. Das funktioniert soweit auch wunderbar. Umständlich wird es nur, wenn man Drucke nicht per SD Karte auf den Drucker bringt, sondern ihn z.B. via OctoPrint fernsteuert. Dann ist der USB Port in mit einem Raspberry Pi oder anderen Boards verbunden und müsste für jedes Firmware Update umgesteckt werden.

Es gibt aber auch einen einfacheren, wie ich finde, sehr bequemen Weg, für Firmware Updates, ohne Umstecken. Für OctoPrint wird das Plugin Firmware Updater angeboten. Dadurch erhält die OctoPrint Oberfläche einen zusätzlichen Menüpunkt, über den eine kompilierte HEX Datei der gewünschten Marlin Version auf den Drucker geladen werden kann. Und so bringst auch du neue Firmware direkt per Browser auf das Board.

Firmware Updater für OctoPrint installieren

Installiere zuerst das Firmware Updater Plugin in OctoPrint, das geht am besten direkt über den Pluginmanager. Außerdem benötigt das System, auf dem OctoPrint läuft (in der Regel irgendeine Form von Linux auf einem Raspberry Pi) ein zusätzliches kleines Programm, um mit dem Microprozessor des Boards kommunizieren und ihn programmieren zu können: Avrdude. Zum Installieren musst du via Kommandozeile auf deinen Pi zugreifen, grundlegende Linux-Kenntnisse sind an dieser Stelle von Vorteil, aber nicht unbedingt nötig.

Um auf die Kommandozeile zugreifen zu können, empfiehlt sich für Windows-Rechner die Freeware PuTTY, macOS Nutzer haben bereits Terminal vorinstalliert, und können darüber auf den Pi zugreifen. Als nächstes solltest du die IP-Adresse oder den Hostnamen kennen, unter dem dein OctoPrint erreichbar ist, für diese Anleitung gehen wir einfach davon aus, dass die IP 192.168.1.10 ist. Außerdem benötigst du die Zugangsdaten zu deinem Pi. In der Standardinstallation von OctoPi ist der User „pi“ und das Passwort „raspberry“. Wenn du deinen OctoPrint Server selbst aufgesetzt hast oder bei der Installation von OctoPi das Passwort, wie empfohlen geändert hast, gebe dein Passwort ein. Möglicherweise ist auch der Nutzername nicht „pi“ sondern z.B. „root“. Im Folgenden gehen wir von OctoPi mit Standard-Zugangsdaten aus.

SSH-Zugriff auf Windows mit PuTTY

Öffne PuTTY und trage im Feld „Host“ die IP oder den Hostnamen deines OctoPrint Servers ein, klicke dann auf „Open“. Im dann geöffneten Fenster wirst du zunächst nach dem Nutzernamen gefragt und dann nach dem Passwort. Wenn du beides eingegeben hast, bist du mit der Kommandozeile des Pi verbunden und kannst mit der Installation von Avrdude fortfahren.

SSH-Zugriff auf macOS mit Terminal

Öffne Terminal und verbinde dich mit deinem Pi, indem du folgenen Befehl eingibst:

ssh pi@192.168.1.10

Danach wirst du aufgefordert, das Passwort einzugeben. Nach der Bestätigung bist du auf der Kommandozeile des Pi und kannst mit der Installation beginnen.

Avrdude installieren

Die folgenden Befehle bitte zeilenweise eingeben, mit Enter bestätigen und den Anweisungen auf dem Bildschirm folgen, bevor die nächste Zeile eingegeben wird.

sudo apt-get update
sudo apt-get install avrdude
exit

Firmware Updater konfigurieren

Damit ist die Installation schon fast abgeschlossen. Im letzten Schritt gehst du in die Einstellungen von OctoPrint, öffnest aus dem linken Menü „Firmware Updater“ und klickst dann auf den kleinen Schraubenschlüssel in der oberen rechten Ecke des aktuellen Fensters. Dadurch gelangst du zu den Einstellungen des Plugins. Hier musst du einige Anpassungen vornehmen und den Pfad zum gerade installieren Avrdude angeben. Das Ganze sollte dann wie folgt aussehen.

Damit ist dein OctoPrint nun bereit, Firmware Updates auf deinem Drucker zu installieren.

Firmware aktualisieren

Über OctoPrint kannst du nicht die bekannten Arduino Sketches direkt kompilieren und hochladen, du benötigst eine HEX Datei. Die kannst du z.T. auch beim Hersteller ode rin Communities runterladen. Bspw. liegt meiner aktuellen Preview von Marlin 2.0.x eine solche HEX Datei bei. Du kannst sie aber auch selbst erstellen.

Öffne dazu die gewünschte Version der Firmware in der Arduino IDE, unter dem Menüpunkt „Sketch“ findest du dort den Eintrag „Kompilierte Binärdatei exportieren“. Dadurch wird der Firmware Sketch wie üblich geprüft und kompiliert. Bei Erfolg findest du im Ordner, in dem deine Firmware liegt zwei neue Dateien mit der Endung .hex. Eine Datei enthält einen Bootloader (Erkennbar am Dateinamen), die andere nicht. Wie benötigen unbedingt die Version ohne Bootloader. Wählst du hier die falsche könnte das dein Board unbrauchbar machen. Eine Wiederherstellung ist zwar möglich, aber kompliziert.

Gehe in OctoPrint zum Firmware Updater, wähle den USB Port, an dem der Drucker hängt aus dem Dropdown aus und öffne unter „…from file“ die gerade erzeugte HEX Datei. Mit Klick auf „Flash from File“ wird das Update gestartet. Das dauert 1-2 Minuten. Am Ende des Prozesses sollte der Drucker sich neu starten.

Damit ist das Update abgeschlossen. Künftig musst du also nach Änderungen in der Firmware oder zum Aufspielen neuerer Marlin Versionen nicht mehr den USB Stecker umstecken. Du erzeugst einfach eine Binärdatei und lädst sie via OctoPrint hoch.

War das Tutorial nützlich für dich?

Dir hat das Tutorial gefallen, du konntest es für dich selbst umsetzen oder den entscheidenden Anstoß für dein Projekt mitnehmen? Das freut mich!

Wenn du magst, kannst du dich mit einem Kaffee erkenntlich zeigen.

Kennst du die schon?

14 Kommentare zu „Marlin Firmware Update via OctoPrint“

  1. Hallo Habe es nach dieser anleitung gemacht mit dem unterschied das ich einen pi2b+ in verwendung habe. es komt immer timeout communication with programmer. was mache ich da falsch?

    LG Marco

    1. Hallo Marco,

      wichtigste Frage ist: Was für ein Mainboard verwendest du? Die konkreten Schritte in der Anleitung beziehen sich noch auf 8bit Boards. Inzwischen sind ja 32bit Controller eher verbreitet. Das funktioniert dort zwar prinzipiell genauso, benötigt aber ein paar abweichende Einstellungen.

      Ansonsten wäre die Möglichkeit, dass das USB Kabel die Ursache deines Problems ist. gerade die billigen blauen, die vielen Druckern beiliegen sind von schlechter Qualität und sehr störanfällig. Das fällt bei solchen Übertragungen, wie einem Firmware Update schnell ins Gewicht. Ich würde daher mal auf ein hochwertiges USB Kabel mit ordentlicher Schirmung und Ferriten an beiden Enden setzen.

  2. Sehr interessant.

    Geht das auch so nach dieser Anleitung mit einem frischen ender 3 an dem noch nichts gemacht wurde und frisch aus dem Karton kommt?

    1. Hi Danyel,

      ich besitze selbst keinen Creality Drucker, um dir das 100%ig zu sagen. Aber soweit ich weiß, ist auf den Boards von Creality ab Werk erstmal kein Bootloader installiert. Den braucht es aber, damit das hier klappt. Sprich du müsstest erstmal den verfügbaren Anleitungen folgen, um erstmalig Marlin inkl. Bootloader auf deinem Ender zu flashen. Wenn du das einmal gemacht hast, kannst du bei künftigen Updates dieser Anleitung hier folgen.

  3. Hi all,

    erstmal besten Dank für die sehr gut geschriebene Anleitung.

    Ich habe einen Ender2. Da ist aber schon eine andere Version von Marlin drauf. ( Hab ich selber gemacht) Worauf muss ich nun in Sachen Bootloader achten ? Muss ich „Ohne Bootloader“ einstellen?
    und welche „Flash Method“ muss ich auswählen ?
    Ich freue mich schon auf die neue Version.

    Vielen Dank für alles
    Sandman

    1. Hallo Sandman,

      generell soll beim Update über OctoPrint immer die Version ohne Bootloader verwendet werden. Den Bootloader solltest du ja an sich schon auf deinem Board drauf haben, wenn du schonmal ein Firmware Update gemacht hast. Soweit ich weiß, liefert Creality seine Drucker ohne Bootloader aus, sodass erstmal nur mit einem ICSP an die Firmware dran kommt. Dann geht das nicht via Octo. Aber wenn man schonmal dran war und dabei einen Bootloader aufs Board gebrannt hat, dann kannst du dieser Anleitung folgen.

    1. Hallo, willkommen im Blog!
      Soweit ich das verstehe, müssten HEX und BIN das gleiche sein. Arduino nennt die nur in der Regel Hex-Files, es sind aber immer Binaries, also übersetze Versionen des C-Codes. Du könntest einfach mal versuchen, das Update mit dem .bin durchzuführen. Wenn OctoPrint das nicht akzeptiert, ändere einfach die Dateiendung von .bin in .hex und es sollte gehen.

  4. Hey Kevin, hatte ich neulich auch gemacht das exportieren einer.hex. Der Name der der hex Datei gegeben wird von was hängt das denn ab bei mir hieß die irgendwie configah.hex oder so ähnlich.

    1. Hi Silvio,
      ich meine der Name der Hex hängt vom Namen des Arduino Sketch ab, Sprich vom Ordner und der .ino Datei (Die beide gleich sein müssen). Jedenfalls heißt bei der 2.0.x der Ordner und damit die .ino beide „Marlin“ ind die Hex heißt dann „Marlin.ino.mega.hex“.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.