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.