sane-project-backends/README.linux

122 wiersze
4.7 KiB
Plaintext

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
Type: Scanner ANSI SCSI revision: 01 CCS
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
device mustek:/dev/scanner' is a Mustek ScanExpress 12000SP flatbed scanner
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
your backend. To find out about the right SCSI device use sane-find-scanner:
# sane-find-scanner
found SCSI scanner "SCANNER 2.02" at /dev/scanner
found SCSI scanner "SCANNER 2.02" at /dev/sg0
found SCSI scanner "SCANNER 2.02" at /dev/sga
It may help to set a symbolic link /dev/scanner to the respective device if
automatic detection does not work.
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:
Using buffer sizes of more than 32768 bytes with the aha1542 driver can
lead to kernel panic with older kernels. To avoid this, run configure with
the option --enable-scsibuffersize or set the environment variable
SANE_SG_BUFFERSIZE to 32768 before running scanimage or another frontend,
or download and install the SG driver 2.1.37 or newer from
http://www.torque.net/sg.
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.
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
direct IO by default. If you want to use it, run
configure --enable-scsi-directio=yes
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.
Other Information
=================
Compilation errors in /usr/include/linux/videodev.h: These errors happen if
there is a link /usr/include/linux -> /usr/src/linux/include/linux. Most
distributions come with their own Linux-specific headers so this link is
ususally not a good idea (and frowned upon by the kernel hackers). As a
workaround, make sure that the link points to a Linux 2.4 kernel (not 2.6).
Excessive warnings "pointer of type `void *' used in arithmetic":
Some older versions of glibc generate these warnings not related to SANE
source code. To suppress these warnings do
export CFLAGS="-g -O2 -D__NO_STRING_INLINES"
and rerun configure.
Older gcc compilers may abort with error "virtual memory exhausted",
usually in canon.c. Try to compile with lower optimization levels:
make CFLAGS="-g -Wall -O1", make CFLAGS="-g -Wall -O", or
make CFLAGS="-g -Wall".
If you use DEC cc on Linux Alpha, you may need to set LDFLAGS="-N" to
be able to build sane-backends.
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