OctoPrint auf Orange Pi Zero

Bisher habe ich meinen 3D-Drucker mit einem alten Notebook angesteuert auf dem neben Prusaslicer noch RepetierHost installiert war. Die 3D-Modelle habe ich via Dateifreigabe oder USB-Stick auf den Laptop gebracht, dort gesliced und dann mit RepetierHost an den Drucker gestreamt.

Seit einiger Zeit (ich glaube seit Version 2.3) unterstützt der Prusaslicer das direkte hochladen der generierten G-Codes auf den Drucker bzw den vorgeschalteten G-Code-Streamer (Repetier Server, Octoprint, Astroprint, …)

Seitdem läuft auf dem Notebook eigentlich nur noch der Repetier Server über den ich vom Schreibtisch aus den Drucker bedienen kann..
Da ist der alte Laptop natürlich overkill und Platzverschwendung, -Monitor und Tastatur brauchts beim 3D-Drucker jetzt nicht mehr.

Ich habe hier noch einen Orange Pi Zero rumliegen, der soll ab jetzt den alten Laptop ersetzten und direkt in den 3D-Drucker eingebaut werden. Bisher habe ich den Repetier Server genutzt, da ich jetzt aber eh alles neu installieren muss, probiere ich mal OctoPrint aus.

Nachdem der Orange Pi Zero mit einem frischen Armbian Image gestartet wurde, kann’s mit der Installation losgehen.

Zuerst einmal das System auf den neuesten Stand bringen und die benötigten Pakete installieren:

sudo apt update
sudo apt upgrade -y
sudo apt install python3-pip python3-dev python3-setuptools python3-venv git libyaml-dev build-essential

Verbunden wird der Orange Pi Zero mit dem Drucker nicht über die USB-Schnittstelle, sondern direkt über die internen seriellen Schnittstellen. Dadurch entfällt ein potentieller Störfaktor und Flaschenhals in der Verbindung. Auch wenn die seriellen Schnittstellen unter /dev schon auftauchen, müssen die gpio-pins noch korrekt konfiguriert werden. Dies geschieht über sudo armbian-config .
Dort können unter System -> Hardware die benötigten Ports aktiviert werden. Nach einem Neustart lässt sich nun die benötigte Schnittstelle auch unter /dev/ttySx korrekt nutzen.

Entgegen der „offiziellen“ Anleitung werden ich für OctoPrint einen neuen Nutzer mit eigenem home-Verzeichnis anlegen, damit sämtliche Daten sauber getrennt bleiben.

sudo useradd -rm octoprint

Die OctoPrint-Installation erfolgt dann im Verzeichnis /srv/octoprint/

cd /srv
sudo mkdir octoprint
sudo chown octoprint:octoprint octoprint

Nun noch zum Nutzer „octoprint“ wechseln, die virtuelle Python-Umgebung erstellen und darin die Installation abschliessen.

sudo -u octoprint -H -s
cd /srv/octoprint
python3 -m venv .
source bin/activate
pip install pip --upgrade
pip install octoprint

Damit OctoPrint auf die seriellen Schnittstellen zugreifen kann noch schnell den Nutzer zu den benötigten Gruppen hinzufügen.

sudo usermod -a -G tty,dialout octoprint

Fertig!

OctoPrint kann jetzt direkt (als user „octoprint“!) gestartet werden mit

sudo -u octoprint -H -s
/srv/octoprint/bin/octoprint serve

Damit OctoPrint auch bei jedem Systemstart geladen wird, muss noch das Startscript /etc/systemd/system/octoprint.service mit folgendem Inhalt erstellt werden.

[Unit]
Description=OctoPrint
After=network-online.target
Wants=network-online.target

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

[Install]
WantedBy=multi-user.target

Dieses script wird nun noch aktiviert und direkt gestartet:

sudo systemctl --system daemon-reload
sudo systemctl enable octoprint
sudo systemctl start octoprint

OctoPrint ist jetzt aktiv und kann auf port 5000 erreicht werden.
http://mei.ne.ip:5000/

Schreibe einen Kommentar

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