Monitorare il livello delle cartucce di inchiostro su Linux

Tutte le stampanti inkjet sono avide di inchiostro, tanto che alcune di esse si rifiutano addirittura di lavorare se perfino una soltanto delle loro (numerose) cartucce si sia esaurita. Per evitare brutte sorprese (specie all'indomani di un esame…) è quindi necessario monitorare costantemente il livello delle cartucce di inchiostro, in modo da poter acquistare per tempo le ricariche. Sebbene molte stampanti integrino dei led o altre soluzioni hardware per individuare i colori in via di esaurimento, sarebbe comunque più comodo ottenere tali informazioni via software…usando un paio di programmi davvero semplici, ma molto utili.

HPLIP

Hewlett-Packard's Linux Imaging and Printing software (HPLIP) è un progetto open-source, guidato da Hewlett-Packard, finalizzato a mettere gli utenti di Linux nelle condizioni di usare appieno le funzionalità di stampa, di copia ed fax delle stampanti HP.

HPLIP supporta numerose stampanti ed è presente nella maggior parte delle distribuzioni moderne.

escputil

escputil è uno strumento a riga di comando che permette di eseguire numerose attività di manutenzione sulle stampanti a getto di inchiostro Epson Stylus: allineamento e pulizia delle testine, controllo degli ugelli, identificazione della stampante e lettura del livello di inchiostro.

Le due soluzioni precedenti sono molto complete e, probabilmente, dovrebbero essere preferite. Personalmente non le ho provate ed ho sviluppato Inq

Inq

Inq, un front-end grafico per libinklevel, permette agli utenti Linux di monitorare il livello di inchiostro di numerose stampanti Epson, Canon ed HP.

libinklevel

libinklevel è una libreria per monitorare il livello delle cartucce di inchiostro di stampanti attaccate a sistemi Linux o (Open)Solaris. Supporta numerose stampanti Epson, Canon ed HP attaccate alla porta USB oppure a quella parallela. Sono supportate anche le stampanti di rete Canon BJNP. Per prima cosa verifica che la tua stampante sia supportata o quantomeno che non compaia nell'elenco di quelle non supportate1).

Verifica che la libreria non sia già presente nei repository della tua distribuzione preferita

Installazione dai sorgenti

  • Verificare che sul tuo sistema sia presente la libreria (compresi gli header) libieee1284 ≥ 0.2.11

In caso negativo, prova innanzitutto a cercare nei repository della tua distribuzione; altrimenti, scarica i sorgenti e compilali con i soliti passi ./configure, make, make install

  • Scaricare i sorgenti
  • Nel caso la tua distribuzione sia basata su RPM, puoi compilare un pacchetto RPM. Esegui come root2) il comando
    # rpmbuild -ta libinklevel-*.tar.gz

    Il nuovo pacchetto (ancora da installare) verrà collocato in una cartella, che puoi determinare con il comando

    # rpm --eval "%{_rpmdir}"
  • Altrimenti, puoi procedere con la normale installazione
    • Scompattare i sorgenti
      $ tar xvzf libinklevel-*.tar.gz
    • Compilare la libreria
      $ cd libinklevel-*
      $ ./configure
      $ make
      
    • Installare la libreria
       $ su -c "make intall"
      Password: <tua password di root>
      

Fedora 10 non cerca le librerie nella directory /usr/local/lib; secondo questo articolo, è sufficiente aggiungere in cima al file /etc/ld.so.conf la riga /usr/local/lib

  • Come root eseguire i comandi
    • # if [ -x /sbin/restorecon ]; then restorecon /usr/local/lib/libinklevel.so.* ; fi
    • # ldconfig

libinklevel ha bisogno dei permessi di lettura/scrittura sul device file al quale è associata la stampante che si vuole interrogare. Pertanto, o si utilizzano i front-end da super utente, o si devono concedere al proprio utente i suddetti permessi sul device file appropriato. Per le stampanti parallele esso è /dev/parport[portnumber] o /dev/lp[portnumber], mentre per le stampanti USB esso è /dev/usb/lp[portnumber] o /dev/usblp[portnumber].

Questi file appartengono normalmente al gruppo lp, perciò è sufficiente aggiungere il proprio utente a tale gruppo. Eseguire come root il seguente comando:

# gpasswd -a <nome utente> lp

Le stampanti Canon notificano soltanto se il livello di una cartuccia di inchiostro è sufficiente o meno. In questo caso libinklevel riporta rispettivamente i valori 100% e 20%.

Nel caso di stampanti EPSON occorre sapere che:

  • sotto certe circostanze, ad esempio quando una cartuccia è completamente esaurita, la interrogazione può richiedere dai 20 ai 30 secondi
  • se la interrogazione avviene quando la stampante non è ancora completamente inizializzata, allora la stampante prende un foglio senza stampare nulla

Ink

ink è un front-end a riga di comando per libinklevel.

Installazione dai sorgenti

  • Scaricare i sorgenti di ink (scegliere la versione più recente)
  • Scompattare i sorgenti
    $ tar xvzf ink-*.tar.gz
  • Compilare i sorgenti
    $ cd ink-*
    $ make
    
  • Installare il programma
    $ su -c "make install"
    Password: <tua password di root>
    

Utilizzo

Stampanti USB

$ ink -p usb

interroga la stampante USB associata al device file /dev/usblp0 o /dev/usb/lp0 (ciò dovrebbe essere generalmente sufficiente)

$ ink -p usb -n #

interroga la stampante USB associata al device file /dev/usblp# o /dev/usb/lp# (dove # è un numero intero)

ink -d device file

interroga la stampante USB associata al device file specificato

Stampanti parallele

$ ink -p parport

interroga la stampante parallela associata al device file /dev/lp0 o /dev/parport0 (ciò dovrebbe essere generalmente sufficiente)

$ ink -p parport -n #

interroga la stampante parallela associata al device file /dev/lp# o /dev/parport# (dove # è un numero intero)

ink -d device file

interroga la stampante parallela associata al device file specificato. Questo metodo:

  • non funziona su Linux
  • funziona su Solaris 10 ed OpenSolaris

Stampanti di rete Canon BJNP

$ ink -b bjnp://<URI oppure IP address>

Esporta pagina in formato Open Document

1) in pratica, la libreria dovrebbe supportare la maggioranza delle stampanti Epson ed HP, a meno che non compaiano nella lista dei dispositivi non supportati
2) altrimenti, puoi impostare il sistema RPM per consentirti di costruire i pacchetti come utente normale. Sotto Fedora puoi usare da utente normale il comando rpmdev-setuptree, che creerà nella tua home la cartella rpmbuild, dove verranno posti i nuovi pacchetti