Veraltetes OctoPrint

Warum auch immer, man kann mit der von mir im Artikel OctoPrint beschriebenen Methode OctoPrint nicht über den Server aktualisieren. Plugins installieren und aktuell halten ist kein Problem, nur OctoPrint selbst will nicht. Prinzipiell würde ich das nicht als Problem ansehen, denn dann aktualisiert man es eben von Hand.

Genau da gibt es aber eine Hürde und dieses Workaround schreibe ich eigentlich nicht wirklich gerne, hilft aber leider nichts. So ganz in Ordnung finde ich die Vorgehensweise nicht, aber im Moment ist es in meinen Augen die einfachste und auch für Anfänger problemlos reproduzierbare Variante.

Problem

Das Problem ist recht simpel zu beschreiben. OctoPrint, wenn man es über meine Variante installiert, ist veraltet!

Version 1.4.2 zu Version 1.5.2 (Stand 14.12.2020).

Leider scheint sich der Maintainer auch nicht darum zu kümmern, denn das Paket ist schon entsprechend gekennzeichnet:

Flagged out-of-date (2020-11-30)

Auch ein Request meinerseits blieb bislang ohne Reaktion.

Wer nun denkt, ein Update ist für ihn nicht notwendig, der muss hier nicht weiterlesen. Tatsächlich lief bei mir mit Version 1.4.2 alles genauso gut, wie mit Version 1.5.2. Von daher, wer nicht updaten will, der muss es nicht.

Updaten

Wer aber ist wie ich und gerne die neusten Versionen installiert hat, den wird die Nachricht in OctoPrint ein bisschen störend finden, dass es da eine neue Version gibt. Denn wie gesagt, die will sich ja nicht installieren lassen. Es wäre aber doch so schön, diese Version installiert zu haben!

Gibt es dafür denn keine Lösung?

Doch klar, die gibt es! Nur wie schon gesagt, die feine Englische ist es nicht. Zumindest meiner Meinung nach.

Es ist aber so unglaublich einfach! So gehts:

  1. Hinsetzen
  2. Terminal öffnen
  3. In das Verzeichnis von OctoPrint wechseln
  4. Datei PKGBUILD ändern
  5. Paket neu bauen
  6. Paket installieren

Schritt 1 – 3 sollten selbsterklärend sein.

Schritt 4:

Wer mittels ssh auf dem Pi ist, der wird wahrscheinlich keinen grafischen Editor nutzen können. Deshalb nutzt man am Besten einfach nano.

nano PKGBUILD

Das sieht dann so aus:

Hier interessiert uns die 4. Zeile.

pkgver=1.4.2

Die ändern wir nun einfach ab in:

pkgver=1.5.2

(Stand 14.12.2020. Das werde ich von Zeit zu Zeit aktualisieren)

Dann Strg+x, anschliessend j und Enter.

Das war es schon!

Schritt 5:

makepkg

Schritt 6:

sudo pacman -U octoprint-1.5.2-1-any.pkg.tar.xz

Wenn das durchgelaufen ist, muss der Server nur neu gestartet werden. Nach meiner Anleitung sieht das dann so aus:

sudo systemctl restart octopring

Fertig!

Schlusswort

Eigentlich finde ich es nicht gut, im AUR eines anderen Maintainer herum zu fuhrwerken. Doch leider hat man hier nicht wirklich die Wahl. Zudem fühle ich mich als nicht qualifiziert genug, eventuell das AUR zu adoptieren. Eine Versionsnummer zu ändern ist nicht schwer, aber wenn es mal um Abhängigkeiten, oder sonstige Spielereien geht, davon habe ich (noch) keine Ahnung. Von daher bleibt das die einfachste Variante.

Aber, ich werde mich schlau machen!

OctoPrint

Ich gehöre wahrscheinlich zu einer Minderheit, da ich nicht einfach für jede Anwendung ein eigenes Image auf den Pi kleben will. Dieses Vorgehen wirkt für mich so, als wenn man sich ein Auto kauft, damit dann aber nur irgendwas transportiert, da man die Rücksitze umgeklappt hat. Für den Transport von Personen muss ein neues Auto her, anstatt einfach die Sitze wieder hochzuklappen.

Klar, für viele Benutzer sind die Images natürlich äusserst ansprechend. Man muss sich um nichts kümmern, spielt einfach ein Image auf die SD-Karte und das läuft. Dagegen ist nichts zu sagen.

Ich für meinen Teil will die Dinger aber möglichst viel ausnutzen. Von daher will ich Anwendungen wie OctoPrint auf das bestehende OS installieren und dann neben anderen Anwendungen nutzen.

Installation

Unter Arch kann man OctoPrint über AUR installieren. Das User-Repository kann man einfach clonen:

git clone https://aur.archlinux.org/octoprint.git

Um es bauen zu können, muss man jedoch noch einige Anhängigkeiten installieren. Um das zu vereinfachen, kann man einfach die folgende Zeile kopieren und einfügen, dann wird alles installiert (zumindest bei octoprint 1.4.2-1).

sudo pacman -S python-feedparser python-filetype python-frozendict python-future python-markdown python-netaddr python-regex python-rsa python-tornado python-unidecode python-wrapt python-virtualenv gcc

Okay. Noch makepkg und laufen lassen. Das dauert ein bisschen! Wer genauere Informationen braucht, wie das mit AUR funktioniert, kann hier vorbeischauen. Dort habe ich es erklärt.

Ist das durch, einfach mit pacman installieren.

