Photosmart c5280 all in one
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:
- HPLIP 2.8.12
- Sane per lo scanner
- front-end per Sane (facoltativo)
- CheckInstall o altro per generare il pacchetto (facoltativo)
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