sábado, agosto 19, 2006

[Howto] Soporte a escaners en GNU/Linux (Multifuncional Epson Stylus CX1500)

[Howto] Soporte a escaners en GNU/Linux (Multifuncional Epson Stylus CX1500)

Andaba como si nada navegando por google hasta que me tope con esto: http://stargeizer.blogspot.com/2006/01/epson-cx-1500-bajo-linux.html , enseguida me di la tarea de investigar si el soporte ya estaba mejor que antes, lo cuál habia un soporte clasificado como bueno y no completo, pero que funciona a las mil maravillas :D

Bueno voy a tratar de orientar a los usuarios a poder dar soporte a sus escanners así como yo lo he realizado con la multifuncional Epson Stylus CX1500 (escaner, impresora y copiadora)..

La parte del soporte para la impresora la dejo a un lado ya que no es objetivo del tema, simplemente decir que esta soportada por el paquete guteprint..


http://www.linuxprinting.org/show_printer.cgi?recnum=Epson-Stylus_CX1500

Para dar soporte a la mayoria de escaners necesitamos sane (http://www.sane-project.org/) que es una API.

Como sabes si mi escaner es soportado?

Dirígete a: http://www.sane-project.org/sane-mfgs.html
También esta la versión cvs http://www.sane-project.org/lists/sane-mfgs-cvs.html

Antes de instalar Sane

Si una vez que aseguramos que el dispositivo esta soportado, vamos a verifícar si el escaner es detectado por el kernel. En mi caso es un dispositivo conectdo por USB y el kernel no lota como impresora (será por es impresora también).

Para resumir, si tu impresora se conecta para USB tienes que tener el soporte en el Kernel, al igual forma con SCSI..

Para esto disponemos de varias herramientas como veremos en seguida:


UnderHouse # cat /proc/bus/usb/devices
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: [b]Vendor=04b8 ProdID=080c[/b] Rev= 1.00
S: Manufacturer=EPSON
S: Product=USB MFP
S: SerialNumber=N05060409192322050
C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=07(print) Sub=01 Prot=02 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

UnderHouse # lshal | less
udi = '/org/freedesktop/Hal/devices/usb_device_4b8_80c_N050604
09192322050_if1_printer_noserial'
info.udi = '/org/freedesktop/Hal/devices/usb_device_4b8_80c_N05060409192
322050_if1_printer_noserial' (string)
printer.description = 'EPSON Stylus CX1500' (string)
printer.product = 'Stylus CX1500' (string)
printer.vendor = 'EPSON' (string)
info.vendor = 'EPSON' (string)
linux.device_file = '/dev/usb/lp0' (string)
linux.subsystem = 'usb' (string)
linux.hotplug_type = 2 (0x2) (int)
printer.physical_device = '/org/freedesktop/Hal/devices/usb_device_4b8_80c_N05060409192322050_if1' (string)
printer.device = '/dev/usb/lp0' (string)
info.product = 'Stylus CX1500' (string)
info.capabilities = {'printer'} (string list)
info.category = 'printer' (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_4b8_80c_N05060409192322050_if1' (string) linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2:1.1' (string)
linux.sysfs_path = '/sys/class/usb/lp0' (string)



UnderHouse ~ # lsusb
Bus 004 Device 001: ID 0000:0000
Bus 001 Device 002: ID 04b8:080c Seiko Epson Corp.
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Si se fijan en lo de arriba ahora ya sabemos con exactitud el nombre del disposituvo y la ruta: /dev/usb/lp0 , además los códigos que identifican al proveedor y el ID del producto..

Instalación de Sane

Primero hay que darnos cuenta que sane maneja dos tipos de paquetes principalmente, uno es el API para los dispositivos llamado sane-backendsy otro es un par de utilerías para el usuario llamado sane-frontends.

Sane-frontends - Algunas de las herramientas que nos proporciona es:

xcam Un GUI para escanear desarrolado en GTK+ me parece.

sane-find-scanner Como su nombre lo dice, es para ver si detecta el escaner, pero como ya vimos que si está soportado no lo considero muy importante. Un ejemplo:


UnderHouse # sane-find-scanner

# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (UNKNOWN vendor and product) at device /dev/usbscanner
found USB scanner (vendor=0x0ac8 [V Micro. Corp.], product=0x0302 [PC Camera]) at libusb:001:003
found USB scanner (vendor=0x04b8 [EPSON], product=0x080c [USB MFP]) at libusb:001:002
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
# `UNKNOWN vendor and product' means that there seems to be a scanner at this
# device file but the vendor and product ids couldn't be identified.
# Currently identification only works with Linux versions >= 2.4.8. You may
# need to configure your backend manually, see the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.


Más información: man sane-find-scanner

scanadf Esta es una que me ha gustado xD, no es necesario ajustar absolutamente nada, solo la ejecutas y te escanea la imagen y la coloca en tu home de tu usuario (Asi de simple, asi de sencillo :P)

Sobre sane-frontends: http://www.sane-project.org/sane-frontends.html


Instalando bajo las fuentes: Baja el paquete en el formato que más te convenga de aquí http://www.sane-project.org/source.html

La instalación de fuentes es normalmente como siempre..

Si tu dispositivo tiene soporte en la versión en desarrollo, tienes las instrucciones para CVS: http://www.sane-project.org/cvs.html

Instalando en gentoo:


# echo "media-gfx/sane-backends ~x86" >> /etc/portage/package.keywords

# echo "media-gfx/sane-frontends ~x86" >> /etc/portage/package.keywords

# echo "media-gfx/sane-frontends gimp" >> /etc/portage/package.use

# emerge sane-backends sane-frontends

Configurando dispositivo scanner:

Kerel >= 2.6.3 + Hotplug

Debemos verificar que el scanner este en la lista de sane, debemos buscar con el código del ID del producto que obtuvimos al inicio


UnderHouse ~ # grep 080c /etc/hotplug/usb/libsane.usermap
libusbscanner 0x0003 0x04b8 0x080c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000



Ahora nos dirigimos a /etc/sane.d/ donde buscaremos el fabricante de nuestro escaner y es el que contendra la configuración del dispositivo

# epson.conf
#
# here are some examples for how to configure the EPSON backend
#
# SCSI scanner:
scsi EPSON
# for the GT-6500:
scsi "EPSON SC"
#
# Parallel port scanner:
#pio 0x278
#pio 0x378
#pio 0x3BC
#
# USB scanner:
# There are two different methods of configuring a USB scanner: libusb and the kernel module
# For any system with libusb support (which is pretty much any recent Linux distribution) the
# following line is sufficient. This however assumes that the connected scanner
(or to be more
# accurate, it's device ID) is known to the backend.

## Especificamos el id del producto y del dispositivo

usb 04b8 080c

# For libusb support for unknown scanners use the following command
# usb
# e.g.:
# usb 0x4b8 0x110
# And for the scanner module, use the following configuration:
usb /dev/usbscanner0
usb /dev/usb/scanner0


Ya solo falta agregar nuestro usuario al grupo scanner


UnderHouse ~ # gpasswd -a soullost scanner
Añadiendo al usuario soullost al grupo scanner


En gentoo hay que modificar el archivo /etc/hotplug/usb/libusbscanner, quedando de esta manera:

#!/bin/sh

# This file is part of sane-backends.
#
# This script changes the permissions and ownership of a USB device under
# /proc/bus/usb to grant access to this device to users in the scanner group.
#
# Ownership is set to root:scanner, permissions are set to 0660.
#
# Arguments :
# -----------
# ACTION=[add|remove]
# DEVICE=/proc/bus/usb/BBB/DDD
# TYPE=usb


if [ -z "$DEVICE" ] ; then
IF=$(echo $DEVPATH | sed 's:\(bus/usb/devices/\)\(.*\)-\(.*\):\2:')
DEV=$(echo $DEVPATH | sed 's:\(bus/usb/devices/\)\(.*\)-\(.*\):\3:')
DEV=$(expr $DEV + 1)
DEVICE=$(printf '/proc/bus/usb/%.03d/%.03d' $IF $DEV)
fi

if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
chown root:scanner "$DEVICE"
chmod 0660 "$DEVICE"
fi


# That's an insecure but simple alternative
# Everyone has access to the scanner

# if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
# chmod 0666 "$DEVICE"
# fi


Si tienes el demonio hotplug iniciado, habrá que reiniciarlo

service hotplug restart
/etc/init.d/hotplug restart

Y listo! ya puedes verificar con las herramientas de sane-forntends que todo este funcionando como debe de ser..

Más programas para escanear

- Xsane Este GUI de sane es lo mejor que hay, es bastante configurable y además permite la edición de las imagenes..


UnderHouse ~ # eix xsane
* media-gfx/xsane
Available versions: 0.991
Installed: 0.991
Homepage: http://www.xsane.org/
Description: graphical scanning frontend

Free Image Hosting at www.ImageShack.us

Free Image Hosting at www.ImageShack.us

- Xcam ( sane-frontends) No me gusto tanto como xsane, además al escanear, la aplicación se deforma por que la imagen es demasiado grande :lol:

Free Image Hosting at www.ImageShack.us

- Integración en Gimp

Free Image Hosting at www.ImageShack.us

- Integración en OpenOffice

Free Image Hosting at www.ImageShack.us

Mucha más información en:

SANE - Frontends (Applications) - http://www.sane-project.org/sane-frontends.html
The Scanner HOWTO - http://tldp.org/HOWTO/Scanner-HOWTO/index.html

Saludos!!

sáb 19 ago 2006 11:25:10 MDT

1 comentario:

hardvin cadavid dijo...

Me parece muy bacano que usted jorge siga con php; aun mejor combinado con java.

tengo una duda: como hizo usted para colocar el flash que hay en la parte inferior de la pagina.

Me puedes enviar el ejemplo a mi correo electronico

hardvin@gmail.com

XD

Saludos JORGE

ATT: hardvin

P.D: que teso: no sabía que jugabas soccer
XD