Progetto #3 – Server di stampa & scanner con Raspberry PI

Qualche giorno fa ho realizzato un server per stampare e scannerizzare foto e documenti con la mia stampante su un Raspberry PI, collegandola direttamente a quest’ultimo tramite cavetto USB. Purtroppo non avendo una stampante wireless questa soluzione mi è stata molto utile, per condividere con qualsiasi dispositivo (sia smartphone, tablet o PC) la stampante, con la possibilità di stampare e scannerizzare da qualsiasi punto della casa. Ecco in dettaglio i passi che ho seguito: Per prima cosa bisogna procursarsi CUPS, il server di stampa, che ci permetterà di condividere la nostra stampante via HTTP. Per farlo utilizzeremo il seguente comando:

sudo apt-get install cups

Dopodiché bisognerà aggiungere il nostro account utente sul Raspberry PI nel gruppo lpadmin, che ci permetterà di diventare amministratori di stampa, utilizzando il comando:

sudo usermod -a -G lpadmin <nome-utente>

CUPS di default ascolta solo le connessioni locali, cioè quelle che arrivano dallo stesso Raspberry PI. Per permettere l’accesso remoto bisognerà andare a modificare il file /etc/cups/cupsd.conf. Da linea di comando risulta semplice, usando:

sudo nano /etc/cups/cupsd.conf

Cerchiamo la riga contenente:

Listen localhost:631

E cambiamola a:

Port 631

Ricordandoci di aggiungere queste 2 linee:

BrowseRemoteProtocols CUPS dnssd
BrowseAddress @LOCAL

Cerchiamo poi la root Location del server e modifichiamola in modo che diventi così:

<Location  />
  Order allow,deny
  Allow all
</Location>

Abilitiamo anche l’accesso all’amministrazione, modificando in questo modo l’admin Location:

<Location /admin>
</Location>

Cerchiamo infine il blocco Location di /admin/conf e cancelliamo Order allow,deny, che ci abiliterà l’accesso ai files di configurazione.

Adesso con il comando:

sudo service cups reload

Ricarichiamo il file di configurazione di CUPS in memoria. Se visitiamo con un qualunque browser l’IP seguito dalla porta 631 del nostro Raspberry PI dovremmo riuscire a collegarci alla pagina di gestione di CUPS. In sostanza, l’URL della pagina dovrebbe essere simile a questo: https://192.168.0.8:631 e la schermata che apparirà dovrebbe essere simile a questa: Homepage di CUPS

Clicca sulla pagina di amministrazione (Administration), la pagina caricata sarà simile alla seguente:

Pagina di Amministrazione - CUPS

Clicca su “Add printer” in alto a sinistra. Verrà richiesta un’autenticazione tramite password. Digitiamo il nostro username e la password del nostro account su Raspbian.

Login a CUPS

Nota: Se venisse visualizzata una pagina con scritto Forbidden ma non viene richiesta nuovamente l’autenticazione significa che il vostro account non ha i permessi per gestire la stampa, dovete quindi ripetere il secondo comando presentato in questo progetto.

Se la stampante è stata collegata al Raspberry PI via cavo, dovresti avere una schermata simile alla seguente: Selezione della stampante - CUPS Clicca sulla tua stampante e assicurati di mettere il segno di spunta su “Share this printer”: Condivisione stampante - CUPS Adesso scegli il driver della stampante dalla lista che viene proposta, se non sai quale scegliere cerca quello che propone CUPS. Infine imposta le impostazioni di stampa predefinite: Impostazione stampante predefinita - CUPS Fatto! Nel caso in cui la tua stampante incorpori uno scanner, è consigliabile procedere come segue, per poter scannerizzare via wi-fi tramite il Raspberry PI:

sudo apt-get update
sudo apt-get install sane

Sane ci permetterà di condividere il nostro scanner. Controlliamo che lo scanner sia stato rilevato con il comando:

sudo sane-find-scanner

Dovrebbe uscire qualcosa di simile a questa schermata:

pi@print-server ~ $ sudo sane-find-scanner

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.
  # Also you need support for SCSI Generic (sg) in your operating system.
  # If using Linux, try "modprobe sg".

found USB scanner (vendor=0x03f0 [HP], product=0xa011 [Deskjet 3050A J611 series]) at libusb:001:005
found USB scanner (vendor=0x0bda [Manufacturer Realtek ], product=0x8172 [RTL8191S WLAN Adapter ]) at libusb:001:004
found USB scanner (vendor=0x0424, product=0xec00) at libusb:001:003
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

Fatto ciò, e se risulta tutto ok, procedi andando a modificare: /etc/default/saned con il comando sudo nano /etc/default/saned e assicuriamoci che sia stato impostato RUN=yes. Dopodiché apriamo il file /etc/sane.d/saned.conf sempre utilizzando sudo nano /etc/sane.d/saned.conf e impostiamo il Network ID della nostra rete, ad esempio 192.168.1.0/24 permetterà a Sane di accettare connessioni da tutti gli IP che iniziano con 192.168.1. Nel mio caso utilizzerò 192.168.0.0/24. Aggiungiamo poi l’utente “saned” al gruppo lp con il comando:

sudo adduser saned lp

E riavviamo il servizio:

sudo service saned restart

Facciamo poi partire in automatico il servizio:

sudo update-rc.d saned defaults

Controlliamo poi che tutto sia OK:

sudo service saned status

È tutto, con questo abbiamo concluso. Per scannerizzare su PC con Windows sarà necessario installare il software: SaneTwain. Su Linux è invece consigliabile: XSane. Una volta installati i software assicuratevi di aver immesso l’IP corretto e la porta 6566, con il relativo nome utente “saned” o quello del gruppo lp.