Table of Contents

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

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 è un backend di comunicazione basato sul 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:

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):

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 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:

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:

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