Klipper

Wichtig

Wir empfehlen die Installation von Klipper über Repetier-Server, weil wir es direkt so installieren, dass Klipper in Repetier-Server integriert wird. Die hier gezeigte Reparatur wird nur benötigt, wenn Klipper so installiert wurde, wie auf der offiziellen Klipper-Seite beschrieben wird.

Kann /tmp/printer nicht sehen und nicht verbinden

Klipper fügt standardmäßig einen Link /tmp/printer hinzu, der auf das richtige Gerät verweist, zu dem eine Verbindung hergestellt werden soll. Wenn dieser Link einem anderen Benutzer als repetierserver gehört und der Ordner /tmp das +t Flag gesetzt hat, können wir den Link aufgrund von Berechtigungsproblemen nicht lesen und öffnen. In diesem Fall kannst du entweder direkt auf das Gerät verweisen – normalerweise /dev/pts/1 – und alles wird funktionieren.

Lösung 1

Wenn du mehrere Klipper-Instanzen hast und es nicht klar ist, welches Gerät auf welches pts-Gerät zeigen soll, kannst du Klipper mit dem Flag -I mitteilen, wo der Link platziert werden soll.

Neue Systemd-Lösung

Aktuelle Klipper-Versionen verwenden eine systemd-Dienstdatei, um einen Dienst zu erstellen. Hier besteht die Lösung darin, den Benutzer, unter dem Klipper läuft, auf „repetierserver“ zu ändern und die Rechteprobleme mit /tmp/printer sind verschwunden. Logge dich also per SSH ein und folge den Anweisungen.

Klipper-Dienst beenden

sudo service klipper stop

Bearbeite den Klipper-Dienst so, dass er als Benutzer repetierserver läuft

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

Ersetze alten Inhalt

#Systemd service file for klipper
[Unit]
Description=Starts klipper on startup
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=pi
RemainAfterExit=yes
ExecStart=/home/pi/klippy-env/bin/python /home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log
Restart=always
RestartSec=10#Systemd service file for klipper
[Unit]
Description=Starts klipper on startup
After=network.target

in die folgende, in der wir nur die Zeile User= geändert haben:

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=repetierserver
RemainAfterExit=yes
ExecStart=/home/pi/klippy-env/bin/python /home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log
Restart=always
RestartSec=10

Alte Dateien entfernen, die vom Benutzer „pi“ erstellt wurden

sudo rm /tmp/klippy.log
sudo rm /tmp/printer

Erstelle den Dienst neu und starte Klipper

sudo systemctl daemon-reload
sudo service klipper start

Jetzt kannst du /tmp/printer als serielles Gerät im Repetier-Server auswählen und die Verbindung sollte funktionieren.

Alte init.d-Lösung

Ältere Klipper-Versionen benutzten einen Dienst, der in /etc/init.d/klipper definiert wurde – für diese wird diese Lösung verwendet.

Die Voreinstellung steht in /etc/default/klipper und kann dort geändert werden. Erstelle also einen Ordner, der von Klipper beschrieben werden kann, z.B.

sudo mkdir /var/lib/klipper
sudo chmod 777 /var/lib/klipper

Und dann ändern in /etc/default/klipper

KLIPPY_ARGS="/home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log"

in

KLIPPY_ARGS="/home/pi/klipper/klippy/klippy.py /home/pi/printer.cfg -l /tmp/klippy.log -I /var/lib/klipper/connect"

Und dann auch noch /var/lib/klipper/connect manuell in Repetier-Server port name eingeben. Nach dem Neustart von Klipper sollte Repetier-Server den Link nun sehen und problemlos öffnen.

Alternative Lösung

Die alternative Lösung, die genauso gut funktioniert wie der ersetzte Link, ist, Klipper als repetierserver Benutzer zu starten. Bearbeite /etc/default/klipper und setze

KLIPPY_USER=repetierserver

und starte Klipper neu. Jetzt haben beide den gleichen Benutzer und es gibt keine Rechteprobleme.