7.6. Escáneres de imágenes

Escrito por Marc Fonvieille.

7.6.1. Introducción

El acceso a escáneres de imágenes en FreeBSD funciona gracias a la API SANE (siglas de «Scanner Access Now Easy», «el acceso a escáneres ahora es fácil»), disponible en la Colección de Ports de FreeBSD. SANE utiliza también ciertos controladores de FreeBSD para acceder al hardware del escáner.

FreeBSD puede utilizar tanto escáneres SCSI como USB. Asegúrese de que el suyo funciona con SANE antes de intentar ningún tipo de configuración. SANE tiene una lista de dispositivos soportados donde encontrará información actualizada sobre hasta dónde funciona el escáner y su estatus. La página de manual de uscanner(4) incluye una listas de escáneres USB que funcionan con SANE.

7.6.2. Configuración del kernel

Como ya se ha dicho tanto los interfaces USB como las SCSI funcionan. Según sea el interfaz de su escáner necesitará un tipo diferente de controlador:

7.6.2.1. Interfaz USB

El kernel GENERIC incluye por omisión los controladores de dispositivo necesarios para poder usar escáneres USB. Si va a personalizar su kernel asegúrese de que esto está en el fichero de configuración del mismo:

device usb
device uhci
device ohci
device uscanner

Según cual sea el chipset de su placa base tendrá que usar device uhci o device ohci, aunque si tiene ambos no tendrá problemas por eso.

Si por cualquier motivo no quiere recompilar su kernel y su kernel no es el GENERIC puede cargar el módulo controlador de dispositivo uscanner(4) con kldload(8):

# kldload uscanner

Si quiere cargar este módulo cada vez que arranque el sistema debe añadir la siguiente línea a /boot/loader.conf:

uscanner_load="YES"

Tras reiniciar con el kernel correcto (o una vez que el módulo esté cargado) conecte su escáner USB. Debe aparecer en el «buffer» de mensajes del sistema (dmesg(8)) un mensaje una línea como la siguiente:

uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

La línea del ejemplo muestra que nuestro escáner está utilizando el nodo de dispositivo/dev/uscanner0.

7.6.2.2. Interfaz SCSI

Si su escáner tiene un interfaz SCSI es importante saber qué controladora SCSI incorpora. El chipset SCSI que tenga influirá en la configuración del kernel que tenga que personalizar. El kernel GENERIC tiene controladores de dispositivo para las controladoras SCSI más comunes. Consulte el fichero NOTES y añada la línea correcta al fichero de configuración de su kernel. Tendrá que añadir también la siguiente línea:

device scbus
device pass

Una vez compilado e instalado el kernel correctamente tiene ya que ver sus nuevos dispositivos en el «buffer» de mensajes del sistema:

pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers

Si su escáner estaba apagado durante el arranque puede forzar manualmente la detección si ejecuta una búsqueda de buses SCSI con camcontrol(8):

# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful

El escáner aparecerá en la lista de dispositivos SCSI:

# camcontrol devlist
<IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

Tiene todos los detalles sobre los dispositivos SCSI en las páginas de manual de scsi(4) y camcontrol(8).

7.6.3. Configuración de SANE

El sistema SANE se divide en dos partes: los «backends» (graphics/sane-backends) y los «frontends» (graphics/sane-frontends). Los «backends» facilitan el acceso al escáner propiamente dicho. La lista de dispositivos que funcionan con SANE le dirá qué «backend» hará funcionar su escáner de imágenes. No hay más remedio que identificar correctamente el «backend» de su escáner para poder usarlo. Los «frontends» ofrecen una interfaz gráfica para escanear (xscanimage).

Lo primero que hay que hacer es instalar el port o package de graphics/sane-backends. Después ejecute la orden sane-find-scanner para comprobar el funcionamiento de la detección de escáneres del sistema SANE:

# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

En la salida de la orden anterior se le mostrará el tipo de interfaz del escáner y el nodo de dispositivo a través del cual el sistema accede a él. Es posible que no aparezcan la marca y el modelo, pero eso no tiene importancia.

Nota: Algunos escáneres USB necesitan que les instale un «firmware»; esto se explica en la página de manual del «backend» correspondiente. También debe leer las páginas de manual sane-find-scanner(1) y sane(7).

Ahora hay que comprobar que el «frontend» de escaneo puede identificar el escáner. Por omisión los «backends» de SANE incorporan una herramienta de línea de órdenes llamada scanimage(1), que le mostrará una lista de dispositivos e incluso una captura de imagen desde la shell. La opción -L muestra una lista de escáners:

# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

Si el software no lanza ningún mensaje, o si el mensaje indica que no se han encontrado escáneres significa que scanimage(1) no puede identificar su escáner. Si este es el caso tendrá que editar el fichero de configuración del «backend»y definir en él el escáner que quiera utilizar. Encontrará todos los ficheros de configuración de los «backends» en el directorio /usr/local/etc/sane.d/. Este problema con la identificación del hardware es relativamente frecuente con ciertos modelos de escáneres USB.

Por ejemplo, con el escáner que hemos usado en la Sección 7.6.2.1 la orden sane-find-scanner nos da la siguiente información:

# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

El escáner ha sido detectado sin problemas, utiliza el interfaz USB y está conectado al nodo de dispositivo /dev/uscanner0 . Ahora comprobaremos que podemos identificar correctamente el escáner:

# scanimage -L

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

No hemos podido identificar el escáner, así que hemos de editar el fichero /usr/local/etc/sane.d/epson.conf. Estamos usando el modelo de escáner EPSON Perfection® 1650, así que ya sabemos que el escáner utilizará el «backend» epson. Lea atentamente los comentarios que hay en los ficheros de configuración de los «backends». Lo que hay que hacer es muy sencillo: basta con comentar las líneas en las que aparecen interfaces que no sean el perfecto para su escáner. En nuestro caso comentaremos todas las líneas que comiencen por scsi puesto que nuestro escáner tiene interfaz USB. Después de esto hay que añadir una lína al final del fichero declarando el interfaz y el nodo de dispositivo que se van a usar. En el caso del ejemplo esto es lo que añadimos:

usb /dev/uscanner0

Por favor, lea los comentarios que encontrará en el fichero de configuración del «backend» y la pángina de manual de del «backend» si necesita más información sobre la sintaxis que debe usar. Hecho esto podemos verificar si ya podemos identificar el escáner:

# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

Hemos identificado nuestro escáner USB. Ni tiene importancia si la marca y modelo que hemos visto no coinciden con nuestro escáner. Lo único realmente importante es el campo `epson:/dev/uscanner0', que nos da el nombre correcto del «backend» y el nodo de dispositivo correcto.

Una vez que scanimage -L llega a ver al escáner hemos terminado con la configuración. El dispositivo está listo para escanear imángenes.

scanimage(1) permite ejecutar una captura de imágen desde la línea de órdenes, pero siempre es mejor utilizar un interfaz gráfico de usuario para estas tareas. SANE ofrece un interfaz gráfico simple pero eficiente: xscanimage (graphics/sane-frontends).

Otro «frontend» gráfico para escanear que se ha hecho muy popular es Xsane (graphics/xsane). Este «frontend» tiene características muy avanzadas como varios modos de escaneo (fotocopia, fax, etc.), corrección de color, escaneo de imágenes por lotes, etc. Ambas aplicaciones pueden utilizarse además como «plugins» de GIMP.

7.6.4. Dar acceso al escáner a otros usuarios

Todo lo que se ha mostrado en esta sección se ha ejecutado con privilegios de root. Lo normal es que haya otros usuarios que tengan que tener acceso al escáner. Un usuario que quiera usar el escáner tiene que tener acceso de lectura y escritura al nodo de dispositivo que usa el escáner. Por ejemplo, nuestro escáner USB utiliza el nodo de dispositivo /dev/uscanner0 propiedad del grupo operator. Al añadir al usuario joe al grupo operator éste podrá acceder al esc´ner:

# pw groupmod operator -m joe

Para más información sobre el uso de pw(8) lea su página de manual. Tendrá también que configurar correctamente los permisos de escritura (0660 o 0664) en el nodo de dispositivo /dev/uscanner0; por omisión los miembros del grupo operator sólo tienen acceso de lectura en este nodo de dispositivo. Añada las siguientes líneas al fichero lines to the /etc/devfs.rules:

[system=5]
add path uscanner0 mode 660

Ahora añada lo siguiente a /etc/rc.conf y reinicie la máquina:

devfs_system_ruleset="system"

Para más información sobre lo que acaba de leer consulte la página de manual de devfs(8).

Nota: Por seguridad debería pensarse dos veces el hecho mismo de añadir cualquier usuario a un grupo y muy especialmente al grupo operator.

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.