SOLUZIONE A PROBLEMI CUPS E GHOSTSCRIPT SU STAMPANTI USB

 

A partire dalle versioni 1.5.x e successive può capitare che CUPS, il sistema più usato in ambito *NIX per gestire le moderni stampanti, dia un fastidioso problema con le stampanti USB che sono ormai la maggior parte di quelle in commercio.
I problemi possono essere sintetizzati in due categorie:

1) La stampante USB non viene riconosciuta;
2) La stampante viene vista ma non stampa nulla.

Entrambi gli inconvenienti si verificano, a giudicare dalle richieste d'aiuto, abbastanza frequentemente. Personalmente ho avuto modo di doverli affrontare su una distro ArchLinux ed una Sabayon 14.01 ma non è detto che non si possa verificare su altre distro Linux (Slackware, Gentoo, ecc.). Le soluzioni, per fortuna, sembrano essere abbastanza univoche e applicabili su tutte le distro. Prima di proseguire si suppone che sappiate accedere al server CUPS da browser inserendo l'URL localhost:631 per la configurazione della stampante.
Le soluzioni si trovano in giro per la rete e spesso non sono in italiano. La più abbordabile che potete usare la trovate QUI

Ovviamente si da per scontato che la stampante USB sia vista dal sistema operativo. Per verificarlo basta dare un lsusb da terminale e dovrebbe uscire fuori una cosa del genere:
Bus 008 Device 004: ID 04b8:0863 Seiko Epson Corp. ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F


Fate molta attenzione ai codici dopo ID. Infatti 04b8, in questo esempio, è l'ID vendor e 0863 è l'ID del prodotto. Vi saranno utili in seguito. Inoltre, potete anche verificare, spengendo e riaccendendo la stampante USB, le ultime righe del comando dmesg che  dovrebbe dare qualcosa di simile: usblp 8-3:1.1: usblp0: USB Bidirectional printer dev 4 if 1 alt 0 proto 2 vid 0x04B8 pid 0x0863


Se nonostante questo sotto la directory /dev/ non vedete una directory /usb oppure un file lp0 dentro la directory /dev/usb/ allora significa che CUPS non è in grado di riconoscere la stampante malgrado sia riconosciuta dal sistema operativo.
Questo incoveniente proviene da incompatibilità tra le versioni di CUPS e il modulo usblp. Se avete versioni inferiori alla 1.6.x di CUPS è necessario disabilitare il modulo usblp. Per vedere se è in funzione, dare da terminale lsmod | grep usblp  e vedete se appare l'assegnazione del modulo. Per disabilitarlo basta editare nel file /etc/modprobe.d/modprobe.conf la seguente riga: blacklist usblp.
Questo problema, ben conosciuto, dovrebbe essere superato dalle versioni 1.6.x di CUPS. Purtroppo non sempre è così oppure, nonostante la rimozione del modulo usblp, il problema continua a persistere. In questi casi, la soluzione è intervenire su udev (gestore dei dispositivi per il kernel Linux) e relativi permessi. Andare nella directory /etc/udev/rules.d e se c'è un file di Sane (API per l'accesso agli scanner sotto Linux) rimuoverlo (fatene prima una copia per sicurezza). Quasi sicuramente lo scanner vi funzionerà ugualmente con Sane. Inserite comunque un file di testo per la stampante nella directory medesima, con questa stringa:

ATTR{idVendor}=="04b8", ATTR{idProduct}=="0863", MODE:="0664", GROUP:="lp", ENV{libsane_matched}:="yes" 


Ovviamente dovete sosituire l'idVendor e l'idProduct con quello trovato da voi con il precedente comando lsusb. Salvate il file con un titolo analogo o uguale  a questo: 10-usbprinter.rules.
Assicuratevi poi che l'utente sia nel gruppo 'lp' ed eventualmente aggiungetelo da terminale con il comando gpasswd -a <nome utente> lp
Per essere sicuri, fate un reboot del sistema e molto probabilmente la stampante verrà finalmente vista. Qualche volta è necessario rimuovere la stampante già installata ed installarla di nuovo da browser accedendo con localhost:631. Con questo hack non dovreste avere la necessità di mettere in blacklist il modulo usblp che potete eventualmente ripristinare, commentando (con '#') la riga presente nel file modprobe.conf

Passiamo al secondo inconveniente. La stampante non stampa nulla, nonostante tutto sia posto e CUPS la rilevi. Allora bisogna procedere a questo controllo. Scrivere due righe di prova in un file che salvate con suffisso .txt, poi date da terminale il comando lp <nome file>. Se per caso esce fuori un messaggio tipo lp: Unsupported format 'text/plain' significa che la stampante non funziona ancora per altri motivi e connessi probabilmente a ghostscript (cioè la collezione di programmi per PDF e PostScript) che viene generalmente installato in tutte le distro Linux e che, con opportuna configurazione, è necessario al buon funzionamento di una stampante non postscript con CUPS. In tal caso la soluzione è semplice: basta reinstallare ghostscript per tornare a stampare! Da sottolineare che il problema può verificarsi in seguito ad aggiornamenti, nella vostra distro Linux, del software riguardante CUPS e ghostscript (quest'ultimo con versioni successive alla 0.8x).