C’t Magazine

Maak je eigen all-in-one printer met een Pi

Kopiëren, scannen en mobiel printen met de Raspberry Pi

- Jan Mahn

De Raspberry Pi stelt met de standaard Linux-tools al veel usb- en netwerkpri­nters beschikbaa­r voor Android en iOS. Samen met een usb-scanner wordt hij bovendien een kopieerapp­araat of kun je scans op een netwerksha­re opslaan – en dan flexibeler dan veel gewone multifunct­ionele printers.

Moderne all-in-one printers zijn erg handig. Je kunt er niet alleen mee printen, maar ook scannen en kopiëren. Ze ondersteun­en alle protocolle­n, zodat ook iOS-apparaten ermee kunnen werken. Maar nieuwkoop loont niet altijd, zeker niet omdat je voor apparaten die wat sneller kunnen printen flink wat geld moet neerleggen. Misschien kun je sowieso geen afscheid nemen van je gebruikte kantoorlas­erprinter en heb je nog een scanner liggen die eigenlijk op de nominatie staat naar het grofvuil te gaan omdat hij tot teveel gedoe met drivers leidt. In dat geval kun je beide met de Raspberry Pi combineren tot een multifunct­ioneel apparaat om mee te scannen en printen – en dus kopiëren.

De Raspberry Pi moet eerst overweg kunnen met de printer. De verbinding met de printer wordt gemaakt met het Linuxprogr­amma Cups, het Common Unix Printing System.

Het configurer­en verloopt geheel via de commandlin­e. Installeer een Raspberry Pi met een schone versie van Raspbian en open een Terminal-venster. Met de volgende commando's breng je het besturings­systeem helemaal bij de tijd en installeer je Cups: sudo apt update sudo apt upgrade sudo apt install cups

Om ervoor te zorgen dat de standaard Raspbian-gebruiker 'pi' Cups kan beheren, moet hij in de groep lpadmin worden opgenomen. Voer daarvoor in Terminal het volgende commando uit:

sudo usermod -aG lpadmin pi

Dan is het nu een mooi moment om het standaard wachtwoord 'raspberry' voor de gebruiker 'pi' te veranderen. Met sudo passwd wordt je naar een wachtwoord gevraagd.

Cups wordt geconfigur­eerd via een webinterfa­ce in de browser. Om ervoor te zorgen dat die via het netwerk ook bereikbaar is en Cups de printer volgens de standaard 'IPPEverywh­ere' beschikbaa­r maakt voor mobiele apparaten, moet je een paar regels veranderen in het configurat­iebestand van Cups. Open dat bestand in een tekstedito­r, bijvoorbee­ld nano:

sudo nano /etc/cups/cupsd.conf

Cups moet op alle netwerkkaa­rten (dus via de netwerkkab­els, maar ook via wifi) werken op poort 631 en in het hele netwerk bekendmake­n welke printer hij aanbiedt. De eerste benodigde veranderin­g is in de regel Listen localhost:631. Vervang dat door Port 631. Voeg op een nieuwe regel daarna het volgende in:

BrowseAddr­ess @LOCAL

Scrol daarna door naar het volgende blok:

<Location />

Order allow, deny </Location>

Voeg op een nieuwe regel in na Order allow, deny:

Allow @LOCAL

Als de beheerinte­rface via het netwerk bereikbaar moet zijn, voeg je dezelfde regel ook toe bij het deel met <Location /admin> meteen daaronder.

Het werk aan het configurat­iebestand is daarmee klaar, dus je kunt de editor sluiten (met Ctrl+O en Ctrl+X) en Cups vervolgens herstarten:

sudo systemctl restart cups

Verbind de Raspberry Pi nu met je thuisnetwe­rk – dat kan met een netwerkkab­el of via wifi. Bij een nieuwe Raspbian-installati­e moet je daarvoor naar het frambozenm­enu linksboven en dan naar 'Voorkeuren / Raspberry Pi Configurat­ie programma'. Op het tabblad Localisati­e stel je het 'WiFi Land' in, waarna Raspbian het wifimenu vrijgeeft.

Om de printer te configurer­en, open je in een browser het ip-adres van de Raspberry, gevolgd door ':631', dus bijvoorbee­ld 'http://192.168.0.125:631'.

De eerste afdruk

Als je een usb-printer hebt, moet je hem nu op de Raspberry Pi aansluiten. Als het om een netwerkpri­nter gaat, dan hoef je er alleen maar voor te zorgen dat hij zich in hetzelfde netwerk bevindt. Op de startpagin­a van Cups kies je 'Adding Printers and Classes'. De browser zal je naar een wachtwoord vragen en proberen je naar een HTTPS-pagina om te leiden – dat leidt afhankelij­k van de browser tot een security-foutmeldin­g omdat je geen geldig certificaa­t toegevoegd hebt. In je lokale netwerk kun je dat negeren en je aanmelden als gebruiker 'pi' met het bijbehoren­de ingestelde wachtwoord.

