Firmware, Marlin, Arduino, *.hex und hochladen….

Ein Thema, von dem ich so überhaupt keine Ahnung habe, da fallen mir nicht mal die Fragen dazu ein. Manchmal muß es aber sein und zum Glück gibt es die Hilfe von unserem Freund Stephan! Und so ist das genau genommen nicht mein Werk, hat aber den Vorteil, ich kann wieder nachsehen und Ihr auch. Marlin anpassen am A10M im Dialog mit Stephan und paar Bilder und Links dazu.

S.: Also… es gibt 2 Arten eine Firmware bereit zu stellen. Im Quellcode oder als Hex Datei. (das gilt erst mal nur für Marlin im Zweifel)

Die Hex Datei ist quasi die Endkundenvariante, verpackt, muss man nur auf den Drucker „kopieren“, mit Cura, mit dem Programm des Herstellers oder ein kleines Tool wie Xloader.

Die Bereitstellung als Quellcode ist dann für die Bastler.. dazu braucht es dann die Arduino Software mit den ganz vielen Fenstern.

Änderungen spielen sich im Normallfall eigentlich alle in der Configuration.h Datei ab, evtl. seltener auch mal configuration_adv.h oder pins.h.
Man kann dann mit der Arduino Software wieder eine .hex machen und die wie in Variante 1 auf den Drucker kopieren, oder man schließt den Drucker an den PC an und kopiert mit Arduino ohne eine hex zu erstellen auf den Drucker. Für beide Varianten muss ein Bootloader auf dem Drucker sein (Ender3 hat das nicht, der A10M jedoch schon)

U.: Wenn ich das richtig verstehe wird die hex auf den Drucker gespielt und läßt sich nicht bearbeiten. Das auf GitHub ist die zum Bearbeiten. A10M müßte den Bootloader bereits haben. Datei speichern unter ist aber nicht der Weg zur hex.

S.: Korrekt, Hex kannst nicht ändern, das ist friss oder stirb. Den Quellcode von GitHub kann man ändern wie man lustig ist. Geeetech aktualisiert im Moment das Github nicht, gibt aber immer wieder mal eine neue Hex raus.

„Speichern unter“ in Arduino speichert die Änderung am Quellcode auf deiner Festplatte. Der Weg zum Drucker geht anders. Entweder direkt auf den Drucker schreiben oder eine Hex erstellen, die kannst Du mit Cura versuchen auf den Drucker zu kopieren.. Das ist das da: Cura 15.x.x zum Flashen eines Hex. Man kann es auch mit der aktuellen Version von Cura probieren, oder was Anderem. Gibt’s ein paar Tools dazu..

U.: Die haben ja das Druckbett auf 220 begrenzt. Würde ich da ändern wollen.
Wie erzeuge ich die Hex? Der Beitrag von Dir steckt im Hinterkopf!

S.: Dein Ansatz ist Richtig.. du brauchst das GitHub Geraffel, dann wie du schon gesagt hast, die 2 Zeilen auf 235 ändern. Fertig. Der Margin bleibt wie er ist denke ich.
Nachdem das geändert ist, muss die Firmware irgendwie auf den Drucker..

U.: Sketch überprüfen/kompilieren und kompilierte Binätdatei exportieren?

S.: Sketch überprüfen ist immer eine gute Idee, ja, da zeigt er an, ob es Fehler gibt.
Wenns da keine Fehler gibt, gibts dann ab da wieder 2 Wege, eigentlich 3 um diese neu kompilierte Firmware auf den Drucker zu bekommen:
a) kompilieren und eine Hex Datei erzeugen mit „Kompilieren und Binärdatei erzeugen“ oder
b) Sketch kompilieren und danach Sketch Hochladen: schreibt direkt auf den per USB angeschlossenen Drucker, oder
c) Sketch kompilieren und dann „Hochladen mit Programmer“, das brauchen wir zum Glück bei Geeetech nicht.

U.: …und wenn wie bei mir eine Fehlermeldung kommt einfach wegrennen…

