Een vijftal jaar geleden kochten we een nieuwe printer/scanner: een
Brother
DCP-115c.
Eerst
en vooral: ik zou het niet opnieuw doen. Een nieuwe inktcassette kost
bijna even veel als de printer zelf, en bovendien heeft het meer dan 3
jaar geduurd vooraleer de printer min of meer ‘out of the box’ werkte
met een recente Linuxdistributie; de eerste waarmee het lukte was Ubuntu
10.04. (Is het nu echt zó moeilijk om postscript-ondersteuning in een
printer in te bouwen? Maar dit ter zijde.)
Tegenwoordig staat onze
printer op zolder, want als we thuis een computer gebruiken, dan is het
een laptop. Die printer hangt aan een Linuxserver, en je kunt dus via
het draadloze netwerk je printeropdrachten naar boven sturen. Je moet
dan wel trappen doen om de prints te gaan halen, maar dat beperkt het
aantal printopdrachten, en is goed voor de conditie ;-)
De
printserversoftware is gewoon CUPS, en die draait op mijn ‘thuisserver’,
een oude PC waar ik in het voorjaar van 2008 Ubuntu server edition op
installeerde. Ik zou nu misschien niet meer voor Ubuntu kiezen, maar
mijn server van toen draait nu nog steeds met weinig problemen, dus
waarom zou ik hem vervangen?
De installatie van CUPS was niet
moeilijk:
sudo apt-get install brother-cups-wrapper-common brother-cups-wrapper-extra cups
Als
jouw printer standaardvriendelijker is dan de mijne, dan zijn die
Brotherpakketten uiteraard niet nodig.
De configuratie was al iets
moeilijker. Op mijn Ubuntu server staat geen grafische schil, en de
webinterface voor de cups-configuratie werkt standaard enkel vanaf
localhost. Ik had cups toch graag geconfigureerd vanop een andere PC,
maar ik vond niet direct hoe ik dat moest ‘enablen’, dus loste ik het op
via een ssh-tunnel. (Vermoedelijk gaat dat allemaal veel gemakkelijker
door rechtstreeks de configuratiefiles aan te passen, maar ik had geen
zin om dat uit te zoeken.) Ssh-tunnel dus. Voor
linux/cygwin:
ssh -L 8080:127.0.0.1:631 username@servername
waarbij
je het stuk ‘username@servername’ aanpast alnaargelang de naam van je
‘server’ en een user die kan ssh'en.
Als je nu surft naar
http://localhost:8080 surft, kom je terecht op de
administratie-interface van cups op je printserver. Eventueel kun je
daar onder het flapje ‘Administration’ ‘Allow remote administration’
aanvinken, zodat je in de toekomst de omweg via de ssh-tunnel niet meer
nodig hebt. Je kan je printserver dan beheren via
http://servername:631.
Ook onder het flapje ‘Administration’ klik
je op ‘Add printer’ om je printer te configureren. Dit komt neer op het
doorlopen van een aantal eenvoudige stappen. (Ik koos de driver voor
Brother DCP-110c, en die werkte.)
Je geconfigureerde printer
aanspreken vanop een andere Linuxcomputer is vrij gemakkelijk. De meeste
distributies voorzien wel een tooltje waarmee je een printer kan
‘toevoegen’. Deze tooltjes zijn in het algemeen ook in staat om een
cups-printerserver te herkennen. Moest dat toch niet het geval zijn, dan
kan je allicht ergens de URI van je printer opgeven, en die is
‘ipp://servername/printers/printername
’ waar ‘printername’ de
naam is die je je printer gegeven hebt op de server. (Let op: ik moest
op de client, in dit geval Linux Mint, ook wel de Brotherdingen
installeren: brother-cups-wrapper-common en brother-cups-wrapper-extra).
Je kan je cups-printserver overigens ook gebruiken onder Windows,
op voorwaarde dat de juiste printerdriver op je Windowsclient
geïnstalleerd is. Je voegt daarvoor een netwerkprinter toe, en als URL
gebruik je gewoon de URI van je printer, maar je tikt ‘http:’ in plaats
van ‘ipp:’, dus: ‘http://servername/printers/printername
’. Geen
gedoe meer dus met installatie van samba; had ik dat maar eerder geweten
;-)
Maar nu probleem 2: de scanner. Er bestaan command-line tools
om de scanner aan te sturen:
apt-get install sane-utils
Je
hebt ook nog software van Brother zelf nodig; download en installeer het
pakket
brscan2
van de website van Brother.
Update: If you have a 64-bit
system, the driver provided by Brother won't work on a recent Ubuntu
distribution. Shame on you, Brother. A solution can be found (as always
:)) in the forums:
http://ubuntuforums.org/showpost.php?p=11578647&postcount=8
Scannen
kan nu als
volgt:
sudo scanimage --format=tiff > outputfile.tiff
Nu
graag nog wat gebruikersgemak. Je zou een webapplicatietje op de server
kunnen maken, dat scant en het gescande document aanbiedt als download.
Maar in mijn situatie is dat niet ideaal. Er staat geen grafische
omgeving op mijn server, en bovendien hangt er ook geen scherm aan. En
telkens een laptop mee naar boven nemen om de scan te kunnen starten, is
een beetje vervelend. (En naar beneden lopen nadat het document op de
scanner ligt, om het na de scan terug te gaan halen, is nog
vervelender.)
Ik pakte het anders aan. Er hangt nu een toetsenbord
aan mijn server, en telkens je op ENTER duwt, wordt een scan gemaakt,
die wordt dan weggeschreven, en kan dan opgepikt worden via ftp of
(toch) samba.
Om dit te bewerkstelligen maakte ik een nieuwe user
aan:
sudo useradd -g scanner scanner
Deze user moet kunnen
scannen met sudo, zonder dat daarvoor een wachtwoord ingegeven moet
worden. Bewerk de configuratie van sudo met visudo
, en voeg deze
lijn toe:
scanner ALL = NOPASSWD : /usr/bin/scanimage
Maak
een bestand ‘/usr/local/bin/scanloop.sh
’ aan, met deze
inhoud:
#!/bin/bash
outputdir=/mnt/bigdata/documenten/scans
while true; do
echo Druk ENTER om te scannen.
read a
outputfile=`tempfile --suffix=.tiff -d $outputdir`
chmod 666 $outputfile
sudo scanimage --format=tiff > "$outputfile"
echo Scan bewaard als "$outputfile"
done
En
maak het
executable:
sudo chmod +x /usr/local/bin/scanloop.sh
Als
we het nu voor elkaar krijgen dat na het booten van de server de user
scanner automatisch aanlogt, en bovenstaand script uitvoert, dan zijn we
gesteld. En dat kan met
‘mingetty’.
sudo apt-get install mingetty
In het bestand
‘/etc/init/tty1.conf
’ vervang je de lijn
exec /sbin/getty -8 38400 tty1
door
exec /sbin/mingetty --autologin scanner tty1
Op die manier
wordt na het opstarten van de server, de user ‘scanner’ automatisch
aangemeld op tty1. Als je dan nog het volgende commando
ingeeft:
usermod -s /usr/local/bin/scanloop.sh scanner
dan maak
je het nifty scanscriptje de shell voor diezelfde gebruiker.
Als je
nu je server herstart, dan zal op tty1 automatisch het scanscriptje
gestart worden. Iedere keer je op ENTER drukt, wordt een scan gemaakt,
en weggeschreven in de directory bepaald in ‘scanloop.sh’. Die directory
maak je dan beschikbaar via ftp, samba, webinterface, of nog een andere
creatieve oplossing, zodat je vanop elke client in huis de documenten
gemakkelijk kan downloaden.