====== HP Color LaserJet CM1312nfi MFP ======
Come funziona questa laser a colori multifunzione con **GNU/Linux**? Io l'ho provata con una **Debian Squeeze**.
Anzitutto alcuni dati relativi alla velocità di stampa: dopo l'accensione occorre **circa un minuto** prima che la stampante sia pronta, nella stampa di dieci copie di un documento a colori (una pagina PDF di 723k) la stampante ha impiegato circa **45 secondi per pagina**.
===== Stampante =====
Pacchetti Debian Squeeze installati
* **hplip**
* **hplip-gui**
* **hplip-cups**
Dalla pagina di amministrazione web di CUPS: aggiungi stampante. La stampante viene rilevata automaticamente sulla rete locale, può essere usata tramite tre diversi protocolli:
* **''%%dnssd://HP%20Color%20LaserJet%20CM1312nfi%20MFP%20(AB5810)._pdl-datastream._tcp.local/%%''**
* **''%%dnssd://HP%20Color%20LaserJet%20CM1312nfi%20MFP%20(AB5810)._printer._tcp.local/%%''**
* **''%%socket://192.168.3.3%%''**
**''dnssd''** è un backend di comunicazione basato sul [[http://www.dns-sd.org/|DNS Service Discovery]], **''socket''** invece è una connessione TCP/IP - in genere sulla porta 9100 - tipica delle stampanti HP. Non ci dovrebbero essere differenze funzionali tra questi backend di cumunicazione, neppure con lo **''hp:/''** che, sebbene non venga rilevato in automatico, è specfico di HP e viene preferito da ''hp-setup'' (vedi avanti). Il comando **''hp-check''** segnala come anomalia l'utilizzo di un backend diverso da ''hp:/''.
I vari backend sono installati in **''/usr/lib/cups/backend/''** e sono forniti dai pacchetti **cups** e **hplip**.
Tra i modelli di stampanti disponibili uno di questi dovrebbe andare bene:
* HP Color LaserJet cm1312 MFP hpijs pcl3, 3.10.6
* HP Color LaserJet cm1312 MFP pcl3, hpcups 3.10.6
* HP Color LaserJet CM1312 MFP Series Postscript
* HP Color LaserJet cm1312 MFPnfi pcl3, hpcups 3.10.6
* **HP Color LaserJet cm1312nfi MFP hpijs pcl3, 3.18.12 (color, 2-sided printing)**
Si è preferito l'ultimo che è quello scelto dalla procedura automatica ''hp-setup''.
===== Scansione da pannello =====
È possibile effettuare la **scansione operando sul pannello della stampante** salvando l'immagine su una **memory card** inserita nella stessa. La memory card è condivisa in rete locale tramite protocollo CIFS (Samba/Windows), quindi dovrebbe essere possibile aprire la scansione direttamente dal computer.
In realtà con Samba c'è un problema che si manifesta con tutti i client: ''smbclient'', ''Konqueror'', ''smbnetfs'', ecc. Questo il messaggio di errore con smbclient:
smbclient //192.168.3.3/memory_card -U guest%guest
Domain=[WORKGROUP] OS=[threadx] Server=[NQ 4.32]
smb: \> SMBecho failed. Maybe server has closed the connection
In realtà la connessione avviene, infatti tramite l'opzione **''-c''** è possibile listare il contenuto della memory card e scaricare un file. Certo, comodo un accidente!
smbclient //192.168.3.3/memory_card -U guest%guest -c 'cd HPCM1312; dir; get HP0005.jpg'
Domain=[WORKGROUP] OS=[threadx] Server=[NQ 4.32]
. D 0 Fri Nov 12 09:08:48 2010
.. D 0 Fri Nov 12 09:08:48 2010
HP0001.jpg A 782923 Fri Nov 12 11:22:34 2010
HP0002.jpg A 788798 Fri Nov 12 11:25:32 2010
HP0003.jpg A 800136 Fri Nov 12 15:47:00 2010
HP0004.jpg A 783165 Fri Nov 12 15:48:34 2010
HP0005.jpg A 782811 Fri Nov 12 15:49:08 2010
31232 blocks of size 512. 15744 blocks available
getting file \HPCM1312\HP0005.jpg of size 782811 as HP0005.jpg (615.5 KiloBytes/sec)
Con la scansione da pannello della stampante si ha un controllo molto limitato dei parametri di acquisizione, ad esempio la risoluzione massima impostabile è di 300 dpi. La velocità della scansione è buona: un'intera pagina A4 in circa 15 secondi, ma la qualità lascia molto a desiderare.
===== Scansione via rete (richiede software non libero) =====
È possibile effettuare la **scansione da computer via rete** utilizzando il programma **''sane''**, purtroppo in questo caso è necessario installare un **plugin software non libero**.
I pacchetti Debian Jessie da installare sono questi (**software libero**):
* **hplip**
* **sane**
* **xsane**
* **libsane-hpaio**
L'utente non privilegiato deve appartenere ai gruppi **''scanner''** e **''lp''** per poter utilizzare lo scanner.
Con il cmando **''hp-makeuri''** (dal pacchetto **hplip**) è possibile scoprire gli identificativi della multifunzione:
hp-makeuri 192.168.3.3
CUPS URI: hp:/net/HP_Color_LaserJet_CM1312nfi_MFP?ip=192.168.3.3
SANE URI: hpaio:/net/HP_Color_LaserJet_CM1312nfi_MFP?ip=192.168.3.3
HP Fax URI: hpfax:/net/HP_Color_LaserJet_CM1312nfi_MFP?ip=192.168.3.3
Per utilizzare il **backend hpaio** di ''sane'' si lancia il comando:
xsane 'hpaio:/net/HP_Color_LaserJet_CM1312nfi_MFP?ip=192.168.3.3'
Si ottiene l'errore **Error during device I/O**, in ''/var/log/syslog'' si scopre che manca una libreria non libera:
xsane: scan/sane/soapht.c 86: unable to load restricted library
/usr/share/hplip/scan/plugins/bb_soapht.so:
cannot open shared object file: No such file or directory
==== Installazione del plugin non libero ====
Si deve quindi procedere all'installazione del **software non libero**; è possibile procedere in **tre modi diversi**.
=== Modo 1: esecuzione del tool hp-setup ===
Il comando **''hp-setup''** (fornito dal pacchetto **hplip**) provvede a scaricare da internet il software, lo installa e lo configura per supportare stampante, scanner, fax, ecc. La cosa brutta è che lo fa **al di fuori del sistema gestione pacchetti Debian**. Vedi più avanti una descrizione dettagliata.
=== Modo 2: esecuzione diretta dello script hplip-X.YY.Z-plugin.run ===
Per avere un maggior controllo si può installare il solo archivio **hplip-X.YY.Z-plugin.run** scaricandolo dal repository di [[http://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/|OpenPrinting]]. Si deve scaricare l'esatta versione corrispondente al pacchetto hplip installato (per Debian Jessie è hplip-3.14.6-plugin.run). Si deve eseguire **come root** e con accesso al **display grafico** (display che serve solo per mostrare la licenza da accettare):
sh ./hplip-3.14.6-plugin.run
Vengono installate diversi file in alcune directory:
* **''/usr/share/hplip/plugin.spec''**
* **''/usr/share/hplip/scan/plugins/''** (''bb_marvell.so'', ''bb_soapht.so'', ''bb_soap.so'')
* **''/usr/share/hplip/prnt/plugins/''** (''hbpl1.so'', ''hbpl1-x86_32.so'',
=== Modo 3: estrazione e installazione manuale dei file ===
In questo modo si controlla esattamente quali file installare a dove, ad esempio è preferibile usare la gerarchia **''/usr/local/share/''** invece di ''/usr/share/''.
Nell'archivio hplip-X.YY.Z-plugin.run vengono fornite **solo le architetture i386 e amd64** (file x86_32.so e x86_64.so rispettivamente), è necessario copiare solo quelle relative al proprio sistema, in questo esempio **x86_64**):
# Make directories for plugin binaries.
mkdir -p /usr/local/share/hplip/scan/plugins
ln -s /usr/local/share/hplip/scan/plugins /usr/share/hplip/scan/
mkdir -p /usr/local/share/hplip/prnt/plugins
ln -s /usr/local/share/hplip/prnt/plugins /usr/share/hplip/prnt/
# Download and unpack archive.
wget http://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/hplip-3.14.6-plugin.run
chmod 755 hplip-3.14.6-plugin.run
mkdir hplip
cd hplip
../hplip-3.14.6-plugin.run --tar xvf
# Copy binaries.
cp bb_marvell-x86_64.so bb_soap-x86_64.so bb_soapht-x86_64.so /usr/local/share/hplip/scan/plugins/
ln -s bb_marvell-x86_64.so /usr/local/share/hplip/scan/plugins/bb_marvell.so
ln -s bb_soap-x86_64.so /usr/local/share/hplip/scan/plugins/bb_soap.so
ln -s bb_soapht-x86_64.so /usr/local/share/hplip/scan/plugins/bb_soapht.so
cp hbpl1-x86_64.so /usr/local/share/hplip/prnt/plugins/
ln -s hbpl1-x86_64.so /usr/local/share/hplip/prnt/plugins/hbpl1.so
# Copy additional files.
cp plugin.spec /usr/local/share/hplip/
ln -s /usr/local/share/hplip/plugin.spec /usr/share/hplip/plugin.spec
# Create status file.
cat << EOF > /var/lib/hp/hplip.state
[plugin]
installed = 1
eula = 1
version = 3.14.6
EOF
chmod 644 /var/lib/hp/hplip.state
Per la funzione scan via rete dovrebbe essere sufficiente la sola libreria **bb_soapht.so**.
Finalmente si riesce ad eseguire xsane e fare una acquisizione: a **600 dpi** occorre **poco più di un minuto**. Anche in questo caso la qualità non impressiona, soprattutto nelle zone scure si perdono molte delle sfumature.
Il programma ''xsane'' è in grado di rilevare automaticamente lo scanner hpaio - senza specificarlo sulla riga di comando - solo se questo è installato in CUPS (''/etc/cups/printers.conf'') nel modo in cui viene configurato da ''hp-setup'' (vedi avanti).
===== hp-setup =====
Con la procedura **''hp-setup''** (fornita dal pacchetto **hplip**) è possibile installare e configurare il software HPLIP per utilizzare la stampante, lo scanner ed il fax tramite i tradizionali sistemi **CUPS** e **sane** di GNU/Linux. Il tutto funziona **al di fuori del meccanismo di controllo dei pacchetti Debian**, vengono scaricate da internet e installate delle librerie di **software non libero** che servono soprattutto per la funzione scanner e fax.
La procedura modifica alcuni file di configurazione del sistema quindi deve essere eseguita con i privilegi di root.
Ecco un elenco delle directory che vengono create:
/usr/share/hplip/prnt/plugins/
/usr/share/hplip/data/firmware/
/usr/share/hplip/scan/plugins/
/usr/share/hplip/fax/plugins/
/usr/share/hplip/ui4/
/usr/share/hplip/data/plugins
Vengono creati dei file PPD in **''/etc/cups/ppd/''** (uno per la stampante ed uno per il fax), viene aggiunta una stampante al file **''/etc/cups/printers.conf''**, vengono aggiunte delle regole udev in **''/etc/udev/rules.d/''** (di nome ''86-hpmud-hp_laserjet_*'').
Questi sono i parametri impostati da ''hp-setup'' in CUPS:
* Protocollo per la stampante **''hp:/net/HP_Color_LaserJet_CM1312nfi_MFP?zc=NPIAB5810''**
* Protocollo per il fax: **''hpfax:/net/HP_Color_LaserJet_CM1312nfi_MFP?zc=NPIAB5810''**
* Driver per la stampante: **''HP Color LaserJet cm1312nfi MFP pcl3, hpcups 3.10.6''**
FIXME Al termine della procedura (lanciata senza interfaccia grafica con **''hp-setup --interactive''**) viene eseguito un test che produce il seguente messaggio di errore:
/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:127:
RuntimeWarning: PyOS_InputHook is not available for interactive use of PyGTK
Per verificare se la stampante multifunzione è configurata correttamente si può eseguire il comando:
hp-check -r
===== Aggiornamento firmware =====
L'aggiornamento del firmware si può fare solo da Windows, infatti il pacchetto è distribuito solo come eseguibile compilato.
È stato necessario disporre di una macchina Windows XP con Service Pack 3 e driver di stampa **HP Universal Printing PCL6** installato (**''upd-pcl6-x32-5.4.0.11744.exe''**). Il driver di stampa si configura indicando l'indirizzo IP della stampante.
Dopo aver lanciato l'eseguibile **''CM1310_CM2320_MFP_Series_FW_Update-20120104.exe''**, la stampante viene individuata tramite il driver di stampa e il programma provvede all'upload del nuovo firmware.
===== Tenuta in esercizio =====
^ Colore ^ Installazione ^ Esaurito ^ Pagine stampate ^ Progressivo ^
| Nero (prima fornitura) | 2010-11-11 | 2011-12-27 | 446 | 446 |
| Ciano (prima fornitura) | 2010-11-11 | | | |
| Magenta (prima fornitura) | 2010-11-11 | | | |
| Giallo (prima fornitura) | 2010-11-11 | | | |
| Ciano | 2012-06-29 | 2016-11-15 | 438 | 2994 |
| Magenta | 2012-06-29 | 2016-11-15 | 438 | 2994 |
| Giallo | 2013-05-05 | | | |
| Nero | 2015-05-21 | | | |
| Ciano | 2016-11-15 | | | |
| Magenta | 2016-11-15 | | | |