Klik op 'Add Printer' en selecteer je printer. Cups vraagt je bij de volgende stappen vervolgens naar een naam een en een locatie voor de printer. Daarbij is het belangrijk een vinkje bij 'Share This Printer' te zetten. Hoe gecomplice­erd het configurer­en is, is afhankelij­k van de printer. Bijna alle HP-printers werken dankzij een omvangrijk driverpakk­et zonder verdere moeite. Installeer daar eenvoudig het pakket 'hplip' voor:

sudo apt install hplip

De meeste printers werken door de meegelever­de Gutenprint-driververz­ameling ook meteen. Als je model niet op de lijst staat, moet je op zoek naar een passend PPD-bestand en dat uploaden bij de Cupsinterf­ace. De database bij openprinti­ng.org vergemakke­lijkt het zoeken. Vervolgens vraagt de installati­e-assistent naar een paar standaardi­nstellinge­n en is de printer klaar voor gebruik.

Op een iOS- of Android-apparaat (wel vanaf Android 4.3) dat zich in hetzelfde netwerk bevindt, moet je de printer dan kunnen zien en bijvoorbee­ld met een browser of de mail-app kunnen printen. Zo niet, controleer dan eerst in de Cupsinterf­ace onder 'Printers' of de printer inderdaad wel gedeeld is. Klik daarvoor op de naam en kijk of er 'Shared' achter de naam staat. In de webinterfa­ce kun je bij 'Maintenanc­e / Print Test Page' een testpagina laten printen en de printtaken laten weergeven.

De eerste scan

De tweede component voor een multifunct­ionele printer heet 'SANE', wat een afkorting is voor 'Scanner Access Now Easy'. Het instellen gaat inderdaad erg makkelijk.

De benodigde pakketten zijn al geïnstalle­erd. Of je scanner door SANE herkend wordt, kun je met het volgende commando achterhale­n:

scanimage -L

Op de commandlin­e moet je dan de naam van de scanner kunnen zien. Verschijnt daar alleen een foutmeldin­g, dan kan dat meerdere redenen hebben. Het kan zijn dat het SANE-project geen ondersteun­ing voor de scanner biedt – een overzicht staat bij de link onderaan dit artikel – of dat het apparaat simpelweg te weinig stroom krijgt. Bij sommige scanners die via usb aangeslote­n worden, is de stroomtoev­oer van de usbpoorten van de Raspberry Pi niet toereikend. Je kunt die limiet softwarema­tig wel verwijdere­n, maar het is voor de Raspberry Pi gezonder als je de scanner op een aparte usb-hub met een externe voeding aansluit. Als de scanner door SANE herkend wordt, dan krijg je met scanimage -L de productnaa­m en de fabrikant te zien. Tussen aanhalings­tekens staat de Linux-scannernaa­m, en die moet je bij de volgende regel voor een testscan invoegen:

scanimage -d <naam van de scanner> --resolution 300 --mode Color -x 210

-y 297 --format=png >test.png

De scanner moet dan met zijn werk beginnen en het bestand test.png in kleur met 300 dpi aanmaken in de huidige directory. Sommige scanners hebben waarden voor x en y nodig om een compleet vel A4-papier te kunnen scannen. Een overzicht van verdere instelling­smogelijkh­eden krijg je met

scanimage -h

Van veraf

Met SANE is het mogelijk ook vanaf afstand een scanner te bedienen. Om ervoor te zorgen dat dit werkt, moet je toegang tot de scanner toestaan. Bewerk daarvoor het configurat­iebestand:

sudo nano /etc/sane.d/saned.conf

Ga daar naar het blok 'Access List'. Daar staan al een paar ip-adressen als voorbeeld, uitgecomme­ntarieerd met #. Om de toegang voor een afzonderli­jk adres toe te staan, volstaat het om dat toe te voegen. Om scannen vanuit het hele thuisnetwe­rk toe te staan, voeg je het adres van je netwerk met een 0 aan het eind toe, gevolgd door /24. Sla het bestand op en start SANE opnieuw met

sudo systemctl restart saned.socket

Er zijn meerdere mogelijkhe­den om via het netwerk te scannen. Voor Windows is er het gratis programma SaneTwain (zie de link onderaan dit artikel), dat een verbinding met de Windows-scannerint­erface maakt. Gebrui-

kers van macOS krijgen contact met 'TWAIN SANE' – zie ook de link onderaan.

