Skrivarservice med Cups

Detta är en enkel guide som kan ge några få riktlinjer för installering av en skrivarserver på en Raspberry körandes Linux, med vilken det ska kunna gå att dela ut skrivare till Windows, Mac och Linux och även Apple och Android hand-enheter.

# apt-get install cups

Sen behöver användare, i detta faller pi läggas till som avändare i både lpadmin och lp (ja, den senare är jag inte säker på om det behövs, utan jag gjorde det för säkerhets skull). Så här gör man det

# usermod -a -G lpadmin pi

# usermod -a -G lp pi

Om det skulle bli fel och du behöver ta bort användaren från gruppen, (i det här exemplet lp) gör du det enkelt med deluser

# userdel lp pi Och gruppen försvinner inte i och med det här kommandot.

Bäst fungerar utskrifter från Linux till Cups skrivarservern om skrivaren installeras med socket://10.0.1.88:9100 där skrivarservern finns på ip-adressen 10.0.1.88 och på port 9100. Det kan vara lurigt att få Windows att hitta skrivare som går på Cups-servern, men det verkar fungera bättre om de installeras med socket-protokollet i Cups, så här: socket://10.0.1.88/socket där skrivarnamn byts ut mot det namn du vill ge skrivaren. I WIndows föreslås man sedan vid skrivartilläggning ange TCP/IP-port och namn på det här viset: http://10.0.1.88:631/printers/skrivarnamn.

Men som sagt: det kan vara mycket krångel med konfigurationsfilen /etc/cups/cupsd.conf på skrivarservern för att Windows ska förmås hitta skrivarna. Men man behöver inte installera samba för Cups för att få det att lira.

Denna Cups-server snurrar på en Raspberry B med 512mb ram-minne och kör Debian 8 eller Jessie som den också kallas. Ett stort problem var att drivrutinerna att bita. Men till en Samsung ML-3310ND var bästa alternativet inte Samsungs drivrutiner för Linux, fastän de har gjort sådana till arm-arkitekturen också. Men genom att installera OpenSource-drivrutiner för Samsung fungerar det bra. Det fanns till och med drivrutiner exakt för ML-3310ND. Annars brukar man få välja några som heter ML-331x-series. Men de installerade jag med apt-get.

# apt-get install printer-driver-splix

Förutom det har jag en Canon Pixma MG-2450. Till den hade Cups drivrutinerna klara, ja alltså skrivardrivrutiner. Den har ju annars skanner och kopiator och detta har jag inte fått att fungera från Cups-servern. 

Detta är de ändringar jag gjorde i konfigurationsfilen /etc/cups/cupsd.conf. Du ser de i fetstil.

# Listen localhost:631
Port 631

 

< Location / >
# Restrict access to the server...
Order allow,deny
Allow @local
< /Location >

< Location /admin >
# Restrict access to the admin pages...
Order allow,deny
Allow @local
< /Location >

< Location /admin/conf >
AuthType Default
Require user @SYSTEM

# Restrict access to the configuration files...
Order allow,deny
Allow @local
< /Location >

Sen är det bara att gå till serverns ip-adress med webbläsaren följt av portnummer. T ex http://10.0.1.88:631. Mycket kan krångla, men ge inte upp. Det går att fixa. Dock har jag inte tagit med allt jag behövde göra för att få det att fungera.

Sätta upp en nätverksskanner

Sane as a server

 

Set sane to run as a server, ie expect connections Edit /etc/default/saned to read:

# Set to yes to start saned                                                     
RUN=yes

 

You must be root to edit this file (hint, use sudo)

 

Share with

 

Set the subnet that will be able to see the scanner Edit /etc/sane.d/saned.conf to share the printer on your subnet, for example:

192.168.1.0/24

 

Make sure it is in your range of IPs. It hit me badly when I mis-configured it for 192.168.0.0 when I meant 192.168.1.0 !

The /24 means to share with everybody in xxx.xxx.xxx.0 to 255.

 

User setup

 

In some cases, correct permissions needs to be set. E.g. for HP DesignJet 2050 All-in-one device, the saned user has to be inserted into lp group. To do that by typing

sudo adduser saned lp eller usermod -a -G lp saned

 