S.: Fehlermeldungen sind das Nervige. Eventuell hast Du bei Werkzeuge -> Board das falsche Mainboard ausgewählt. Oder es fehlen zusätzliche Bibliotheken, die man in Arduino erst noch nachinstalliere muss. Oder Geetech hat im GitHub geschlampt, das gibt’s auch oft.. Oder der Mond steht im falschen Winkel zur Z Achse.. Da muss man dann die vollständige Fehlermweldung kenne, um da helfen zu können.

U.: Genau gesagt hab ich nicht gewählt aber ich schau mal.

S.: Ich glaub, der A10M hat nen AtMega 2560?

U.: Richtig!

S.: „Arduino / Genuino Mega oder Mega 2560“ wäre dann vermutlich die korrekte Auswahl bei Boardtyp

U.: kompilieren abgeschlossen.. Danke!

S.: Keine Fehler?

U.: Nö. Is das schlimm?

Der Rest nun im Alleingang. Der A10M macht es einfach. Der Bootloader ist bereits drauf. Etwas unüblich – der USB-Port liefert keinen Strom und der Drucker muß vom Netzteil versorgt werden. Bei mir war kein Treiber erforderlich. Die COM-Schnittstelle wurde von Windows erkannt. PronterFace hat die auch erkannt aber sich nicht verbunden. Kurzes Zucken nur im Drucker. Ich hab nicht lange ausprobiert sondern Cura verwendet. Das geht so easy, daß ich es schon fast nicht mehr erwähnen möchte.


Unter Drucker verwalten steht Firmware aktualisieren. Ein Klick, Benutzerdefinierte Firmware hochladen und die hex-Datei auswählen. Schon wird alles auf den Drucker geschaufelt. Erledigt! Das passiert so völlig ohne Pauken und Trompeten, da muß man erst mal auf den Drucker sehen um festzustellen, der bootet neu.

Hinweis: Die Arduino IDE erstellt unter Umständen 2 Hex Dateien. Achte auf den Namen, die eine heisst so wie das Projekt mit der Endung .hex, die andere hat den Zusatz „_with_bootlloader.hex“ und ist etwas größer. Im Zweifel, es sei denn Ihr wisst, was Ihr tut, nehmt Ihr die kleinere, ohne Bootloader.

Eine kleine und eine wichtige Anmerkung noch dazu! Auch Creality bietet immer mehr Erweiterungen wie BL-Touch oder Filamentsensor für die eigenen 3D-Drucker an. Ohne Bootloader ist es jedoch deutlich schwieriger mit der Nachrüstung. Die späte Rache dürfte der schlechtere Verkauf der Erweiterungen sein. Und es muß sein! Änderungen an der Firmware können unangenehme Nebenwirkungen haben und zu Beschädigungen am Gerät führen. Wir übernehmen keine Garantie! Alles auf eigene Gefahr!

