====== 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 ===== [[http://hplipopensource.com/hplip-web/index.html|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 [[http://hplipopensource.com/hplip-web/supported_devices/index.html|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 [[project:inq:start|Inq]] ===== Inq ===== [[project:inq:start|Inq]], un front-end grafico per [[http://libinklevel.sourceforge.net/|libinklevel]], permette agli utenti Linux di monitorare il livello di inchiostro di [[http://libinklevel.sourceforge.net/index.html#supported|numerose stampanti]] Epson, Canon ed HP. ===== libinklevel ===== [[http://libinklevel.sourceforge.net/index.html|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 [[http://libinklevel.sourceforge.net/#supported|supportata]] o quantomeno che non compaia nell'elenco di quelle [[http://libinklevel.sourceforge.net/#unsupported|non supportate]]((in pratica, la libreria dovrebbe supportare la maggioranza delle stampanti Epson ed HP, a meno che non compaiano nella lista dei dispositivi non supportati)). 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) [[http://sourceforge.net/projects/libieee1284/|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'' * [[http://libinklevel.sourceforge.net/#download|Scaricare]] i sorgenti * Nel caso la tua distribuzione sia basata su RPM, puoi compilare un pacchetto RPM. Esegui come root((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)) 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: Fedora 10 non cerca le librerie nella directory ''/usr/local/lib''; secondo questo [[http://realduke.wordpress.com/2008/12/28/fedora-10-usrlocallib/|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 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 ===== [[http://ink.sourceforge.net/|ink]] è un front-end a riga di comando per libinklevel. ==== Installazione dai sorgenti ==== * [[http://ink.sourceforge.net/#download|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: ==== 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:// ~~ODT~~ {{tag>Linux libinklevel}} ~~DISCUSSION~~