Scanner, Slack, libusb y un poco de udev

Me regalan una impresora multifunción hp psc 1350, (impresora y scanner) y ete aquí, que cuando lo conecté, /var/log/messages me mostró lo siguiente:

Oct 27 22:18:40 bita kernel: usb 3-2: new full speed USB device using ohci_hcd and address 7 Oct 27 22:18:40 bita kernel: usb 3-2: configuration #1 chosen

"configuration #1 chosen from 1 choice" me sonó de otras veces y si, es precioso que te nombre los dispositivos a tu gusto.... pero en udev hay reglas predefinidas, y hay veces que no se sabe "qué ha hecho" udev con nuestros dispositivos.

Luego de iniciar el daemon de sane (saned) indiqué que me encontrara los scanners (sane-find-scanner) y se me informó que no se había detectado nada.

Siendo linux un sistema operativo que es mas restrictivo que permisivo en su estandar, y siendo slackware uno de los linux mas estándares, pensé en falta de privilegios para acceder al scanner y efectivamente, como root detectó el scanner:

# sane-find-scanner found USB scanner (vendor=0x03f0 [hp], product=0x3b11 [psc 1300 series]) at libusb:003:007

y xsane fue capaz de escanear perfectamente...
Por ende recordé cuando para mi primer scanner, se me indicó: "at /dev/sg0" y dije, bueno, lo mismo, permisos para el dev y ya está!

pero, como se muestra, ésta vez me informó: "at libusb:003:007", y ahi se quedó mi experiencia aprendida....

busqué un poco en las reglas de udev y encontre un archivo (80-libsane.rules) que debe contener alrededor de 600 reglas de identificación, todas con el mismo patrón:

"ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes""

Ok, un idVendor XXXX y un idProduct YYYY, otorgan permisos (0664) de lectura/escritura para root y para el grupo "scanner" y lectura para todos los demás (los scanners necesitan acceso de escritura para poder funcionar)
Habiendo alrededor de 600 dispositivos, en un principio dudé que no estuviese ésta impresora, asique verifique el id de fabricante y producto (pego solo una parte de la salida):

# lsusb -v
Bus 003 Device 007: ID 03f0:3b11 Hewlett-Packard PSC 1300 series
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x03f0 Hewlett-Packard idProduct 0x3b11 PSC 1300 series
bcdDevice 1.00
iManufacturer 1 hp
iProduct 2 psc 1300 series
iSerial 3 HU3AFBQ30M9F

Ok, ahi tengo los datos, ahora al buscarlos en el archivo de reglas udev por vendorId:

# grep 03f0 -i /etc/udev/rules.d/80-libsane.rules | wc -l
45

me dice que tiene 45 reglas para dispositivos de ese fabricante, al buscar por Productid:

# grep 3b11 -i /etc/udev/rules.d/80-libsane.rules | wc -l
0

No encontró ninguno. Por lo tanto, agregué una regla mas:

ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="3b11", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"

A mi usuario lo agregué al grupo "scanner"

# usermod -G scanner bita

y como usuario, al preguntar por scanners, tuve la grata respuesta:
$ sane-find-scanner
found USB scanner (vendor=0x03f0 [hp], product=0x3b11 [psc 1300 series]) at libusb:003:007

con xsane pude escanear algo, en otro post explico como escanear desde gimp.

Salu2!