| 
									
										
										
										
											2004-04-02 16:31:44 +00:00
										 |  |  | Information about USB scanners: | 
					
						
							|  |  |  | ================================ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | With Linux 2.4.* you could either use the kernel scanner module or libusb to | 
					
						
							|  |  |  | access USB scanners.  In Linux 2.6.4 the kernel scanner module was removed. | 
					
						
							|  |  |  | Therefore with this and later kernels libusb must be used. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-05-21 15:29:35 +00:00
										 |  |  | Permissions: | 
					
						
							|  |  |  | ------------ | 
					
						
							| 
									
										
										
										
											2004-04-02 16:31:44 +00:00
										 |  |  | While SANE automatically uses libusb when the library and its header file were | 
					
						
							| 
									
										
										
										
											2004-10-16 19:07:37 +00:00
										 |  |  | present during the build of sane-backends, setting permissions will require some | 
					
						
							|  |  |  | attention. So if scanimage -L lists your scanner as root but not as normal user | 
					
						
							|  |  |  | read on this text. | 
					
						
							| 
									
										
										
										
											2004-04-02 16:31:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-05-21 15:29:35 +00:00
										 |  |  | Most distributions support setting permissions without much manual | 
					
						
							|  |  |  | configuration. Usually you must just add the users that are allowed to access | 
					
						
							|  |  |  | the scanner to group "scanner". To make that change active, the user must login | 
					
						
							|  |  |  | again. For more details, see your distribution's documentation e.g. for Debian: | 
					
						
							|  |  |  | README.debian.gz. If this doesn't work you you want to know more, read on. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-02 16:31:44 +00:00
										 |  |  | The device files used by libusb are located in /proc/bus/usb/ | 
					
						
							| 
									
										
										
										
											2006-01-05 17:31:30 +00:00
										 |  |  | (e.g. /proc/bus/usb/001/003) or in /dev/bus/usb/ (e.g. /dev/bus/usb/001/003), if | 
					
						
							|  |  |  | you use udev.  The exact file name can be found out by running sane-find-scanner | 
					
						
							|  |  |  | which would print "libusb:001:003" in this case.  While setting permissions with | 
					
						
							|  |  |  | e.g. "chmod a+rw /proc/bus/usb/001/003" works, this change is not permanent. | 
					
						
							|  |  |  | The permissions will be reset when the scanner is replugged or Linux is | 
					
						
							|  |  |  | rebooted. | 
					
						
							| 
									
										
										
										
											2004-04-02 16:31:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-05-21 15:29:35 +00:00
										 |  |  | One solution to set permissions on-the-fly is Linux udev which comes with | 
					
						
							|  |  |  | current distributions. SANE comes with a udev rules file in the tools/udev | 
					
						
							|  |  |  | directory which may be used by distributions or can be copied to | 
					
						
							|  |  |  | /etc/udev/rules.d manually. The file format is explained on top of the file | 
					
						
							|  |  |  | itself. Either you need libusb 0.1.12 or newer or USB_DEVFS_PATH=/dev/bus/usb | 
					
						
							|  |  |  | must be exported as a system-wide environment variable. | 
					
						
							| 
									
										
										
										
											2004-10-16 19:07:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-05-21 15:29:35 +00:00
										 |  |  | Older distributions may use the Linux hot-plug tools (or hotplug-ng). Your | 
					
						
							|  |  |  | distribution should have set up the scripts to automatically change permissions | 
					
						
							|  |  |  | correctly. Look for "libsane.usermap" and "libusbscanner" in /etc/hotplug/usb. | 
					
						
							| 
									
										
										
										
											2004-10-16 19:07:37 +00:00
										 |  |  | If you build SANE from source you can use the hotplug script that comes with | 
					
						
							|  |  |  | SANE. See the tools/hotplug/ directory in the source distribution. Please refer | 
					
						
							|  |  |  | to the README in that directory for the details. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-05-21 15:29:35 +00:00
										 |  |  | Gentoo information: | 
					
						
							|  |  |  | ------------------- | 
					
						
							| 
									
										
										
										
											2004-10-16 19:07:37 +00:00
										 |  |  | Gentoo users: If your USB scanner is not detected at all check that USE=usb is | 
					
						
							|  |  |  | set when emerging. | 
					
						
							| 
									
										
										
										
											2004-04-02 16:31:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-12 15:11:46 +00:00
										 |  |  | Information about SCSI scanners: | 
					
						
							|  |  |  | ================================ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Under Linux, your kernel must have generic SCSI support (sg) as well as a | 
					
						
							|  |  |  | driver for your SCSI adapter. You may want to increase the SCSI buffer size | 
					
						
							|  |  |  | to increase scan speed. Details on all of the above can be found in | 
					
						
							|  |  |  | sane-scsi(5). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If your SCSI and sg driver are build as moduls you will need to load them | 
					
						
							|  |  |  | with modprobe: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # modprobe your-driver-name | 
					
						
							|  |  |  | # modprobe sg | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You may find error messages in /var/log/messages. Look at the documentation | 
					
						
							|  |  |  | for your SCSI driver. Maybe you need to add options like the io port. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Now the SCSI adapter and your scanner should be visible at /proc/scsi/scsi. | 
					
						
							|  |  |  | Example: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # cat /proc/scsi/scsi | 
					
						
							|  |  |  | Host: scsi0 Channel: 00 Id: 06 Lun: 00 | 
					
						
							|  |  |  |   Vendor: SCANNER  Model:                  Rev: 2.02 | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  |   Type:   Scanner                          ANSI SCSI revision: 01 CCS | 
					
						
							| 
									
										
										
										
											2000-08-12 15:11:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | In this case the real vendor and scanner name are not shown (Mustek | 
					
						
							|  |  |  | Scannexpress 12000SP) but SANE will detect it nevertheless. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If your scanner is supported by SANE, scanimage -L will list it now: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # scanimage -L | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  | device mustek:/dev/scanner' is a Mustek ScanExpress 12000SP flatbed scanner | 
					
						
							| 
									
										
										
										
											2000-08-12 15:11:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | If this doesn't work you may have to add the right SCSI generic device name | 
					
						
							|  |  |  | to the configuration file. This should be documented in the man page for | 
					
						
							| 
									
										
										
										
											2001-12-25 12:44:05 +00:00
										 |  |  | your backend. To find out about the right SCSI device use sane-find-scanner: | 
					
						
							| 
									
										
										
										
											2000-08-12 15:11:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-25 12:44:05 +00:00
										 |  |  | # sane-find-scanner | 
					
						
							| 
									
										
										
										
											2003-04-20 13:56:26 +00:00
										 |  |  | found SCSI scanner "SCANNER  2.02" at /dev/scanner | 
					
						
							|  |  |  | found SCSI scanner "SCANNER  2.02" at /dev/sg0 | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  | found SCSI scanner "SCANNER  2.02" at /dev/sga | 
					
						
							| 
									
										
										
										
											2000-08-12 15:11:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-04-20 13:56:26 +00:00
										 |  |  | It may help to set a symbolic link /dev/scanner to the respective device if | 
					
						
							|  |  |  | automatic detection does not work. | 
					
						
							| 
									
										
										
										
											2000-08-12 15:11:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | If you need more information on the Linux SCSI subsystem, look at | 
					
						
							|  |  |  | http://www.torque.net/scsi/linux_scsi_24/index.html. Although this | 
					
						
							|  |  |  | documentation is about the 2.4 kernels, large parts are also valid for | 
					
						
							|  |  |  | older kernels. One important exception is the section on "Device Names | 
					
						
							|  |  |  | in devfs". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Adaptec 1542 SCSI adapter: | 
					
						
							| 
									
										
										
										
											2000-11-23 20:04:09 +00:00
										 |  |  |   Using buffer sizes of more than 32768 bytes with the aha1542 driver can | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  |   lead to kernel panic with older kernels. To avoid this, run configure with | 
					
						
							| 
									
										
										
										
											2001-12-28 13:26:12 +00:00
										 |  |  |   the option --enable-scsibuffersize or set the environment variable | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  |   SANE_SG_BUFFERSIZE to 32768 before running scanimage or another frontend, | 
					
						
							|  |  |  |   or download and install the SG driver 2.1.37 or newer from | 
					
						
							| 
									
										
										
										
											2001-12-28 13:26:12 +00:00
										 |  |  |   http://www.torque.net/sg. | 
					
						
							| 
									
										
										
										
											2000-11-23 20:04:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | idescsi: | 
					
						
							|  |  |  |   The Linux kernel "Emulation of a SCSI host adapter for IDE ATAPI | 
					
						
							|  |  |  |   devices" (idescsi) is reported to cause problems in connection with | 
					
						
							|  |  |  |   SANE. If your scanner isn't found or you encounter segmentation faults | 
					
						
							|  |  |  |   try to disable idescsi. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  | SCSI Direct IO: Recent versions of the Linux SG driver for the 2.4 kernels | 
					
						
							|  |  |  |   support direct IO, i.e., the SCSI adapter's DMA chip copies data directly | 
					
						
							|  |  |  |   to/from user memory. Direct IO reduces memory usage, but it can lead to | 
					
						
							|  |  |  |   access conflicts, if a backend uses shared memory. SANE does not use | 
					
						
							| 
									
										
										
										
											2001-12-28 13:26:12 +00:00
										 |  |  |   direct IO by default. If you want to use it, run | 
					
						
							| 
									
										
										
										
											2001-04-10 22:38:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-28 13:26:12 +00:00
										 |  |  | 	configure --enable-scsi-directio=yes | 
					
						
							| 
									
										
										
										
											2001-04-10 22:38:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-09 15:53:48 +00:00
										 |  |  | Very old Linux distributions are missing the /usr/include/scsi directory.  In | 
					
						
							|  |  |  | such a case, it is necessary to copy the relevant files from the kernel | 
					
						
							|  |  |  | distribution.  Normally, the command: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   cp -a /usr/src/linux/include/scsi /usr/include | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | should fix this problem. Don't do this if you don't get compilation errors | 
					
						
							|  |  |  | about missing SCSI headers. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-04-10 22:38:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-23 20:04:09 +00:00
										 |  |  | Other Information | 
					
						
							|  |  |  | ================= | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-27 12:58:18 +00:00
										 |  |  | ld.so.conf configuration: | 
					
						
							|  |  |  |   "/usr/local/lib/sane" or "/usr/lib/sane" MUST NOT be listed in | 
					
						
							|  |  |  |   /etc/ld.so.conf. If your scanner is not detected or only Video for Linux | 
					
						
							|  |  |  |   devices are found, check for one of the above lines in ld.so.conf. | 
					
						
							|  |  |  |   A line "/usr/local/lib" or "/usr/lib" in ld.so.conf is ok, however. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-11-23 20:04:09 +00:00
										 |  |  | Excessive warnings "pointer of type `void *' used in arithmetic": | 
					
						
							| 
									
										
										
										
											2001-12-25 12:44:05 +00:00
										 |  |  |   Some older versions of glibc generate these warnings not related to SANE | 
					
						
							| 
									
										
										
										
											2000-11-23 20:04:09 +00:00
										 |  |  |   source code. To suppress these warnings do | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export CFLAGS="-g -O2 -D__NO_STRING_INLINES" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   and rerun configure. | 
					
						
							| 
									
										
										
										
											2002-10-20 17:17:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | If you use DEC cc on Linux Alpha, you may need to set LDFLAGS="-N" to | 
					
						
							|  |  |  |   be able to build sane-backends. | 
					
						
							| 
									
										
										
										
											2003-01-26 14:51:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The Intel C++ Compiler for IA32 and IA64 isn't supported yet. If you want | 
					
						
							|  |  |  |   to try nevertheless, you will experience undefined references to inb | 
					
						
							|  |  |  |   and outb functions. To avoid those replace #include <sys/io.h> with | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   #if defined(__ICC) && __ICC >= 700 | 
					
						
							|  |  |  |   # define __GNUC__ 2 | 
					
						
							|  |  |  |   #endif | 
					
						
							|  |  |  |   #include <sys/io.h> | 
					
						
							|  |  |  |   #if defined(__ICC) && __ICC >= 700 | 
					
						
							|  |  |  |   # undef __GNUC__ | 
					
						
							|  |  |  |   #elif defined(__ICC) && defined(HAVE_ASM_IO_H) | 
					
						
							|  |  |  |   # include <asm/io.h> | 
					
						
							|  |  |  |   #endif | 
					
						
							| 
									
										
										
										
											2012-07-26 20:46:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Have a lot of fun with the latest SANE backend. |