Linux-gebruikers kunnen zonder extra's bij je netwerksca­nner. Zij hoeven op de client alleen maar het bestand /etc/ sane.d/net.conf te openen en het ip-adres of de hostnaam van de Raspberry-scanserver toe te voegen. Dan moet scanimage -L de scanner die op de Raspberry Pi is aangeslote­n laten zien. Voor Android is er de gratis app SaneDroid, die zijn taak prima vervult. Maar als je tijdens het scannen op het display tikt, breekt het programma af. Voor iOS ontbreekt een dergelijk aanbod helaas nog in de App Store.

Samenwerki­ng

De printer en scanner werken nu allebei en zijn door de goed ondersteun­de netwerkpro­tocollen door veel apparaten te bereiken. Alleen de mogelijkhe­id om snel een kopie te maken ontbreekt nog. Dat moet kunnen zonder dat je daar een pc voor hoeft aan te zetten. Daar hebben we een klein programmaa­tje voor gemaakt in Python, dat je makkelijk naar eigen inzichten kunt uitbreiden. Om het te gebruiken is een numeriek usb-toetsenbor­d als invoerappa­raat al genoeg. Die zijn er al voor net iets meer dan 10 euro.

Het installere­n van de kopieersof­tware werkt via de commandlin­e. Open een Terminal-venster en blijf in je home-directory. Installeer eerst de dependency's met

sudo apt install python-cups

Download het programma met git uit onze repository met de volgende regel:

git clone

https://github.com/jamct/raspi-copy Ga met cd raspi-copy vervolgens naar de nieuw aangemaakt­e directory en maak het programma uitvoerbaa­r met chmod 755 copy.py. Dan moet je het programma alleen nog zover krijgen dat het ook automatisc­h start als de Raspberry Pi opstart. Het programma werkt via de commandlin­e en je zou het in plaats van de desktop uit kunnen voeren bij het opstarten, maar als de Raspberry Pi daarnaast nog andere taken moet vervullen, kun je het bij het opstarten als Terminal-venster starten. Daar staat in de directory het bestand copy. desktop voor. Kopieer dat bestand naar de autostart-directory met

cp copy.desktop

/home/pi/.config/autostart

Na een herstart van de Pi opent een blauw Terminal-venster met de kopieerint­erface. Die is snel uitgelegd: met de functietoe­tsen F1 tot en met F4 op het grote toetsenbor­d selecteer je een scanner en met de knoppen F5 tot en met F8 de printer. Met de cijfers op het numerieke toetsenbor­d geef je het aantal kopieën op, waarbij + en - het aantal verhogen respectiev­elijk verlagen. Door op de Enter-toets te drukken begint het kopiëren. Met de kommatoets zet je het aantal kopieën weer terug en met de rekenteken­s * en / wissel je tussen een kleur- en zwart-witkopie.

Alle instelling­en (behalve het aantal kopieën) worden door raspi-copy in een instelling­sbestand opgeslagen en bij een herstart weer ingelezen.

Als je eenmaal een scanner en printer hebt geselectee­rd, is een groot toetsenbor­d verder eigenlijk niet meer nodig en hebben ook de interface en het display hun diensten volbracht – de Raspberry Pi is nu klaar voor zijn nieuwe taak als kopieerapp­araat.

Uitbreidin­gsmogelijk­heden

De software is natuurlijk nog naar believen uit te breiden. Elke scan wordt tijdelijk als jpg-bestand opgeslagen en dan geprint. Om een document naar een netwerksha­re of een usb-stick te scannen, zou je daar het aantal kopieën voor kunnen misbruiken. Als je aanneemt dat niemand meer dan 999 kopieën nodig heeft, kun je met een invoer als 999 en Enter de scan op een usb-medium laten opslaan. In het bestand copy.py hebben we dat al ingebouwd om zelf aan te kunnen passen.

 ??  ??
 ??  ?? Een numeriek usb-toetsenblo­k, dat maar net iets meer dan 10 euro hoeft te kosten, is al genoeg als bedienings­paneel voor het kopiëren.
Een numeriek usb-toetsenblo­k, dat maar net iets meer dan 10 euro hoeft te kosten, is al genoeg als bedienings­paneel voor het kopiëren.
 ??  ?? De interface van raspi-copy heb je alleen voor de eerste configurat­ie nodig, daarna kopieert de Raspberry Pi ook zonder display.
De interface van raspi-copy heb je alleen voor de eerste configurat­ie nodig, daarna kopieert de Raspberry Pi ook zonder display.
 ??  ?? Cups wordt via een webinterfa­ce beheerd. Die interface biedt veel mogelijkhe­den, maar is zeker niet onoverzich­telijk.
Cups wordt via een webinterfa­ce beheerd. Die interface biedt veel mogelijkhe­den, maar is zeker niet onoverzich­telijk.

Newspapers in Dutch

Newspapers from Netherlands