sudo pacman -U octoprint-1.4.2-1-any.pkg.tar.xz

Wer nach diesem Artikel vorgeht, sollte aber darauf achten, dass es in Zukunft neue Versionen geben dürfte und die entsprechend angepasst werden muss.

Einrichtung

Also. Während die Installation noch so verlief, wie ich mir das gedacht habe, musste ich erst einmal suchen, wo genau das Ding jetzt installiert ist. Das habe ich dann aber tatsächlich herausgefunden, man stelle sich vor und gestartet wird es so:

/usr/lib/octoprint/bin/octoprint-serve

Muss man erst einmal drauf kommen.

Auf jeden Fall rumpeln dann dutzende von Anzeigen durch das Terminal, bis die Kiste dann irgendwann gestartet ist.

So. Ich für meinen Teil verwende es über meinen VPN. So erreiche ich nun die OctoPrint Oberfläche im Browser:

<ip>:5000

Zum Testen auf dem Pi kann man natürlich folgendes nutzen

localhost:5000

Läuft doch! Jetzt die Einstellungen. Da muss jeder selbst wissen, wie er es dort gerne hätte. Auch welche Geschwindigkeiten der Drucker erreichen kann, bei den einzelnen Achsen, muss jeder von seinem Drucker selbst wissen. Da kann ich nicht helfen.

Wenn aber alles geklappt hat, sieht es im Browser so aus:

Der Serial-Port ist, wenn man sonst nichts angeschlossen hat:

/dev/ttyUSB0

Ist noch etwas angeschlossen, so kann es auch eine andere Zahl hinter USB sein. Muss man prüfen.

Ich Persönlich hatte ein Problem mit der Verbindung. Ich musste erst die Ports durchprobieren, dann ging es auf einmal. Keine Ahnung, wo hier das Problem gelegen hat. Wenn sich also keine Verbindung herstellen lässt, sollte man den Port wechseln, vielleicht hilft es ja.

Im Prinzip ist man damit dann fertig und kann loslegen.

Autostart

Ich für meinen Teil möchte, dass OctoPrint direkt beim starten des Pi mit gestartet wird. Dazu bedarf es eines kleinen Skriptes, welches so aussehen sollte:

[Unit]
Description=Autostart für OctoPrint
After=network-online.target
Wants=network-online.target

[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=simple
User=[USER]
ExecStart=/usr/lib/octoprint/bin/octoprint-serve

[Install]
WantedBy=multi-user.target

Das wird als SuperUser abgespeichert unter:

sudo nano /etc/systemd/system/octoprint.service

ABER! Wo hier [USER] steht, muss der Name des entsprechenden Users auf dem Pi angegeben werden. Bei vielen ist es banal pi. Ich verwende diabolus. Aber ich denke, diese Information sollte ja jeder haben.

Sollte es so nicht funktionieren, muss man den Pfad hinter ExecStart= überprüfen. Vielleicht deckt der sich aus irgendeinem Grund nicht mit dem, wo ocotoprint-serve wirklich abgelegt ist. Hier kann man einfach suchen lassen:

sudo find / -name octoprint-serve

Das kann manchmal ein bisschen dauern, aber so kommt man auf jeden Fall an den korrekten Pfad.

Klappt alles, kann man OctoPrint fortan einfach starten über:

sudo systemctl start octoprint

Um es beim Start gleich mitstarten zu lassen, benutzt man folgendes:

sudo systemctl enable octoprint

Aber Achtung. Ich habe festgestellt, dass der Pi damit etwas länger braucht, bis er gebootet ist. Also keine sorge, wenn er etwas auf sich warten lässt.

Arch auf dem Raspberry Pi

Warum denn das bitte? Für den Pi gibt es doch Raspbian und das sollte die Hardware doch am Besten nutzen, oder?

Dagegen kann und will ich nichts sagen. Raspbian hat aber eine unschöne Eigenschaft: Es hinkt brutal hinterher! Für viele Anwender mag das vertretbar sein, ich bin da aber eigen. Ich möchte einen möglichst aktuellen Kernel mit möglichst aktueller Software. Ob ich dabei dann Einschnitte bezüglich der Hardware habe, wird sich noch zeigen.

Wie viel Bit?

Ja, wie viel soll es denn nun sein? 32, oder 64 Bit? Ich mache es mir da ganz einfach. Da ich mal stark davon ausgehe, dass 32 Bit am aussterben ist, wähle ich einfach 64 Bit. Schaden kann es ja hoffentlich nichts.

Installation

Da mache ich es mir mal total bequem. Ich befolge einfach die Anleitung auf Arch Linux | Arm.

Bei Punkt 5 ersetze ich jedoch

http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-2-latest.tar.gz

durch

http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz

Wegen der 64 Bit Version.

Hat das alles geklappt, kann man mittels ssh auf den Raspi mit Arch zugreifen:

ssh alarm@alarm

Wenn das funktioniert, dann ist die Installation abgeschlossen. War ja ganz einfach!

Was ich noch tue

Ich für meinen Teil möchte nicht, dass der Raspi alarm heisst, genauso wenig kann ich mich mit dem User alarm anfreunden. Das wird also geändert. Muss aber nicht sein!

Auf jeden Fall, der Pi bootet, ich komme mittels ssh drauf, damit würde ich mal sagen, ist dieser Part abgeschlossen. Es folgen noch weitere Artikel bei Gelegenheit. Dann wird sich ja zeigen, ob Arch das auf dem Pi bringt, was ich davon erwarte.