27 Kommentare

  • ich bin in der glücklichen Situation, dass auf meinem Drucker (Swx2)ein Marlin 2.2…. läuft ( hat mir ein Kollege installiert) Bräuchte aber jetzt so eine Art Bedienungsanleitung dazu, wenn’s geht in Deutsch – gibt’s sowas, oder muß ich es selbst ausprobieren?

    • Komm am besten mit der Frage ins Forum.. und dann schreib mal frei von der Leber weg, was unklar ist..

    • Glücklich oder nicht, da sagt die Versionsnummer nichts darüber aus. Die Version muß zum Drucker passen. Der Rest ist mehr eine Frage der Einstellungen. Nur können wir aus der Ferne nicht beurteilen, was in Deiner Marlin-Version alles freigeschaltet wurde. Wir kennen ja nicht mal den Drucker. Auf marlinfw.org gibt es eine Erklärung zu allen Funktionen im Marlin, aber ob die auch alle aktiviert sind… Eher nicht. Die schließen sich ja teilweise gegenseitig aus. Oft gehört zum Marlin auch eine Display-Firmware, welche die Bedienung des Druckers erst ermöglicht. Wie Stephan bereits sagt, ist das im Forum besser zu klären.

  • hallo.
    grundsatz: man soll sich nicht zu früh freuen. nachdem compilieren und hex erzeugen für den A10T und A10M easy war, die ernüchterung. hab entweder irgendwas verstellt oder upgedated, jedenfalls geht nun nichts mehr.
    marlin 2.0.7.2 neue version, aber auch 2.0.6.1
    arduino 1.8.13.

    beim compilieren kommt die fehlermeldung:

    fork/exec j:\3d-druck\arduino\hardware\tools\avr/bin/avr-gcc.exe: the filename or extension is too long.

    beim A20M und bei A20T mit den dazu passenden configs

    den fehler findet man im netz laufend bei marlin 2.0…. und lösungsvorschläge die alle nichts helfen. sicher 20x neu installiert. alte und neue versionen. und das seltsame vorher gabs das nicht…….

    verflixt. geht das bei jemandem? dann wäre ich für ne hex datei dankbar…… (das druckbett sollte dann auch auf 255 x255 sein…)

    gerne für die drucker: A20M, A20T, und den A10T….. (230×230 bett)

    mein dank wird euch dann lange nachschleichen.

    vg. alf

    • Marlin 2.x hab ich am A10M nicht versucht. Würde mit Arduino auch nicht funktionieren. A10T, A20M/T hab ich hier nicht. Welches Board ist sicher auch nicht unwichtig. Zur Verfügung stellen kann Dir hier keiner etwas. Hier gibt es keinen Upload. Also mach bitte im Forum ein Thema auf. Dort sind sicher paar Leute mehr in der Lage zu helfen.

      • cMarlin 2.x hab ich am A10M nicht versucht. Würde mit Arduino auch nicht.. “
        warum nicht?

        funzte bei mir ja. nur hetzt nicht mehr.
        mir gehts eientlich um fehlermeldung die nun kommt….. sodass kompilieren failed….

  • hi.
    darf ich untertänigst kurz fragen, da ich das compilieren versuche…
    (geeetech A10T, marlin 2.0.6.1 heruntergeladen, für A10T die zwei Configuration.h und Configuration.adv.h heruntergeladen)

    a) gleiche boardauswahl wie für 10M??
    b) bei arduino-sketch erscheinen mir oben nur die files marlin, Configuration.h,Configuration.adv.h und Version.h, nicht aber die oben angezeigten übrigen files…….
    ich hab diese files im gleichen folder wie marlin.ino…
    find den fehler nicht….
    c) und der compilierungsbalken ging so 1 cm weit, dann schon ne h stillstand…… wie lange geht denn so ne compilation?

    thx.

    • untertänigst? Ich würde Dir gern helfen aber das wird mit ja und nein nicht funktionieren. Im Forum ist da eindeutig mehr Publikum mit entsprechendem Wissen und es läßt sich durch Dateianhänge besser beantworten. a) weiß ich nicht. Selbst beim A10M gibt es mehr als ein Board bei Geeetech. Da hilft nur nachsehen. b) woher kommen denn diese Configuration.h, Configuration.adv.h und Version.h. Welche Marlin-Version ist das denn… Daher wird sich das wohl in c) irgendwo aufhängen.

      • hi uwe.
        so , nun ist compilieren gelungen. hatte wohl die falschen configurations files. jedenfalls überprüfung ohne fehler und hex-datei ausgegeben.
        versuch ich mal bei gelegenheit, da der bootloader ja fix drin ist im a10t, wie ich hoffe, kann ja nix versaut werden…

        arduino-sketch 1.8.13
        Marlin release version „2.0.6.1“
        #define CONFIGURATION_H_VERSION 020006
        #define CONFIGURATION_ADV_H_VERSION 020006

        vg.

  • Hallo,

    sorry, wahrscheinlich Doppelpost. Aber ich bin seit Tagen nur am lesen und versuchen zu verstehen. Kann eh nicht drucken, da mein 4max pro nach gescheitertem Firmwareflashen mit cura nicht mehr druckt.

    Hab ich Hoffnung das wieder hinzubekommen? Cura erkennt den Drucker nicht mehr, es steht da kein Drucker angeschlossen, obwohl mit usb Kabel verbunden und eingeschaltet. Beim anstecken ertönt das Windowssignal und in der Systemsteuerung erscheint unter comanschlüsse irgenwas mit Siliconlab o.s.ä.

    Falls ich hier falsch bin, Sorry

    Gruß Dreamit

    • Für Fragen haben wir das Forum und diese Frage ist da schon unzählige Male beantwortet. Vermutlich versuchen mehrere Programme gleichzeitig auf den Drucker zuzugreifen. Also schließen. Cura ist auch nur eine von vielen Möglichkeiten.

  • Martin Herhaus

    ich verzweifel grad am dem „reprapdiscount smart controller“
    Irgendwie mag er mich nicht … Display ist nicht das Problem, allerdings reagiert Marlin bei dem Drehknopf nur auf den Druck, nicht aufs drehen. Ich habe im Marlin schon andere Controllerkonfigurationen ausprobiert, dann reagiert der aufs drehen, verhält sich aber als würde gedrückt (und der Beeper brüllt vor sich hin).
    Wo finde ich die Konfiguration, welcher IO Pin vom Ramps Board, dem Dreh/Druck knopf zugeordnet wird?

  • Mal ne Frage zur Hex-Datei… Die muss ja theoretisch irgendwo sein… am Ende des Tages oder der halben Stunde. Aber WO?
    Unter Linux wird mir zwar ein Pfad in „/tmp/arduino…“ angezeigt, aber den gibt es entweder nicht oder er wird so schnell gelöscht, dass man damit nix anfangen kann. Im „Explorer“ zuckt nicht einmal die Anzeigte, während des Kompilierens.

    Man könnte natürlich auch noch mal Windows in der VM starten. 🙁 Ist der Pfad unter Windoof wenigstens klar? Eine Auswahlmöglichkeit „wohin“ man den Export machen will, kennt das Programm (unter Linux) scheinbar nicht und die Pfadangaben helfen ebenfalls nicht. Das wäre ja zu einfach.

    • Also bei mir liegt die .Hex im selben Verzeichnis wie die .INO.. Hilft das?

      • scheint zu helfen 😉
        Ich kann eine „Marlin_v4.ino.sanguino.hex“ finden. ==> Verzeichnisnme PLUS Boardname. Datum von heute.

        In diesem unübersichtlichen Verzeichnis hätte ich nie gesucht!
        Es gilt: „Kaum macht man es richtig, schon funktioniert es.“ – Thx

  • Das Flashen hinzu gefügt…

  • Danke für den super Beitrag. Ergibt für mich viel Lernpotential. 😉

  • Hat schon jemand versucht über Octopi zu flashen? Dann musste ich nicht jedes mal zum Drucker laufen um den diesen umzustöpseln 🙂 Habe mir schon mal kurz ein plugin installiert, das wollte aber zuviel von mir wissen. Keine Zeit für Jugend forscht….

    Was mich auch noch interessieren würde. Wie erhalte ich meine Calibrationmesh? Nach dem Flaschen ist diese immer weg.

    Gruß

    • Ich flashe mein(e) BNC3DSigmax R19 praktisch fast nur noch über OctoPrint mit dem Plugin „Firmware Updater“.
      Wenn Du deine Firmware benennen würdest, könnte ich vielleicht mal in die Source schauen, wo die Daten gespeichert werden, wie man den Verlust verhindern kann und ob OctoPrint eine Option dazu hat.

    • Wolfgang_mimimi

      was bedeutet denn „jedes Mal“? Wie oft willst Du denn flaschen? Das muss ja nicht täglich wiederholt werden.

      • Nein, ich flashe natürlich nicht täglich.
        Für was soll das gut sein?
        Wer würde sowas machen?

        Nein, es geht hier in die Richtung „Ich flashe etwa halbstündlich :P“.
        Je nach Zeit und was ich an OctoPrint oder Marlin geändert haben möchte.

      • 🙂 Ich halt mich vornehm zurück und schmunzle in mich hinein. Habs oben ja schon in die Einleitung geschrieben. Ich hab keine Ahnung davon. Entsprechend bin ich glücklich wenn es funktioniert aber nur nicht dran rum spielen!
        Ja die Plasikjunkies haben da mal was geschrieben und ich hab es verlinkt aber so weit ich das sehe ging es darum den fehlenden Bootloader zu umgehen. Das Problem stellt sich bei dem A10M nicht aber für Creality-Drucker ist es interessant. Dann laßt Euch von mir nicht stören!

  • Immer wieder schön, wenn ich sowas nicht schreiben muß, und einfach hierher verlinken kann.. 😀

Kommentar hinterlassen

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