Skip to content

NotepadQQ unter Raspbian / Debian Stretch kompilieren

Ab und an ist ein grafischer Texteditor einfach praktischer als vi, emacs oder nano. Die Wahl fällt heute oft auf NotepadQQ, ein Linux Clon des Windows Editors Notepad++. Leider ist NotepadQQ nicht in den aktuellen Paketquellen für Stretch enthalten, eine Snap Installation wie von den NotepadQQ EntwicklerInnen empfohlen, kommt nicht in Frage. Also: Selbst ist der User und mit einiger Frickelei läuft der Editor auch via

ssh -x username@rechnername notepadqq

auf einem headless RaspberryPI B R2. Zumindest in der Version 1.48 und nach einem ordentlichen Weilchen...

sudo apt install -y qt5-qmake libqt5webkit5 libqt5svg5 coreutils libqt5webkit5-dev libqt5svg5-dev qttools5-dev-tools qt5-default qttools5-dev-tools qtwebengine5-dev libqt5websockets5-dev libqt5svg5 libqt5svg5-dev libuchardet-dev libqt5webengine-data qt5-default qttools5-dev-tools qtwebengine5-dev libqt5websockets5-dev libqt5svg5 libqt5svg5-dev libuchardet-dev libqt5webkit5-dev libqt5svg5-dev qttools5-dev-tools

git clone https://github.com/notepadqq/notepadqq.git

cd notepadqq

git checkout -f v1.4.8

./configure --prefix /usr --qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake

make

sudo make install

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 -P /dev/ttyUSB0 -U flash:w:MarlinV1.1.5.ino.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!

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.

Error 7: Modem- Firmwareupdate beim OnePlus3T

Ein kurzer Merkbeitrag zu einem Modem / Firmware Problem des OnePlus 3T, der beim Flashen eines beliebigen LineageOS Updates auftreten kann und sich mit dem Abbruch des Flashvorgangs mit der folgenden Fehlermeldung äußert:

"assert(op3.verify_modem("2017-06-27 21:43:31") == "1");"

Die Ursache besteht darin, daß das Handy zwischenzeitlich ein Upgrade der Firmware erhalten hatte, das jedoch in den LineageOS Zips nicht enthalten ist, von diesen aber erwartet wird. Zwischenzeitlich hatte ich mir so geholfen, daß ich in der Zip Datei vor jedem Flash Vorgang die Abfrage des Handymodells manuell geändert hatte.

Dazu im Archiv das Updater Script /META-INF/com/google/android/updater-script mit einem Texteditor öffnen und sämtliche Zeilen mit "assert" und "getprop" Einträgen löschen. Abspeichern und installieren. Klappt problemlos und ermöglicht, falsche Systeme auf dem Handy zu installieren und dies zu bricken. ;-)

Also ein funktionierernder Workaround, jedoch ziemlich weit entfernt von einem automatisierungsfähigen Vorgehen. Zufällig bin ich dann über den Eintrag von Lord Boeffla (Vielen Dank dafür!) bei XDA gestolpert, einem Entwickler von Kernelhacks für die OnePlus Geräte, der die Firmwareupgrades aus dem originalen OxygenOS extrahiert und auch für andere OS zur Verfügung gestellt hat. Diese Datei sollte auf einem der üblichen Wege auf das 3T verbracht und dann per TWRP geflasht werden. Danach klappt es endlich auch wieder mit dem automatischen Update auf die aktuellste LineageOS Version.

Edit: Für den (eher unwahrscheinlichen) Fall, das man das 3T gebrickt hat, findet sich hier einige Hinweise, das Ding wieder ans Laufen zu bekommen.

cronjob