Photosmart c5280 all in one

Da LugMan TNG.

Il seguente Tip descrive come abilitare la stampante/scanner HP Photosmart c5280. La distro di riferimento è SLackWare 12.2, ma in linea di massima quanto descritto vale per qualsiasi altra distribuzione.

Ingredienti

Come noto HP supporta a pieno i suoi prodotti per Linux. Per abilitare a pieno il dispositivo occorre:

Il primo, HPLIP, va aggiornato in Slackware alla versione superiore alla 2.8.10 (presente di default nella distribuzione) per esempio con la versione indicate (2.8.12) sulla quale sono stati fatti i test.

Scarichiamo il sorgente (hplip-2.8.12.tar.gz) come da tradizione in /usr/local/src (attenzione che normalmente è accessibile in scrittura solo a root) e si procede alla compilazione:

$ tar xvfj hplip-2.8.12.tar.gz # comando da utente se si hanno i permessi di scrittura su /usr/local/src
$ cd hplip-2.8.12
# ./configure --prefix=/usr # si consiglia /usr se si vuole creare il pacchetto
# make
# make install

A questo punto è buona norma crearsi il pacchetto in modo da poterlo rimuovere agevolamente in caso di problemi o di futuri aggiornamenti. Io sono abituato a usare checkinstall in quanto molto semplice, ma non è obbligatorio.

 checkinstall "make install" 
il che genererà il pacchetto all'interno alla directory dei sorgenti. Se sieti paranoici installate ancora il pacchetto con un installpkg; ad ogni modo dovreste avere il file /var/log/packages/hplip-xxx. Se avete questo file (in SlackWare) potete anch cancellare il pacchetto creato .tgz appena creato, anche se è sconsigliato.

SlackWare 12.x ha gia abilitato negli script di boot l'abilitazione di HPLIP quindi non dovrete fare altro per far ripartire il servizio con:

/etc/rc.d/rc.hplip restart

A questo punto tutto dovrebbe funzionare, ma solo con i privilegi di root. Per testarlo ci si colleghi in root e lanciando il comando scanimage -L il sistema risponderà rilevando il dispositivo, mentre da utente non privilegiato vi risponderà:

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

Questo perchè udev non conosce questa stampante multifunzione. Tutto ciò che occorre fare è dire a udev come comportarsi quando questo device viene collegato. Per farlo occorre conoscere Product ID e Vendor ID del device. Per farlo si colleghi la stampante. Sul computer in esame, la lettura delle porte usb da, tra gli altri risultati, questo

# lsusb
...
Bus 001 Device 004: ID 03f0:5d11 Hewlett-Packard Photosmart C5200 series
...

dove 03f0 è il Vendor ID (ossia il numero che identifica l'HP), mentre 5d11 identifica il prodotto.

Nota: la stringa "Bus 001 Device 004" indica che è stato creato il device /dev/bus/usb/001/004 (in SlackWare 12) e un ls vi dovrebbe restituire
$ ls -l /dev/bus/usb/001/004
crw-r--r--   1 root root [...]
il che indica proprio che solo root può scrivere sul device.

Modifica di UDEV

Ora si ha tutto il necessario per modificare UDEV. Il file di configurazione in SlackWare 12 è /etc/udev/rules.d/80-libsane.rules. se il nome cambia poco importa; serve solo per tenere "ordinato" il sistema. Per prima cosa assicuratevi che il device 5d11 non esista. Grep non deve restituire nulla

$ grep 5d11  /etc/udev/rules.d/80-libsane.rules
$ echo $?
  1

Supponendo ora che il sistema abbia per esempio un gruppo "scanner" e che a tale gruppo faccia parte l'utente (o gli utenti) desiderati, la regola da inserire in udev è:

# Hewlett-Packard Photosmart C5200 series
ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="5d11", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"

Ora rilanciando udev (/etc/rc.d/rc.udev restart) dovrebbe bastare. MODE=664 farà in modo che il gruppo "scanner" erediti i permessi di scrittura e lettura. Lanciando il cmando scanimage -L ora dovrebbe dare risposta positiva anche all'utente.

Note

  • Il test è stato fatto con kernel 2.6.24.5-smp dato di default dalla SlackWare
  • E' fondamentale che il sistema abbia il supporto per le libusb
  • Avviando un front-end qualsiasi (Xsane, kooka, ecc) il programma potrebbe impiegare un po' a caricarsi a causa della fase di rilevamento dello scanner