From 65a2018feea3515a958f6eb6f85e73493566c44b Mon Sep 17 00:00:00 2001 From: Marc Fonvieille Date: Thu, 5 Aug 2004 10:55:12 +0000 Subject: Add a section about Images Scanners. This section covers configuration of both SCSI and USB scanners. Tests have been done on 4 different scanners. A great thanks to Ken Tom for his scanner and his time! --- .../books/handbook/multimedia/chapter.sgml | 302 +++++++++++++++++++++ 1 file changed, 302 insertions(+) diff --git a/en_US.ISO8859-1/books/handbook/multimedia/chapter.sgml b/en_US.ISO8859-1/books/handbook/multimedia/chapter.sgml index fe90651df1..dad545bb6f 100644 --- a/en_US.ISO8859-1/books/handbook/multimedia/chapter.sgml +++ b/en_US.ISO8859-1/books/handbook/multimedia/chapter.sgml @@ -1630,6 +1630,308 @@ bktr0: Pinnacle/Miro TV, Philips SECAM tuner. archives of the &a.multimedia.name; mailing list. + + + + + + Marc + Fonvieille + Written by + + + + + + Image Scanners + + image scanners + + + + Introduction + + &os;, like any modern operating system, allows the use of + image scanners. Standardized access to scanners is provided + by the SANE (Scanner Access Now + Easy) API available through the &os; Ports + Collection. SANE will also use + some &os; devices drivers to access to the scanner + hardware. + + &os; supports both SCSI and USB scanners. Be sure your + scanner is supported by SANE prior + to performing any configuration. + SANE has a supported + devices list that can provide you with information + about the support for a scanner and its status. The + &man.uscanner.4; manual page also provides a list of supported + USB scanners. + + + + Kernel Configuration + + As mentionned above both SCSI and USB interfaces are + supported. According to your scanner interface, different + device drivers are required. + + + USB Interface + + The GENERIC kernel by default + includes the device drivers needed to support USB scanners. + Should you decide to use a custom kernel, be sure that the + following lines are present in your kernel configuration + file: + + device usb +device uhci +device ohci +device uscanner + + Depending upon the USB chipset on your motherboard, you + only need one of both device uhci and + device ohci, however having both in the + kernel configuration file is harmless. + + If you do not want to rebuild your kernel and your + kernel is not the GENERIC one, you can + directly load the &man.uscanner.4; device driver module with + the &man.kldload.8; command: + + &prompt.root; kldload uscanner + + To load this module at each system startup, add the + following line to + /boot/loader.conf: + + uscanner_load="YES" + + After rebooting with the correct kernel, or after + loading the required module, plug in your USB scanner. The + scanner should appear in your system message buffer + (&man.dmesg.8;) as something like: + + uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2 + + This shows that our scanner is using the + /dev/uscanner0 device node. + + + On &os; 4.X, the USB daemon (&man.usbd.8;) must + be running to be able to see some USB devices. To enable + this, add usbd_enable="YES" to your + /etc/rc.conf file and reboot the + machine. + + + + + SCSI Interface + + If your scanner comes with a SCSI interface, it is + important to know which SCSI controller board you will use. + According to the SCSI chipset used, you will have to tune + your kernel configuration file. The + GENERIC kernel supports the most common + SCSI controllers. Be sure to read the + NOTES file (LINT + under &os; 4.X) and add the correct line to your kernel + configuration file. In addition to the SCSI adapter driver, + you need to have the following lines in your kernel + configuration file: + + device scbus +device pass + + Once your kernel has been properly compiled, you should + be able to see the devices in your system message buffer, + when booting: + + 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 + + If your scanner was not powered-on at system boot, it is + still possible to manually force the detection by performing + a SCSI bus scan with the &man.camcontrol.8; command: + + &prompt.root; 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 + + Then the scanner will appear in the SCSI devices + list: + + &prompt.root; 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) + + More details about SCSI devices, are available in the + &man.scsi.4; and &man.camcontrol.8; manual pages. + + + + + SANE Configuration + + The SANE system has been + splitted in two parts: the backends (graphics/sane-backends) and the + frontends (graphics/sane-frontends). The + backends part provides access to the scanner itself. The + SANE's supported + devices list specifies which backend will support your + image scanner. It is mandatory to determine the correct + backend for your scanner if you want to be able to use your + device. The frontends part provides a graphical scanning + interface (xscanimage). + + The first thing to do is installing the graphics/sane-backends port or + package. Then, use the sane-find-scanner + command to check the scanner detection by the + SANE system: + + &prompt.root; sane-find-scanner -q +found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3 + + The output will show the interface type of the scanner and + the device node used to attach the scanner to the system. The + vendor and the product model may not appear, it is not + important. + + + Some USB scanners require you to load a firmware, this + is explained in the backend manual page. You should also read + &man.sane-find-scanner.1; and &man.sane.7; manual + pages. + + + Now we have to check if the scanner will be identified by + a scanning frontend. By default, the + SANE backends come with a command + line tool called &man.scanimage.1;. This command allows you + to list the devices and to perform an image acquisition from + the command line. The option is used to + list the scanner device: + + &prompt.root; scanimage -L +device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner + + No output or a message saying that no scanners were + identified indicates that &man.scanimage.1; is unable to + identify the scanner. If this happens, you will need to edit + the backend configuration file and define the scanner device + used. The /usr/local/etc/sane.d/ directory + contains all backends configuration files. This + identification problem does appear with some USB + scanners. + + For example, with the USB scanner used in the , + sane-find-scanner gives us the following + information: + + &prompt.root; sane-find-scanner -q +found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0 + The scanner is correctly detected, it uses the USB + interface and is attached to the + /dev/uscanner0 device node. We can now + check if the scanner is correctly identified: + + &prompt.root; 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). + + Since the scanner is not identified, we will need to edit + the /usr/local/etc/sane.d/epson.conf + file. The scanner model used was the EPSON Perfection 1650, + so we know the scanner will use the epson + backend. Be sure to read the help comments in the backends + configuration files. Line changes are quite simple: comment + out all lines that have the wrong interface for your scanner + (in our case, we will comment out all lines starting with the + word scsi as our scanner uses the USB + interface), then add at the end of the file a line specifying + the interface and the device node used. In this case, we add + the following line: + + usb /dev/uscanner0 + + Please be sure to read the comments provided in the + backend configuration file as well as the backend manual page + for more details and correct syntax to use. We can now verify + if the scanner is identified: + + &prompt.root; scanimage -L +device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner + + Our USB scanner has been identified. It is not important + if the brand and the model do not match. The key item to be + concerned with is the + `epson:/dev/uscanner0' field, which give us + the right backend name and the right device node. + + Once the scanimage -L command is able + to see the scanner, the configuration is complete. The device + is now ready to scan. + + While &man.scanimage.1; does does allow us to perform an + image acquisition from the command line, it is preferable to + use a graphical user interface to perform image scanning. + SANE offers a simple but efficient + graphical interface: xscanimage + (graphics/sane-frontends). + + Xsane (graphics/xsane) is another popular + graphical scanning frontend. This frontend offers advanced + features like various scanning mode (photocopy, fax, etc.), + color correction, batch scans, etc. Both of these applications + are useable as a GIMP + plugin. + + + + Allowing Scanner Access to Other Users + + All previous operations have been done with the + root privileges, however a user should be + able to use the scanner. The user will need read and write + permissions to the device node used by the scanner. As an + example, our USB scanner uses the device node + /dev/uscanner0 which is owned by the + operator group. Adding the user + joe to the + operator group will allow him to use + the scanner: + + &prompt.root; pw groupmod operator -m joe + + For more details read the &man.pw.8; manual page. + + + Of course, for security reasons, you should think twice + before adding a user to any group, especially the + operator group. + + +