To verify the saned user has the correct permissions to access the scaner device, run the following commands:

sudo -s
su -s /bin/bash saned
scanimage -L

As a result, you should see a device identified, e.g.

Och sen ska vi bara testa att skanna ett dokument. Lägg något i skannern. Sen skannar du så här enkelt.

# scanimage > test.ppm

Och sen är det bara att öppna och kolla resultatet med en bildvisare. Om allt är okej. Tänk inte på kvalitén nu utan bara det blev en bild är det ok.

Sen ska vi starta bildläsarprocessen som ska gå i bakgrunden. Debian 8 har ju börjat med systemctl så för att gå i gång skannerprocessen måste vi göra så här.

# systemctl enable saned.socket

Redigera vilka som ska få tillträde till skannern i /etc/sane.d/saned.conf:

## Access list
10.0.1.3 eller hela nätverket 10.0.1.0/24
Sen måste brandväggen på servern tillåta inkommande skannertrafik. Debian 8 har iptables så då gör vi så här:
# iptables
-A INPUT -s 10.0.1.3 -p tcp --dport 6566 -j ACCEPT Här kan man förstås också tillåta hela nätverket på samma sätt som i konfigurationsfilen saned.conf Sen ska man försäkra sig om att sane-servern går genom att skriva in nedanstående i /etc/default/saned:

RUN=yes

Det är om du använder sysv init system, men på Deiban 8 har vi ju systemctl:

# systemctl enable saned.socket

Det fungerar i alla fall.

Konfiguration på klienten

På en Linux-klient behöver man inte göra mycket mer än att skriva in två rader i /etc/sane.d/net.conf

connect_timeout = 60
minserver

Och då fungerar det med antingen ip-adressen till servern eller värdnamnet om du har en dns-server på det lokala nätet som kan slå upp ip-adressen via namnet. Man måste förstås ha ett verktyg med vilket man kan läsa in bilder. Jag har bara provat med Simple Scan som ingår i skrivbordsmiljön Gnome 3. Där dyker min nätverksanslutna skanner upp automatiskt och är mycket enkel att använda. Emellertid finns det inga inställningsmöjligheter. För den som vill ha det kan man, om man har Gimp installerat, få fler finesser genom att installera ett tillägg vid namn xsane-gimp och installeras i Fedora med kommandot:

# dnf install xsane-gimp

Möjligen skriver jag några rader om hur man kan hantera skannern från Windows- och Macdatorer. Om det går förstås.

Utskrifter från terminalen

# lpr -H localhost:631 -P EPSON-printer -o page-ranges=3 ~/Dokument/utskrift.pdf

Kommandot som används för utskrifter heter lpr och den första parametern "-H" talar om var skrivarservern finns och och att den använder port 631. I exemplet finns servern på datorn (localhost) du sitter på.  Därefter anges skrivaren med parametern "-P" och namn på skrivaren. För att få reda på vilka skrivare du har tillgång till och namnen på dem kan du använda lpstat.

# lpstat -h localhost:631 -p 

Namnet på skrivaren kan vara väldigt långt. För att ändra måste du först stoppa skrivartjänsten med systemctl stop cups.service och sedan ändra namnet på två ställen, dels i /etc/cups/printers.conf, dels namnet på ppd-filen i /etc/cups/ppd. Namnen ska vara likadana förstås. I printers.conf ändras namnet i <Printer långt-namn-med-många-tecken> till enklare: <Printer skrivarn> och följdaktligen ska ppd-filen heta skrivarn.ppd. Glöm inte att starta skrivarservern med "systemctl start cups.service".

Men hur ska jag skriva ut enbart svart-vitt från terminalen? Ett förslag ser ut så här:

# lpr -H localhost:631 -P skrivarn -o saturation=0 utskrift.pdf

Men det fick jag inte att fungera. Däremot fixades svart-vita utskrifter genom att ändra i ppd-filen från COLOR till MONO i parametern DefaultInk

*DefaultInk: COLOR till *DefaultInk: MONO Den ändringen gick också att göra i cups-servern (localhost:631) genom att klicka på skrivaren - Administration  - Set Default Options - Grayscale On (i stället för Off). Troligen går det att göra från kommandolinjen med lpadmin. Men det måste kontrolleras.