SGI Techpubs Library

Linux  »  Man Pages
find in page



       This  manual page contains information on how to access scanners with a
       USB interface.


       This manual  page  describes  the  access  of  USB  scanners  over  the
       sanei_usb  interface.  Most  SANE USB backends use the sanei_usb inter-
       face, only sm3600 accesses the USB directly by libusb. Have a  look  at
       sane-sm3600  and  section  "LIBUSB ACCESS TIPS" of this manual page for
       that backend.

       Two methods for accessing USB devices are  used  by  sanei_usb:  direct
       access  using  the  kernel  scanner  driver  and  access  over  libusb.
       sanei_usb tries both methods, if  they  are  available.  Currently  USB
       access  is tested for Linux (kernel, libusb), FreeBSD (kernel, libsub),
       NetBSD (libusb), and OpenBSD (kernel,  libusb).  Libusb  access  should
       also work on Mac OS X (Darwin) and any other operating system supported
       by libusb but hasn’t been tested yet.  For  installation  issues,  also
       check the /usr/share/doc/sane-backends-1.0.9/README.platform files.

       Most  backends  will detect USB scanners automatically using "usb" con-
       figuration file lines. This method allows to identify scanners  by  the
       USB  vendor  and  product numbers.  The syntax for specifying a scanner
       this way is:

              usb VENDOR PRODUCT

       where VENDOR is the USB vendor id, and PRODUCT is the USB product id of
       the  scanner.  Both  ids are non-negative integer numbers in decimal or
       hexadecimal format. The correct values for these fields can be found by
       looking  into  the  syslog  (e.g., /var/log/messages) or under Linux by
       issuing the command "cat /proc/bus/usb/devices/".  This is  an  example
       of a config file line:

              usb 0x055f 0x0006

       would  have the effect that all USB devices in the system with a vendor
       id of 0x55f and a product id of 0x0006 would be probed  and  recognized
       by the backend. The same config line in decimal format looks like this:

              usb 1375 6

       If your scanner is not detected automatically, it may be  necessary  to
       edit  the  appropriate backend configuration file before using SANE for
       the first time.  For most systems, the configuration file  should  list
       the name of the USB device file that the scanner is connected to (e.g.,
       under Linux,  /dev/usb/scanner0  or  /dev/usbscanner0  is  such  a  USB
       device,  the  device  file  for  FreeBSD  is e.g.  /dev/uscanner0).  If
       libusb is used, the device  name  looks  like  the  following  example:

       Do  not  create  a  symlink from /dev/scanner to the USB device because
       this link is used by the SCSI backends. The scanner may be confused  if
       it receives SCSI commands.

       For a detailed description of each backend’s configuration file, please
       scanner. Also, it supports more platforms. However, the library must be
       available and installed on the system  and  setting  permissions  isn’t
       easy at least on Linux.

       Autodetecting  scanners  and using USB control messages with the kernel
       access method only works with recent (>=v2.4.12) Linux kernels. If  you
       need  one  of  these  two  features on a different platform, use libusb


       Ensure that the access permissions for the USB device are set appropri-
       ately.   We recommend to add a group "scanner" to /etc/group which con-
       tains all users that should have access to the scanner.  The permission
       of  the device should then be set to allow group read and write access.
       For example, if the scanner is at USB  device  /dev/usb/scanner0,  then
       the following two commands would set the permission correctly:

              $ chgrp scanner /dev/usb/scanner0
              $ chmod 660 /dev/usb/scanner0

       If your scanner isn’t detected automatically by your operating system’s
       scanner driver, you need to tell the kernel the vendor and product  ids
       of  your scanner. For Linux, this can be done with modprobe parameters:
       First, remove the scanner module (rmmod scanner), then load  it  again:
       modprobe scanner vendor=0x0001 product=0x0002. Use the appropriate ven-
       dor and product ids (e.g. from syslog  or  cat  /proc/bus/usb/devices).
       For  OpenBSD  the  kernel  must  be  recompiled.  For  details  look at
       /usr/share/doc/sane-backends-1.0.9/README.openbsd.  Similar  approaches
       should be used for the other BSDs.

       Linux  kernel  messages  in  syslog like "kernel: scanner.c: open_scan-
       ner(1): Unable to access minor data" can be ignored. They are generated
       when SANE scans all available USB devices for scanners.


       Libusb  can  only access your scanner if it’s not claimed by the kernel
       scanner driver. If you want to use libusb,  unload  the  kernel  driver
       (e.g. rmmod scanner under Linux) or disable the driver when compiling a
       new kernel. For Linux, your kernel needs support for the USB filesystem
       (usbfs) and that filesystem must be mounted. That’s done automatically,
       if /etc/fstab contains a line like this:

              none /proc/bus/usb usbfs defaults  0  0

       The permissions for the device files used by libusb  must  be  adjusted
       for  user  access. Otherwise only root can use SANE devices. For Linux,
       the devices are located in /proc/bus/usb/. There are directories  named
       e.g.  "001"  (the  bus  name)  containing  files "001", "002" etc. (the
       device files). The right device files can be found out by running scan-
       image  -L  as  root. Setting permissions with "chmod" is not permanent,
       however. They will be resetted after reboot or replugging the  scanner.
       It’s  also  possible to mount the usbfs with the option "devmode=0666",
       e.g. by using the following line in /etc/fstab:

              none /proc/bus/usb usbfs defaults,devmode=0666  0  0


              If  the  library  was  compiled with debug support enabled, this
              environment variable controls the debug level for  the  USB  I/O
              subsystem.  E.g., a value of 128 requests all debug output to be
              printed.  Smaller levels reduce verbosity. Values greater than 4
              enable libusb debugging (if available).


       sane(7), sane-find-scanner(1), sane-"backendname"(5), sane-scsi(5)


       Henning Meier-Geinitz. Some parts were copied from the sane-scsi manual

                                  15 Sep 2002                     sane-scsi(5)

Output converted with man2html

home/search | what's new | help