OctoPrint auf einem Intel NUC installieren


Da OctoPrint auf meinem Raspberry 2 etwas träge ist, habe ich meinen alten Intel NUC mit ATOM CPU herausgekramt und OctoPrint darauf installiert.

Nach der Debian minimal Installation müssen noch ein paar Systemanpassungen gemacht werden, damit auch alle Komponenten (wie z.B. WLAN) des NUC funktionieren.

WLAN

Der integrierte WLAN Chip in meinem NUC ist ein “ Intel Corporation Wireless 7260″. Hierfür werden Firmware Dateinen von Intel benötigt. Diese sind im „non-free“ Repository enthalten. Dieses muss allerdings erst noch aktiviert werden. In der Datei /etc/apt/sources.list muss hinter dieser Zeile

deb http://ftp.de.debian.org/debian/ stretch main

noch das „non-free“ Repository ergänzt werden, so dass sie folgendermaßen aussieht:

deb http://ftp.de.debian.org/debian/ stretch main contrib non-free

Nun kann man die fehlenden Firmware Dateien nachinstallieren.

 apt-get update && apt-get install firmware-iwlwifi firmware-realtek

Nach einem Neustart sollten nun die Netzwerkkarte und die WLAN-Karte ordnungsgemäß funktionieren (Netzwerkkarte funktioniert vorher schon, aber der Kernel meldet eine fehlende Firmware Datei).

Nun fehlt nur noch die WLAN Verbindung. Hierfür muss wpa_supplicant installiert werden.

apt-get install wpasupplicant

Nun müssen noch Anpassungen an den Dateien /etc/network/interfaces und /etc/wpa_supplicant/wpa_supplicant.conf gemacht werden. Die IP-Adresse soll vom DHCP-Server vergeben werden.

vim /etc/network/interfaces
auto wlp2s0
allow-hotplug wlp2s0
iface wlp2s0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

In der Datei wpa_supplicant.conf müssen die Zugangsdaten zum WLAN angegeben werden. Dieses Beispiel stellt eine Verbindung zu einem WPA2 gesicherten WLAN her.

vim /etc/wpa_supplicant/wpa_supplicant.conf
network={
        ssid="SSID"
        psk="PASSWORT"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        auth_alg=OPEN
}

Installation OctoPrint

Die folgenden Pakete sind Grundvoraussetzung und müssen als erstes installiert werden.

 apt-get install python-pip virtualenv git libavahi-compat-libdnssd-dev

Nun kann die aktuelle Version aus dem Repository heruntergeladen werden.

cd /opt/
git clone https://github.com/foosel/OctoPrint.git

Da OctoPrint nicht mit Root-Rechten läuft, muss man einen neuen User anlegen. Zusätzlich benötigt der neue Benutzer auch die Rechte auf das OctoPrint Verzeichnis. Nun kann die Virtuelle Python Umgebung für Octoprint erzeugt werden.

useradd -m octoprint
chown -R octoprint:octoprint /opt/OctoPrint
cd OctoPrint
sudo -u octoprint virtualenv venv

Als kleiner Zwischenschritt kann nun die Python Bibliothek für Bonjour installiert werden.

venv/bin/pip install https://goo.gl/SxQZ06

Nun kann OctoPrint installiert werden.

./venv/bin/python setup.py install
chown -R octoprint:octoprint /opt/OctoPrint

Wenn alles gut gegangen ist, so kann unter http://IP-Adresse:5000/ die OctoPrint-Installation erreicht werden.

OctoPrint Wizzard

Autostart

Bis jetzt muss OctoPrint noch manuell gestartet werden. Das ist aber für einen Server nicht praktikabel. Mit STRG+C läßt sich OctoPrint wieder beenden. Als nächstes müssen noch die Autostart Scripte eingerichtet werden.

wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.init && sudo mv octoprint.init /etc/init.d/octoprint
wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.default && sudo mv octoprint.default /etc/default/octoprint
sudo chmod +x /etc/init.d/octoprint

Eine kleine Anpassung in der Datei /etc/default/octoprint und schon lässt sich OctoPrint als Daemon starten. Hier der gesamte Inhalt der Datei.

# Configuration for /etc/init.d/octoprint

# The init.d script will only run if this variable non-empty.
OCTOPRINT_USER=octoprint

# base directory to use
#BASEDIR=/home/octoprint/.octoprint

# configuration file to use
#CONFIGFILE=/home/octoprint/.octoprint/config.yaml

# On what port to run daemon, default is 5000
PORT=5000

# Path to the OctoPrint executable, you need to set this to match your installation!
DAEMON=/opt/OctoPrint/venv/bin/octoprint

# What arguments to pass to octoprint, usually no need to touch this
DAEMON_ARGS="--port=$PORT"

# Umask of files octoprint generates, Change this to 000 if running octoprint as its own, separate user
UMASK=022

# Process priority, 0 here will result in a priority 20 process.
# -2 ensures Octoprint has a slight priority over user processes.
NICELEVEL=-2

# Should we run at startup?
START=yes

Ist die ConfigDatei geändert, muss noch das Script dem Autostart hinzugefügt werden.

update-rc.d octoprint defaults

Zugriff auf den seriellen Port

Um Zugriff auf die seriellen Ports des Systems zu bekommen, muss der Benutzer octoprint der Gruppe dailout hinzugefügt werden.

usermod -a -G dialout octoprint

Nach einem Neustart des Systems sollte nun die Webseite mit dem Wizzard erreicht werden können.