CUPS Druckserver

CUPS stellt Druckdienste über das Netzwerk bereit. Dies ist sinnvoll, wenn der Drucker selbst keine Netzwerkschnittstelle besitzt. Somit können auch lokal per USB oder Parallelport angeschlossene Drucker über das Netzwerk angesprochen werden.

aptitude install cups

Die Datei /etc/cups/cupsd.conf ist schon mit sinnvollen Werten vorbelegt. Damit aber nicht nur der lokale Nutzer die Drucker administrieren kann, lasse ich diese auch vom lokalen Netz zu.Nach einem Neustart von cups kann man über das lokale Netz mit einem Browser seiner Wahl die Konfigurationsoberfläche unter http://<ip>:631/admin aufrufen.

Drucker hinzufügen

Cups unterstützt von sich aus schon viele Drucker, gerade neuere Modelle oder USB-Drucker fehlen jedoch häufig. Eine erste Anlaufstelle ist die Seite http://www.cups.org. Dort finden sich eine Druckerdatenbank. Wenn vorhanden, sollte man die ppd-Datei benutzen. Damit ist die Einrichtung ein Kinderspiel. Diese Daten werden auch von vielen Druckerherstellern mittlerweile auf deren Webseiten bereitgestellt, so dass man eventuell dort fündig wird.

USB-Drucker

USB-Drucker haben die unangenehme Eigenschaft, dass cups sie nur benutzen kann, wenn diese beim Systemstart angeschaltet sind. Damit auch nachträglich angeschaltete Drucker initialisiert werden, kann man die Hilfe von udev in Anspruch nehmen. Zuerst schaltet man alle Drucker an, die man mit cups verwalten möchte. Dann liest man mit lsusb die Vendor und Product-Ids aus.

lsusb
Bus 003 Device 002: ID 04f9:015f Brother Industries, Ltd MFC-8440
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 04e8:3008 Samsung Electronics Co., Ltd ML-6060 laser printer
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Beispielhaft ist hier die Ausgabe für die Drucker Brother MFC-8440 und Samsung ML-6060. Die Kennungen lauten 04f9:015f und 04e8:3008. Nun kann die Regeldatei /etc/udev/rules.d/49-printer.rules für udev angelegt werden.

#Brother MFC-8440
KERNEL=="lp0", SUBSYSTEM=="usb", SYSFS{idVendor}=="04f9", SYSFS{idProduct}=="015f", NAME="usb/lp0", GROUP="lp", MODE="0666", RUN+="/usr/sbin/cupsenable Brother_MFC-8440"

#Samsung ML-6060
KERNEL=="lp1", SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", SYSFS{idProduct}=="3008", NAME="usb/lp1", GROUP="lp", MODE="0666", RUN+="/usr/sbin/cupsenable Samsung_ML6060"

Die Vendor-Id wird bei SYSFS{idVendor}=="" und die Product-Id bei SYSFS{idProduct}=="" eingefügt.Der Parameter NAME gibt den Gerätenamen des Druckers an, dieser muss eindeutig sein. Die Geräte werden automatisch von udev unter /dev/usb/ angelegt. Damit erhält jeder Drucker immer denselben Gerätenamen, sobald er angeschaltet wird. Unter RUN wird der Befehl eingetragen, der cups mitteilt, dass der Drucker aktiv ist. Dazu muss der von cups verwendete Druckername als Parameter eingetragen werden. Der Druckername kann der Verwaltungsoberfläche von cups entnommen werden.