Error: Something is wrong.: Syntax error in template "smartymarkupplugin:smartymarkupplugin:3681648899" on line 6 "
  • Mit
    curl -k -H "X-Api-Key: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -F "select=false" -F "print=false" -F "file=@[output_filepath]" "http://IPADDRESS:PORT/api/files/local" {STRIP "; postProcessing"} 
    kann direkt aus Simplify3D auf den OctoPrint Server gedruckt werden. Dabei sind natürlich der API Key statt den "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" einzufügen, ebenso die URL, unter der OctoPrint erreichbar ist. Wenn man bei "select" und / oder "print" statt "false" den Wert "true" angibt, druckt Octoprint automatisch los. Nicht ändern sollte man die Variable hinter "file" 8-)
  • " unknown tag 'STRIP'
    Error: Something is wrong.: Syntax error in template "smartymarkupplugin:smartymarkupplugin:2237119413" on line 101 "G1 F{travelspeed} ;" - Unexpected "/" Nerdkram - 2 | trueten.de

    trueten.de

    "Here's another nice mess you've gotten me into!" Oliver Hardy

    ESP8266 flashen

    Foto: Make Magazin DE - Eigenes Werk, CC BY-SA 4.0, Link
    Neulich musste ich eine Reihe ESP8266-01S mit einer bestimmten Firmware flashen. Das geht am schnellsten auf der Konsole:
    sudo esptool.py --port /dev/ttyUSB0 erase_flash
    
    sudo esptool.py --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0000 nodemcu_integer_0.9.6-dev_20150704.bin

    Simplify 3d Profil für AnyCubic i3 MEGA mit Titan Extruder

    Da es immer etwas frickelig ist, die richtigen Einstellungen für den Drucker herauszufinden - zumal wenn er "spezielle" Umbauten wie einen Titan Clone aus Shenzen hat - stelle ich hier mal mein Slicer Profil zur Verfügung. Das Profil ist für Simplify 3d in der aktuellen Version. Den Umbau auf einen Titan Extruder und die für Marlin notwendigen Änderungen an der Firmware habe ich ja hier schon erläutert. Inzwischen habe ich natürlich einiges kalibriert, so zum Beispiel die Fahrwege der 3 Achsen, womit die Maße der gedruckten Teile jetzt auf 0.02 mm stimmen. Bei mir lautet diese in der configuration.h so:
    #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80.80, 80.40, 396.432, 453.02}
    

    Als Firmware empfehle ich momentan die von David Ramiro gepflegte Version, zu der es neuerdings auch eine mit BL-Touch Sensor Unterstützung gibt, die von David Ramiro und Marco Niedda zur Verfügung gestellt wird. Ich verwende diese, da ich mein Druckbett mit einem BL-Touch Sensor ausrichte..

    In Zusammenhang mit dem Titan Extruder sollte bei der sehr empfehlenswerten, da dadurch bedeutend leisere Betriebsgeräusche entstehen, Umrüstung auf TMC 2208 Steppertreiber folgendes in der configuration.h geändert werden:
    #define INVERT_E0_DIR true
    

    Die Kalibrierung incl. Geschwindigkeitsoptimierung habe ich entsprechend Michael Laws Anleitung für den Ender 3 durchgeführt, ich empfehle, seine G-Code Dateien einfach auszudrucken, dann spart man sich doch einiges an Fummelei mit dem Slicer.


    HINWEIS:
    Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

    Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen!

    Marlin mit OctoPrint auf AnyCubic i3 MEGA flashen

    Neue Firmware lässt sich natürlich direkt aus der Arduino IDE auf den Drucker flashen. Was aber, wenn der USB Port des Druckers bereits durch eine Verbindung zum OctoPrint Druckserver belegt ist? Sinn des Druckservers ist es ja vor allem, unabhängig vom jeweiligen Arbeitsplatzrechner aus den 3D Druck anstoßen zu können, also fallen Sachen wie  Drucker zum Rechner tragen oder Notebook an Drucker stöpseln, danach wieder den RaspBerry PI ranhängen Turnschuh-EDV aus. Denn für solcherlei Dinge gibt es das auf der Vorarbeit von Nicanor Romero Venier basierende Firmwareupgrade Plugin von Gina Häußge und Ben Lye. Da es sich quasi um ein Frontend für den avrdude Befehl handelt, muss selbiger ebenfalls installiert sein. Das Plugin nimmt einem dann die ganze Arbeit ab, man muss lediglich wissen, wo die kompilierte  *.hex Datei aus der Arduino IDE liegt, anstatt sich

    
    avrdude -p m2560 -c stk500 -U flash:r:marlin-orig.hex:i -v
    
    

    merken zu müssen (wobei das letztlich wesentlich schneller funktioniert).

    Für den AnyCubic i3 MEGA werden darüber hinaus die folgenden Parameter benötigt, damit das Flashen problemlos verläuft:

    Flash Method: avrdude (Atmel AVR Family)

    AVR MCU: ATmega2560

    AVR Programmer Type: stk500v2

    Besonders interessant ist die Möglichkeit, Firmwares direkt aus dem Netz installieren zu können, allein die Eingabe der entsprechenden URL reicht aus. Oder eben der entsprechende Dateiname / Speicherort im lokalen Netz / Rechner.

    HINWEIS:
    Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

    Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

    Titan Extruder am AnyCubic i3 MEGA

    Einer der besseren Titan Clones. Nicht nur der sichtbare Verweis auf die Entwicklergruppe, auch das verwendete Material ist kein windiges: Unter anderem Titan beim Förderrad und POM beim großen Zahnrad, ergänzt von ein paar Kugellagern. Ein nicht lizensierter Clone ist es trotzdem.
    Neulich war mir langweilig und deshalb habe ich den Extruder an meinem Drucker gegen einen Titan Clone aus Shenzen ausgetauscht. Dessen Leistungen sind noch einen Ticken besser als der original Bowden Extruder, der seinerseits ein Clone ist. Vor allem verspreche ich mir ein besseres Handling von flexiblem TPU. Entsprechende Führungshülsen werden mitgeliefert, es empfiehlt sich, wegen dem doch etwas aufwendigeren Aufbau, gleich die weiße Teflon Hülse zu verbauen. Bislang habe ich hier noch keinen passenden Ersatz gefunden, habe aber noch nicht wirklich danach gesucht, notfalls lassen die sich natürlich auch ausdrucken.

    Der Titan wurde von TriangleLabs gefertigt, die Billigstheimer würde ich nicht verwenden, man kann den Extruder auch im Original kaufen. Die Lieferzeiten aus China haben sich deutlich verbessert, innerhalb von 14 Tagen war der Extruder da. Der Einbau verlief problemlos, den Filamentsensor habe ich lediglich versetzt mit einer längeren M4 Schraube am rechten Z-Achsenträger angebracht. Andere haben Montage und Einbau samt Firmwareänderungen für Klipper sowie Marlin bereits ausführlich mit Bildern und in Farbe beschreiben, daher verweise ich dorthin.

    Bei der Gelegenheit habe ich endlich mal den Extruder kalibriert, was natürlich aufgrund der anderen Übersetzung gegenüber dem ursprünglichen auch notwendig ist. Ich verwende 453.02 Steps / Millimeter, die dem Drucker über M92E438.12 mitgeteilt und anschließend mit M500 gespeichert werden können, sofern man nicht die Firmware verändern will. Dann sollte daran gedacht werden, mit M502 diese Einstellungen auch zu laden. Falls die Werte doch in der Firmware geändert werden sollen, sollte man in der config.h den bei den AnyCubic i3 MEGA voreingestellten Wert von 92.6 ändern wie folgt:
    #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 453.02 }
    So können auch die Slicer Einstellungen unangetastet bleiben, sollte es Probleme mit dem Ausdruck geben, die sich nicht mit den üblichen Tipps beseitigen lassen, sollte man zuerst an den Steps regulieren.

    Nachtrag: Bei thingiverse habe ich zufällig einen Rechner für die Kalkulation der Fördermenge des Extruders gefunden. Wer möchte, kann dafür natürlich auch einfach die Rechenfunktion von Marlin verwenden, allerdings benötigt man dazu genaue Daten über den Extruder wie Anzahl der Zähne des Förderzahnrads, Zwischenraum zwischen den Zähnen etc.

    Mikro-Howto: OctoPrint mit RaspberryPI und TouchUI über Elcrow 5" Display steuern

    Dies ist nur ein Howto für mich selbst und wen es sonst noch interessiert. Die Anleitung funktioniert mit meinem System, bei anderen Menschen kann das wieder ganz anders sein. Daher: Nachmachen auf eigene Gefahr!

    Ausgangslage: Ich möchte meinen 3D Drucker, den ich über den OctoPrint Server, der unter OctoPI auf einem Raspberry PI 3B+ läuft, und somit über jeden vom Server zugelassenen Rechner aus zu steuern ist, notfalls auch mal vor Ort in der Druckerei steuern können, ohne mir dort gleich einen Computer hinstellen zu müssen, der dann die meiste Zeit doch nur als Terminal vor sich hin verstaubt. Was liegt also näher, als die Himbeere mit einem halbwegs bedien- und erkennbaren berührungsempfindlichen Display auszustatten und damit die TouchUI zu bedienen?

    Nach diversen Versuchen und Überlegungen bei der Suche nach einer angemessenen Unterbringung für den Rapsberry habe ich mich dann für Thing:2837163 entschieden, für das ein halbwegs finanzierbares Display über Alieexpress zu bekommen ist. Einige Wochen später klingelte denn auch der Bote aus dem fernen Osten und überreichte mir ein gut verpacktes Behältnis mit dem Display, welches bei genauerer Betrachtung einem Waveshare recht ähnlich sieht, jedoch - Chinas kapitalistischer Enklave Shenzen sei Dank - nur einen Teil dessen kostet, was für das nebenan gefertigte Waveshare fällig gewesen wäre und das bei Aliexpress auch deutlich günstiger als beim großen Fluß zu bekommen ist. Allerdings mit 3 Wochen Lieferzeit. Das Boardlayout ebenso wie der Chipsatz sieht dem hochpreisigerem Pendant jedenfalls zum Verwechseln ähnlich.

    Was folgte, waren jedoch ein gutes Dutzend Versuche, das Display so zum Laufen zu bekommen, wie ich bzw. das von mir auserkorene Gehäuse das gerne hätte: Nämlich um 180° gedreht, damit der HDMI Connector in der dafür im Gehäusedesign eigens vorgesehenen Aussparung verschwinden kann. Die Anzeige des Displays ist dabei weniger das Problem, diese findet via HDMI statt, vielmehr ist ja Bildausgabe und Toucheingaben zweierlei. Das Display kann leicht um 180° gedreht werden, indem man sich per ssh auf dem Raspberry anmeldet:
    ssh pi@octopi.lan
    

    gefolgt von
    sudo nano /boot/config.txt

    und dann diesen Text am Ende um die Zeile
    display_rotate=0

    ergänzt. Klappt ganz gut, wenn man dann mit ctrl+x die so manipulierte Datei speichert und mit
    sudo reboot -n

    einen Neustart einleitet.

    Treib(er)jagd
    Die oben erwähnten erfolglosen Versuche, auf dem so gedrehten Display nun auch die Touch Eingabe einrichten zu können, hatten mich dann dazu veranlasst, doch mal nebenan, bei Waveshare zu schauen, wie das dort gelöst wurde. Denn die Elcrow KollegInnen wußten zwar von einer veralteten Treiber CD zu berichten und wie man das Display ihrer Ansicht nach zum Kooperieren bewegt, in der Praxis hatte dann trotzdem der Mauszeiger (heißt das auch so, wenn man den Finger dazu benutzt, um Eingaben zu tätigen??) das Gegenteil von den Bewegungen veranstaltet: Nach unten wischen - Zeiger  wandert nach oben, nach Rechts wischen - Zeiger begibt sich schnurstracks nach links. Wenn das nur im richtigen Leben auch so wäre...

    Wie auch immer: Bei Elcrow ist die Zeit offenbar vor dem Update des Eingabetreibers für den X-Server stehen geblieben, weshalb der entscheidende Hinweis auf die Verwendung des entsprechenden Treibers dort fehlt. Wenn wir schon mal auf der ssh Konsole sind, installieren wir diesen mit
    sudo apt install xserver-xorg-input-evdev

    Anschließend kopieren wir die Konfigurationsdatei dergestalt, daß sie eine höhere vorangestellte Zahl im Dateinamen hat wie die anderen im Zielverzeichnis. Dies, um zu verhindern, daß ein möglicher anderer Eingabetreiber die Bemühungen, das Touchdisplay einzurichten, verhindert:
    sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
    sudo reboot

    Neuausrichtung
    Nun lässt sich auch die Feinabstimmung mittels Eingabekalibration vornehmen. Dazu installieren wir das entsprechende Tool, wir nehmen dabei das der aktuellen Raspbian Version, somit gibt das bei späteren Updates auch weniger Treiberfolklore...:
    sudo dpkg -i -B xinput-calibrator

    Wir starten jetzt das System dazu nochmals neu, damit die Kalibrierung gestützt auf diese Treiber stattfindet. Nach dem erfolgreichen Login gehen wir dazu in der grafischen Benutzeroberfläche mit der Maus / Touchpen / Zeige- oder sonst einem Finger auf die Himbeere oben links und rufen unter "Einstellungen" das Kalibriertool auf. Mit dem entsprechenden Zeigegerät tippen wir auf die darin gezeigten 4 Punkte und Kopieren den anschließend ausgegebenen Text in die Datei
    /ect/X11/xorg.conf.d/99-calibration.conf

    Bei mir steht folgendes darin (Die diversen Optionen für die Einträge gibt es z.B. hier zur Auswahl. Auch ein Hersteller von 5" Displays ;-):
    Section "InputClass"
            Identifier      "calibration"
            MatchProduct    "ADS7846 Touchscreen"
            Option  "Calibration"   "3905 208 3910 288"
            Option  "SwapAxes"      "0"
    EndSection

    Abspeichern wie gehabt, neu booten. Nun sollte das System zügig starten und auf Benutzereingaben entsprechend reagieren.

    Das erfreut uns, weshalb wir derartig motiviert sogleich zur Installation der Touch Oberfläche von OctoPrint schreiten. Hier hat der User jdufresne1 alles wichtige in seinem Beitrag ausgeführt, weshalb ich nur noch kurz darauf eingehe. Wieder per ssh auf dem Druckserver einloggen. Dann mit:
    sudo apt install chromium-browser -y

    den Browser für die Touch Oberfläche installieren. In dessen Fenster läuft zukünftig dann alles rund um die Bedienung des Druckservers ab. Anschließend daran laden wir die Autostart Prozedur von TouchUI herunter und machen in einem Abwasch die lokale Installation auf dem Raspberry startklar:
    git clone https://github.com/BillyBlaze/OctoPrint-TouchUI-autostart.git ~/TouchUI-autostart/

    Noch kurz diverse Einstellungen und Hilfstools installieren:
    sudo ~/TouchUI-autostart/helpers/install

    Nach einem Neustart sollte nun die TouchUI Oberfläche den 5" Bildschirm des Raspberry verzieren. Wer möchte, kann den Raspberry auch so einrichten, daß er ohne Benutzername und Passwort durchstartet. Mehr dazu im Wiki von TouchUI.

    Der Vorteil des eingangs erwähnten Gehäuses ist, daß es genügend Platz bietet, zum Beispiel für ein Stepdown Modul, um die Energieversorgung des Rechners zukünftig vom nicht ausgelasteten Netzteil des Druckers sicherzustellen sowie für einen entsprechenden Lüfter. Falls es doch mal heißer her geht.

    Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.:Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

    Keep on Coding Printing!

    Diverser Tüddelkram zu Marlin

    Noch ein kleiner Merkzettel für mich und wer es sonst noch brauchen kann, wie man jeden 3D Drucker den AnyCube i3 MEGA ein bisschen tieferlegt genauer einstellt.

    • Neben der richtigen Temperatur ist auch das Kalibrieren der Maße, die der Drucker fabriziert, wichtig. Wie man die Kalibrierergebnisse in Richtung dauerhafter Korrektur des Bettlevelings verarbeitet, verraten die Plastikjunies.

    • Zum Anschauen: Ein G29 Plotter, der die Ergebnisse einer Bettkalibrierung grafisch aufbereitet.

    • Ebenfalls wichtig ist das "PID Tuning", um konstante Temperaturen im Extruder bzw. Hotbed zu bekommen. Hier gibt es eine ausführliche Anleitung bei 3d Drucktipps. In dem Zusammenhang ist auch der Tipp von Panduin super.

    • Grundlagenarbeit: Es muss nicht gleich in 1st Layer Porn ausarten, trotzdem: Die Verbindung der 1. Drucklage zum Druckbett ist für die Haftung des Druckes entscheidend. Hier gibt es Tipps für die Einstellung mit dem Slicer Simplify3D.

    • Troubleshooting: Die Übersicht über diverse Fehler beim Drucken ist bei Simplify3D in Englisch sehr hilfreich.

    • Mit
      curl -k -H "X-Api-Key: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" -F "select=false" -F "print=false" -F "file=@[output_filepath]" "http://IPADDRESS:PORT/api/files/local" {STRIP "; postProcessing"} 
      kann direkt aus Simplify3D auf den OctoPrint Server gedruckt werden. Dabei sind natürlich der API Key statt den "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" einzufügen, ebenso die URL, unter der OctoPrint erreichbar ist. Wenn man bei "select" und / oder "print" statt "false" den Wert "true" angibt, druckt Octoprint automatisch los. Nicht ändern sollte man die Variable hinter "file" 8-)

    • Flusskontrolle: "Viele quälen sich unnötig lange durch unzählige Versuche, die richtige Einstellung für die Fördermenge (den so genannten “Flow”) ohne Extruder kalibrieren im Slicer einzustellen und stoßen dann trotzdem immer wieder auf das Problem der “over-extrusion” oder “under-extrusion”." Hier gibt es eine Schritt für Schritt Anleitung, mit deren Hilfe sich auch dieses (mögliche) Problem lösen lässt.

    • Zum auswendig Lernen: Der komplette Befehlssatz unter Marlin.

    • TBC...

    Zu meinem YouTube Kanal, mit aktuellen Drucken.

    AnyCubic i3 MEGA unter Marlin mit dem BLTouch leveln

    The better the Leveling the better the Print:
    Mal eben eine neue Ladeschale und Halterung für das Telefon ausgedruckt
    Träger: Bowden X-Carriage for AnyCubic i3 MEGA by Audisis
    Am leuchten ist der BLTouch
    Mal ein kleiner Merkzettel für mich und wer es sonst noch brauchen kann, wie man den AnyCube i3 MEGA unter Marlin mit dem BLTouch oder einem der günstigeren Kopien mittels G- und M- Befehlen die Druckdüse in einen definierten Abstand zum Druckbett bringt, auf deutsch: levelt. Eingaben sind Rot, Kommentare hinter dem Semikolon nicht eingeben. Ich habe die Ausgaben auf das Wesentliche gekürzt. Vorab: Das Z-Probe Offset bedeutet die Differenz zwischen Auslösepunkt des BL Touch und der Düsenspitze.
    Send: M851 ; Z Probe Offset anzeigen lassen
    Recv: echo:Probe Z Offset: -2.02
    Recv: ok
    [...]
    Send: M851 Z0 ; Z Probe Offset auf Null setzen
    Recv: ok
    [...]
    Send: G28 ; Nullpunkt anfahren
    [...]
    Recv: echo:busy: processing
    Recv: X:-5.00 Y:0.00 Z:0.00 E:0.00 Count X:-400 Y:0 Z:0
    Recv: ok
    [...]
    Send: G1 Z1 X110 Y110 F2000 ; In die Mitte des Druckbettes fahren
    Recv: ok
    [...]
    Send: G92 Z0 ;
    Recv: X:110.00 Y:110.00 Z:0.00 E:0.00 Count X:8800 Y:8800 Z:0
    Recv: ok
    [...]
    Send: G30 X110 Y110
    [...]
    Recv: Bed X: 110.00 Y: 110.00 Z: 2.08
    Recv: X:77.00 Y:105.00 Z:10.00 E:0.00 Count X:6160 Y:8400 Z:4000
    Recv: ok
    [...]
    Recv: ok
    [...]
    Send: G1Z-0.1 ; Bis 0.05mm / ein Kassenbon zwischen Düsenspitze und Bett passt. BTW: Ich empfehle als Metaller natürlich, eine Fühlerlehre, kann man auch für andere Sachen verwenden.
    Recv: ok
    [...]
    Send: G1Z-0.1 ; Bis 0.05mm / ein Kassenbon zwischen Düsenspitze und Bett passt.
    Recv: ok
    [...]
    Send: G1Z-0.1 ; Bis 0.05mm / ein Kassenbon zwischen Düsenspitze und Bett passt.
    [...]
    Send: G92 Z0 ; Neuer Nullpunkt an diese Stelle setzen
    Recv: X:110.00 Y:110.00 Z:0.00 E:0.00 Count X:8800 Y:8800 Z:0
    Recv: ok
    [...]
    Send: G30 X110 Y110 ; Offset ausgeben. Wert bei der 1. Z-Anzeige (hier in GRÜN angezeigt) merken
    [...]
    Recv: echo:busy: processing
    Recv: Bed X: 110.00 Y: 110.00 Z: 2.08 ; Diesen Z-Wert merken!
    Recv: X:77.00 Y:105.00 Z:10.00 E:0.00 Count X:6160 Y:8400 Z:4000
    Recv: ok
    [...]
    Send: M851 Z-2.08 ; Neues Offset eingeben mit dem eben gemerkten Z-Weŕt
    Recv: ok
    [...]
    Send: M500 ; Den Wert ins EEPROM speichern
    Recv: echo:Settings Stored (731 bytes; crc 34074)
    Recv: ok

    Am besten mal den Drucker neu starten um 100% sicher zu gehen, daß er sich die neuen Offset Werte gemerkt hat. Anschließend mache ich 2-3 Kalibrierzyklen mit G28 / G29 und speichere die Werte im EEPROM mit M500:
    Recv: Bilinear Leveling Grid:
    Recv: 0 1 2 3 4
    Recv: 0 +0.010 -0.020 -0.033 -0.020 +0.027
    Recv: 1 +0.058 +0.023 +0.015 +0.040 +0.090
    Recv: 2 +0.082 +0.040 +0.027 +0.058 +0.108
    Recv: 3 +0.082 +0.053 +0.027 +0.065 +0.095
    Recv: 4 +0.058 +0.010 -0.020 +0.003 +0.045
    Recv:
    Recv: X:164.00 Y:193.00 Z:12.06 E:0.00 Count X:13120 Y:15440 Z:4832
    Send: M140 S0
    Recv: ok
    Send: M500
    Recv: echo:Settings Stored (731 bytes; crc 9049)
    Recv: ok

    Der 2. Zyklus macht nochmal deutlich, daß mehrfache Kalibrierung nicht schadet:
    Recv: Bilinear Leveling Grid:
    Recv: 0 1 2 3 4
    Recv: 0 +0.020 -0.017 -0.030 -0.025 +0.038
    Recv: 1 +0.063 +0.038 +0.007 +0.055 +0.092
    Recv: 2 +0.098 +0.043 +0.043 +0.063 +0.118
    Recv: 3 +0.092 +0.055 +0.030 +0.075 +0.098
    Recv: 4 +0.063 +0.013 -0.017 +0.013 +0.043
    Recv:
    Recv: X:164.00 Y:193.00 Z:12.06 E:0.00 Count X:13120 Y:15440 Z:4832
    Send: M140 S0
    Recv: ok
    [...]
    Send: M500
    Recv: echo:Settings Stored (731 bytes; crc 34326)
    Recv: ok
    [...]

    Das sollte dann aber auch reichen, denn "wer viel misst, misst Mist". ;-) Ich übermittle dem Drucker dann vor jedem Druck die neuen Einstellungen, die er  dann entsprechend mit dem Druckauftrag verrechnet. Da ich immer über octoprint drucke, sieht das bei mir so aus:
    G21 ; Wir verwenden Millimeter
    G90 ; Absolute Positionierung...
    M82 ; ... auch für den Steppermotor am Extruder
    M107 ; Lüfter aus
    G28 X0 Y0 ; Referenzpunkte XY anfahren
    G28 Z0 ; Referenzfahrt auch für Z
    G1 Z15.0 F{travelspeed} Z Achse 15 mm anheben
    G92 E0 ; Extruder auf 0 setzen
    G1 F200 E3 ; Extruder soll eine 3mm lange Wurst auspressen
    G1 E0 ; und stoppen...
    G1 F{travelspeed} ;
    G28; Nullpunkte / Home anfahren
    G29; Auto Bed Levelling (ABL) anwerfen
    M500; Werte in Firmware / EEPROM speichern
    M420 S1; BLTouch aktivieren

    Es geht natürlich auch ohne octoprint, falls man direkt vom Slicer aus druckt. Auf jeden Fall sollte man sich für eine Methode entscheiden, nicht, daß nachher 2x gelevelt wird...

    HINWEIS:
    Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

    Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

    Keep on Coding Printing!

    Einen Blick auf Klipper riskieren

    Screenshot
    Ich habe das schlechte Wetter heute genutzt, um ein wenig mit der Firmware des AnyCubic i3 MEGA herum zu spielen. Normalerweise läuft hier Marlin, mich hatte aber interessiert, was hinter dem OctoPrint Plugin OctoKlipper steckt. Man muss ja elastisch bleiben. Dabei kam heraus, daß mit Klipper eine weitere Möglichkeit zur Steuerung der Druckerei besteht.  Mindestens genau so frickelig wie Marlin, das Display des Druckers wird (leider) gar nicht unterstützt, auch sonst muss man sich halbwegs ordentlich einlesen, um den Drucker überhaupt in Betrieb nehmen zu können. Das ist auch gut so, denn nur so lassen sich Schäden am Drucker oder Druckgut oder schlimmer: an Leib und Leben verhindern.

    Grob gesagt unterscheidet Klipper sich von Marlin darin, daß nur ein kleiner Bootloader auf dem Drucker selber verbleibt, der dann mit dem Hostrechner - zum Beispiel einem RaspBerry PI kommuniziert und diesem die ganze Rechenarbeit überlässt. Diese Arbeit stellt die Himbeere vor keine besonders großen Herausforderungen, trotzdem sollte man möglichst zum RaspBerry Pi 3B+ greifen. Zur Installation verweise ich mal auf das Tutorial bei selbstgedruckt.de, die Menschen dort beteiligen sich auch rege in einem deutschsprachigen Fratzenbuch Forum.

    Für den AnyCubic i3 Mega habe ich als Einstieg zwar die entsprechende Beispielkonfigurationsdatei auf github verwendet, da unser Drucker jedoch wegen ungebührlichen Lärmens zu einem Austausch der Lüfter (Noctua NF-A4x10 FLX 40mm zur Kühlung von Hotend und der Treiber über den Lüftungskanal hier auf thingiverse und Noctua NF-A9x14 Lüfter für das Netzteil sowie Sunon  MF50151VX-A99 Radiallüfter zur Bauteilkühlung) und der Steppertreiber auf TMC2208 V1.2 verdonnert wurde, mussten die Achsen der Steppermotoren invertiert werden. Es gibt u.a. auch in der FAQ zu Klipper den Hinweis, daß die TMCs mitten im Druck aussteigen können. Das ist wohl vor allem dann der Fall, wenn die Geschwindigkeit der Achsen zu sehr hoch gesetzt wurden. (Es soll ja Leute geben, die unter Klipper mit 100mm/sec statt mit 60mm/sec drucken, tstststss...)

    Bislang konnte ich derartiges Verhalten bei uns nicht beobachten. Mit der in diesen Tagen erscheinenden neuen Klipper Version sollen jedoch wohl auch diese Problem gelöst sein.

    Wie auch immer: Erwähnenswert ist, daß diverse G-Code Variablen zu seltsamem Verhalten führen können. Das betrifft jedoch meistens Start- oder Endcodes sowie diverse Plugins von OctoPrint, die z.B. mit G117 eine Bildschirmausgabe erzeugen wollen.

    Ein Switchen zwischen Marlin und Klipper ist problemlos möglich und in 5 Minuten bewerkstelligt, falls mal etwas nicht so klappt, wie es soll. Ich schließe zur Installation von Marlin über die Arduino IDE den ausgeschalteten Drucker via USB an meinen Rechner an, starte die Arduino IDE und wähle kompilieren / hochladen, nachdem ich den Drucker eingeschaltet habe. Das bügelt alles von Klipper weg.

    Umgekehrt installiere ich Klipper, indem ich mich als pi per ssh auf dem OctoPI/OctoPrint  Server anmelde, mit

    cd ~/Klipper

    ins Klipper Verzeichnis wechsle und dann erst mal herausfinde, auf welchem USB Port denn der jetzt am OctoPI angeschlossene Drucker lauscht. Dazu

    ls -l /dev/serial/by-id/

    eingeben, den ausgegebenen Port merken und dann beherzt den Klipper Bootloader mit

    make flash FLASH_DEVICE=/dev/gemerkterPort

    auf den Drucker kopieren. Dazu sollte man beachten, daß der Drucker nicht mit OctoPrint verbunden ist. Am besten danach rebooten, dann klappt das mit dem Drucken. ;-)

    Hier noch mein config File für den AnyCubic i3 MEGA mit TNC2208 V1.2, und 8 Bit Board sowie Ultrabase. Die Achsen sind in der Firmware bereits invertiert, dazu ist das "!" vor den jeweiligen dir_pin gesetzt bzw. entfernt. Die Angaben für das PID Tuning beziehen sich auf meinen Drucker, bei anderen sollte das PID über das OctoKlipper Plugin gemacht werden. In Ergänzung zur Standard Config befindet sich ein Teil zur Regelung der Temperaturtoleranzen, ohne die mein Drucker nach wenigen Layern gleich ausgestiegen ist, die ich 1:1 aus der examples-extras.cfg Datei von Klipper entnommen habe. Noch nicht gekümmert habe ich mich um die anderen Gründe, warum ich mal einen Blick auf Klipper riskiere wie schnelleres und noch schöneres Drucken, schnellere Filamentförderung - Stichwort "pressure advance", Kaffee kochen und die Wäsche waschen...

    # Anpassung der Pin Mappings für den AnyCubic i3 MEGA, TMC2208 und Ultrabase 
    #
    # Verwendung auf eigene Gefahr! Code kopieren und in octopi.url#conf einfügen
    # 12 / 12 / 2018 thomas@trueten.de still under developement
    #
    # https://www.trueten.de/permalink/Einen-Blick-auf-Klipper-riskieren.html
    #
    #
    # This file contains pin mappings for the Anycubic i3 Mega with
    # Ultrabase from 2017. (This config may work on an Anycubic i3 Mega v1
    # prior to the Ultrabase if you comment out the definition of the
    # endstop_pin in the stepper_z1 section.) To use this config, the
    # firmware should be compiled for the AVR atmega2560.
    # See the example.cfg file for a description of available parameters.
    
    [stepper_x]
    step_pin: ar54
    dir_pin: ar55
    enable_pin: !ar38
    step_distance: .0125
    endstop_pin: ^!ar3
    position_min: -5
    position_endstop: -5
    position_max: 210
    homing_speed: 30.0
    
    [stepper_y]
    step_pin: ar60
    dir_pin: !ar61
    enable_pin: !ar56
    step_distance: .0125
    endstop_pin: ^!ar42
    position_endstop: 0
    position_max: 210
    homing_speed: 30.0
    
    [stepper_z]
    step_pin: ar46
    dir_pin: !ar48
    enable_pin: !ar62
    step_distance: .0025
    endstop_pin: ^!ar18
    position_endstop: 0.0
    position_max: 205
    homing_speed: 5.0
    
    [stepper_z1]
    step_pin: ar36
    dir_pin: !ar34
    enable_pin: !ar30
    step_distance: .0025
    endstop_pin: ^!ar43
    
    [extruder]
    step_pin: ar26
    dir_pin: !ar28
    enable_pin: !ar24
    step_distance: .010799
    nozzle_diameter: 0.400
    filament_diameter: 1.750
    heater_pin: ar10
    sensor_type: ATC Semitec 104GT-2
    sensor_pin: analog13
    control: pid
    min_temp: 0
    max_temp: 260
    min_extrude_temp: 170
    
    [heater_fan extruder_fan]
    pin: ar44
    
    [heater_bed]
    heater_pin: ar8
    sensor_type: EPCOS 100K B57560G104F
    sensor_pin: analog14
    control: pid
    pid_Kp: 74.883
    pid_Ki: 1.809
    pid_Kd: 775.038
    min_temp: 0
    max_temp: 110
    
    [verify_heater extruder]
    heating_gain: 2
    check_gain_time: 20
    hysteresis: 5
    max_error: 120
    
    [fan]
    pin: ar9
    
    [mcu]
    serial: /dev/ttyUSB0
    pin_map: arduino
    
    [printer]
    kinematics: cartesian
    max_velocity: 300
    max_accel: 3000
    max_z_velocity: 10
    max_z_accel: 60
    
    [heater_fan stepstick_fan]
    pin: ar7
    
    # Define the BLTouch servo
    [servo bltouch]
    pin: ar11
    maximum_servo_angle: 180
    minimum_pulse_width: 0.0006
    maximum_pulse_width: 0.0024
    
    # Define a probe using the BLTouch
    [probe]
    pin: ar2
    x_offset: 26.0
    y_offset: 0.0
    z_offset: -1.7
    activate_gcode:
        SET_SERVO SERVO=bltouch ANGLE=10
        SET_SERVO SERVO=bltouch ANGLE=60
        G4 P200
    deactivate_gcode:
        SET_SERVO SERVO=bltouch ANGLE=90
        G4 P100
    
    # Mesh Bed Leveling. One may define a [bed_mesh] config section
    # to enable move transformations that offset the z axis based
    # on a mesh generated from probed points. Note that bed_mesh
    # and bed_tilt are incompatible, both cannot be defined.
    [bed_mesh]
    speed: 50
    #   The speed (in mm/s) of non-probing moves during the
    #   calibration. The default is 50.
    horizontal_move_z: 5
    #   The height (in mm) that the head should be commanded to move to
    #   just prior to starting a probe operation. The default is 5.
    samples: 1
    #   The number of times to probe each point.  The probed z-values
    #   will be averaged.  The default is to probe 1 time.
    sample_retract_dist: 2.0
    #   The distance (in mm) to retract between each sample if
    #   sampling more than once.  Default is 2mm.
    min_point: 19,32
    #min_point: 0,32
    #   An X,Y point defining the minimum coordinate to probe on
    #   the bed. Note that this refers to the nozzle position,
    #   and take care that you do not define a point that will move
    #   the probe off of the bed. This parameter must be provided.
    max_point: 199,212
    #max_point: 175,198
    #   An X,Y point defining the maximum coordinate to probe on
    #   the bed. Follow the same precautions as listed in min_point.
    #   Also note that this does not necessarily define the last point
    #   probed, only the maximum coordinate. This parameter must be provided.
    probe_count: 5,5
    #   A comma separated pair of integer values (X,Y) defining the number
    #   of points to probe along each axis. A single value is also valid,
    #   in which case that value will be for both axes. Default is 3,3
    #   which probes a 3x3 grid.
    #fade_start: 1.0
    #   The z-axis position in which to start phasing z-adjustment out.
    #   Default is 1.0.
    #fade_end: 0.0
    #   The gcode z position in which phasing out completes.  When set
    #   to a value below fade_start, fade is disabled. It should be
    #   noted that fade may add unwanted scaling along the z-axis of a
    #   print.  If a user wishes to enable fade, a value of 10.0 is
    #   recommended. Default is 0.0, which disables fade.
    #fade_target:
    #   The z position in which fade should converge. When this value is set
    #   to a non-zero value it must be within the range of z-values in the mesh.
    #   Users that wish to converge to the z homing position should set this to 0.
    #   Default is the average z value of the mesh.
    #split_delta_z: .025
    #   The amount of Z difference (in mm) along a move that will
    #   trigger a split. Default is .025.
    #move_check_distance: 5.0
    #   The distance (in mm) along a move to check for split_delta_z.
    #   This is also the minimum length that a move can be split. Default
    #   is 5.0.
    #mesh_pps: 2,2
    #   A comma separated pair of integers (X,Y) defining the number of
    #   points per segment to interpolate in the mesh along each axis. A
    #   "segment" can be defined as the space between each probed
    #   point. The user may enter a single value which will be applied
    #   to both axes.  Default is 2,2.
    #algorithm: lagrange
    #   The interpolation algorthm to use. May be either "langrange"
    #   or "bicubic". This option will not affect 3x3 grids, which
    #   are forced to use lagrange sampling.  Default is lagrange.
    #bicubic_tension: .2
    #   When using the bicubic algoritm the tension parameter above
    #   may be applied to change the amount of slope interpolated.
    #   Larger numbers will increase the amount of slope, which
    #   results in more curvature in the mesh. Default is .2.
    
    #*# <---------------------- SAVE_CONFIG ---------------------->
    #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
    #*#
    #*# [extruder]
    #*# pid_kp = 18.387
    #*# pid_ki = 0.936
    #*# pid_kd = 90.325
    


    HINWEIS:
    Alle gemachten Angaben sind ohne Gewähr auf Funktion und Richtigkeit. Für eventuell entstehende Schäden übernehmen wir keinerlei Haftung. Sämtliche Veränderungen geschehen auf Eure Verantwortung und Gefahr.

    Das Tutorial ist für das AnyCubic i3 MEGA Board verfasst worden. Bei anderen Boards und Herstellern bitte auf die aktuelle Beschreibung / Installationsanweisung auf https://github.com/KevinOConnor/klipper achten!

    Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.: Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

    Keep on Coding Printing!

    3D Druckertestlauf gestartet

    Heutezutage hat gefühlt jedeR einen Youtube Kanal. Ich natürlich auch, jedoch nur zur Prozessüberwachung. ^^ Auf meinem Kanal kann man unserem AnyCubic I3 MEGA 3D Drucker beim Testlauf zusehen, allerdings nur als Livestream. Ein wirklich toller Drucker, den ich allerdings um einiges günstiger direkt beim Hersteller über ebay gekauft habe. Er hat jedoch den Nachteil, daß er laut ist und auch sonst zu Umbauten / Modding anregt ;-) . Wozu ein 3D Drucker? Wenn man sowieso Teile per  CAD konstruiert, sind Prototypen eigentlich nur noch der Druckvorgang und so schneller für's Prototyping gefertigt als "on the Fly" auf unseren Werkzeugmaschinen. Bevor jedoch ernsthafte Teile gefertigt werden, druckt der erst mal ein paar Verbesserungen, Tools und Erweiterungen für sich selber aus und absolviert nebenbei diverse Materialtestläufe. Der Drucker wird über einen RaspBerry PI3B+ gesteuert, auf dem der Opensource Server OctoPI / OctoPrint von Gina Häußge läuft. Gefilmt wird momentan mit einer RaspberryPI Cam, wobei die Bildqualität grauslig ist. 8-)



    Hier die Liste der Ergänzungen bzw. Umbauten:

    Bedingt durch die Umbauten an den Steppern und der Sensormessung der Druckbettausrichtung war es notwendig, die Druckerfirmware zu ändern. Als Basis dafür habe ich Marlin 1.1.6 genommen und eigene kleinere Änderungen vorgenommen, zum Beispiel PID Tuning von Hotend und Druckbett.

    Work in Progress. Geplant ist die Umrüstung auf
    Zum Thema Filament:
    Ich drucke mit PLA in knalligem AIO Orange von AIO Robotics, Blau von Janbex, sowie 3DJAKE ecoPLA Schwarz.
    Für die Temperaturrelevanten Teile verwende ich von 3dkTOP - Grau -, dieses ist nach Ofenbehandlung hitzebeständig bis 230°C sowie 3DJAKE niceABS Rot.
    Neben diversesten sonstigem Kleinkram für die Werkstatt oder auch Gehäuse für einen Pocket Operator (==> hier auch mit coolen Symboltasten)lassen sich auch lebensmittelechte und flexible Teile drucken. Dazu ist nur eine kleine Ergänzung am Extruder nötig. Apropos lebensmittelecht: PLA ist ja meistens lebensmittelecht, da aus natürlich wachsenden Rohstoffen gefertigt. Das Problem sind die verwendeten Pigmente, weshalb Druckreste oder Ergebnisse, die man lieber verschwinden lässt, nicht auf dem Komposthaufen landen sollten und wegen der Oberfläche, die nie ganz glatt ist, gute Möglichkeiten für diverse Keime und Bakterien bildet. ;-)

    Dementsprechend sollte man Dinge, die länger mit Lebensmitteln in Kontakt kommen sollen, zum Beispiel selbst gedruckte Deckel für Konserverndosen usw. aus entsprechendem Material, beispielsweise das von Formfutura, das es auch in relativ klar gibt, gefertigt werden.

    Irgendwie muss ich das alles finanzieren, daher sind die allermeisten Links Affiliate. D.h.:Solltet Ihr über diese Links zu einem Onlinehändler geraten und dort etwas bestellen, bekomme ich eine kleine Provision, für Euch ändert das am Preis natürlich nichts. Für die Inspirationen geht ein herzliches Dankeschön an die genannten Personen, insbesondere an die OctoPrint Community!

    Keep on Coding Printing!

    OnePlus 6T: Kaum da, schon gerootet ;-)

    Zur Abwechslung mal wieder was über Telefone. Nach 4 Jahren mit dem OnePlus One, dem so allmählich die Puste ausging, war es mir mal nach Veränderung, so orderte ich mir eine neue Telefonzelle. Es musste mit 256 GB internem Speicher und 8 GB RAM natürlich gleich der dickste Bolzen sein. ;-) Da mich die Qualität des Gerätes und die Community in den letzten Jahren überzeugte - in unserem Haushalt werkelt ja auch noch ein OnePlus 3T - war eigentlich klar, daß ich markentreu bleibe. Das vor 5 Monaten erschienene 6er Modell hätte mich eigentlich schon gereizt, aber ich dachte mir, bau nochmal einen Austauschakku ein, vielleicht hält das Teil ja nochmal 4 Jahre durch. Naja, der Akku war bzw. ist ok, auch der Austausch war in 20 Minuten erledigt. Dennoch: Die heutige Software zieht schon etwas mehr Strom und letztlich reichte das nicht einmal mehr über den Tag.

    Tests zum 6T gibt es genügend, für mich gab es keinen Grund mehr, zu Googles "Pixel" zurückzukehren, nachdem die Preispolitik der vergangenen Jahre konsequent fortgesetzt und dafür an der 1000€ Marke gekratzt wird. Ein Thema, bei dem Durchgeknallte, die mit einem iPhone "X" herumposen - wohl nur zu einem müde Lächeln können. Aber irgendwie bekommt Apple das mit den Mondpreisen schon zu spüren.

    Wie auch immer, nachdem OnePlus sein 6T vor 14 Tagen vorgestellt hatte kam es am Dienstag zur Auslieferung, meines bekam ich dann gestern geliefert. Während ich einem Familienmitglied beim Umstieg von einem ebenfalls 4 Jahre alten iPhone auf ein 6T unterstützte, fand ich noch die Zeit, nach einer Lösung zum Rooten für das 6T, denn ich hätte ja doch ganz gerne meine diversen Apps 1:1 wieder auf dem neuen Handy. Mittels Titanium BackUp kein Problem, allerdings setzt das Root voraus. Kein Problem1:

    blu_spark TWRP für das OnePlus 6T
    dann noch

    Magisk herunterladen


    Bei uns an den Linux Rechner gehängt, nachdem ich das 6T eingeschaltet und einen "alles überspringen" Setup Lauf durchgeführt hatte, bin ich in die Einstellungen / Über das Telefon / 7 * auf "Build Number" tippen, um den Entwicklermodus freizuschalten, dann wieder in "Einstellungen / System / Entwickleroptionen" und dort "OEM Entsperrung", "USB-Debugging" und "USB-Debugging Authorisierungen aufheben" aktivieren und dem angeschlossenen Rechner Zugriffsrechte erteilen. (Am besten auch noch "erweiterter Neustart" aktivieren, aber das ist Komfortzone.)

    Sodann als root berechtigter User das folgende in die Linux Kommandozeile 2 reinhacken:

    fastboot oem unlock

    Schwupps - so schnell ist das Handy platt. Genau: beim Entsperren des Bootloaders werden alle Daten gelöscht. Das macht nichts, da ich noch keine Daten darauf habe und deswegen ja auch im "alles überspringen" Setup Lauf unterwegs war ;-)

    Nach dem Aufheben der OEM Sperre und der Freischaltung können nun TWRP, der blu_spark Kernel und Magisk installiert werden. Mit

    fastboot boot twrp-3.2.3-x_blu_spark_v9.86_op6.img

    wird das neue Recovery gebootet, anschließend erlaubt man Änderungen durch Wischen auf dem im unteren Bildschirrm angebotenen Schieberegler. Dann wird in dem nächsten Bildschirm unter "Advanced" der Menüpunkt"ADB Sideload" gewählt, "Wipe Dalvik Cache" und "Wipe Cache" gewählt und dann der ADB Zugriff durch Wischen am Schieberegler im unteren Bildschirmrand ermöglicht, der dann auf dem Computer per sideload aufs 6T gebügelt wird:

    adb sideload twrp-3.2.3-xblusparkv9.86op6.zip

    Dann kann z.B. mit dem blu_spark Kernel eine Alternative zum regulären Systemkern installiert werden:

    adb sideload blusparkr56-oos-pieop6-6t9e9a352.zip

    Als Abschluß gibt es dann noch die Installation von Magisk per sideload:

    adb sideload Magisk-v17.3.zip

    Dann lösche ich eigentlich immer den Cache und starte das Handy neu. Magisk lässt sich zukünftig dann direkt aus der App updaten.

    Diese im Gegensatz zu früheren root / Flash Aktionen scheinbar etwas umständlichere Methode der Recovery Installation hängt mit den A/B Partitionen zusammen, die ursprünglich mit Googles Pixel 1 eingeführt und für mehr Sicherheit sorgen sollen. So existiert im Gegensatz zu früheren Versionen keine eigene Recovery Partition mehr, sondern das Recovery ist Bestandteil des Boot Images. Grob gesagt muss deshalb TWRP temporär gebootet werden, um erst mit einem weiteren Installationslauf in einem der Slots eingerichtet zu werden. Die beiden Slots sind in TWRP selbst auch anwählbar, zum Beispiel beim Backup. Auch beim Neustart aus dem Recovery lässt sich der gewünschte Slot wählen.

    Die verwendete (inoffizielle) blue_spark TWRP 3.2.3-x Recovery Version v9.86 ist noch in einem recht frühen Entwicklungsstadium, das sollte man bedenken, ebenso wie die angepasste Magisk Version. Zum Beipiel läuft hier das Xposed Modul leider noch nicht, auch gibt es in Sachen LineAgeOS bis jetzt auch nur inoffizielle Versionen. Hier habe ich mich auch noch nicht dazu durchgerungen, auf den Zug aufzuspringen. Aber was nicht ist, kann ja noch werden. Momentan schaue ich mir noch sehr wohlwollend das installierte OxygenOS 9.05 an, das unmittelbar nach dem TWRP Flash zum Download bereit stand.

    Die A/B Partitionen können wie alles andere in dem kurzen Beitrag hier dargestellte zu Problemen führen, bis dahin, das OnePlus 6T in einen 629€ teuren Briefbeschwerer zu "bricken". Von daher: Alles, was bei mir geklappt hat, kann woanders ins Auge gehen, daher: Nachahmung auf eigene Gefahr, informiert Euch zuvor über die möglichen Folgen, zum Beispiel auch über eventuellen Garantieverlust!

    In dem Sinne freue ich mich über Hinweise, Vorschläge, Alternativen und Kritiken, gerne über die Kommentarfunktion!

    1: Wem das zu stressig / langweilig / riskant / whatever ist, der kann natürlich auch per OnePlusSwitch bequem von einem alten Android Handy - und auch von iPhones - auf das neue umsteigen. Die App, die in Googles Play Store für Android und hier - leider außerhalb von dem Apple Dingens erhältlich und daher nicht ganz ungefährlich - zu installieren ist, erleichtert einem den Umzug doch sehr, indem ein Barcode auf dem alten durch das neue Handy abzufotografieren ist. Binnen kurzer Zeit landen dann alle Fotos und sonstigen Daten auf dem neuen Gerät.

    2: Windows kann das natürlich auch. Möglicherweise gibt es dabei einiges zu beachten, daher verweise ich auf die DroidWiki Anleitung hier.

    In diesem Beitrag sind einige Links auf Amazon und eBay gesetzt. Wenn Ihr über diese Links dort etwas bestellt, bekomme ich eine kleine Provision. Irgendwie muss die Kohle für das 629€ teure Teil ja wieder reinkommen. ;-) Für Euch bleibt der Preis derselbe wie bei einem Direktkauf.