sane-sharp - SANE backend for SHARP scanners
DESCRIPTION
The sane-sharp library implements a SANE (Scanner Access
Now Easy) backend that provides access to Sharp SCSI scan
ners. This backend should be considered beta-quality
software! In the current state it is known to work with
JX-610 and JX-250 scanners. It is prepared for usage with
the JX-330 series scanners, but we are not able to test it
with these devices.
For other Sharp scanners, it may or may not work.
At present, the following scanners are known to work with
this backend.
Vendor Product id:
----- -----------
Sharp JX-610
Sharp JX-250
Sharp JX-320
Sharp JX-330
Sharp JX-350
The following scanners are detected by the backend, but
not tested:
Vendor Product id:
----- -----------
Sharp JX-325
DEVICE NAMES
This backend expects device names of the form:
special
Where special is either the path-name for the special
device that corresponds to a SCSI scanner. The special
device name must be a generic SCSI device or a symlink to
such a device. Under Linux, such a device name could be
/dev/sga or /dev/sge, for example. See sane-scsi(5) for
details.
SCAN OPTIONS
Scan Mode (parameter --mode for scanimage). Possible set
tings:
Lineart (1 bit black & white scans),
Gray (8 bit gray scale scans),
Lineart Color (bi-level color scans),
Color (8 bit RGB scans).
The default value is Color.
age). Available only for the JX-330 series scanners. Pos
sible settings:
none
Dither Bayer
Dither Spiral
Dither Dispersed
Error Diffusion
The default value is none.
Paper Source (parameter --source for scanimage). This
option is only available, if an automatic document feeder
or a transparency adapter is installed. Possible settings:
Flatbed
Automatic Document Feeder
Transparency Adapter
If an ADF or a transparency adapter is installed, using it
is the default selection.
Custom Gamma (parameter --custom-gamma for scanimage).
This option determines whether a builtin or a custom
gamma-table is used. Possible settings:
yes enables custom gamma tables
no enables a built gamma table
Gamma (parameter --Gamma for scanimage). This option is
only available, if Custom Gamma is set to no. Possible
values:
1.0
2.2
The default value is 2.2. (The JX-250 and JX-350 have no
built in gamma correction; for these scanner, a gamma
table is downloaded to the scanner by the backend.)
Gamma Table (parameter --gamma-table for scanimage).
Allowed values: 0..255; 256 numbers must be defined. The
default values are 0, 1, 2, .. 255 (i.e., gamma == 1).
This table is only used for gray scale scans.
Red Gamma Table (paramter --red-gamma-table for scanim
age). Allowed values: 0..255; 256 numbers must be defined.
The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).
Green Gamma Table (paramter --green-gamma-table for scan
image). Allowed values: 0..255; 256 numbers must be
defined. The default values are 0, 1, 2, .. 255 (i.e.,
gamma == 1).
Blue Gamma Table (paramter --blue-gamma-table for scanim
age). Allowed values: 0..255; 256 numbers must be defined.
The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).
Resolution in pixel per inch (parameter --resolution for
scanimage). Selects the resolution of the scanned image.
30..600 (JX-330, JX-350 and JX-610) resp. 30..400
(JX-250)
The default value is 150.
Scan Window
The possible settings depend on the scanner model and, for
the JX-250 and the JX-350, also on the usage of the auto
matic document feeder resp. the transparency adapter.
Please refer to the values allowed by xscanimage, or
xsane. With scanimage, enter one of the following com
mands:
scanimage -d sharp --source "Automatic Document
Feeder" --help
scanimage -d sharp --source Flatbed --help
scanimage -d sharp --source "Transparency Adapter"
--help
in order to see the allowed parameter values for the scan
window.
The scan window parameters are:
Top-left x position of scan area (parameter -l for
scanimage);
Top-left y position of scan area (parameter -t for
scanimage);
bottom right x position of scan area (parameter -x
for scanimage);
bottom right y position of scan area (parameter -y
for scanimage);
Edge emphasis (parameter --Edge emphasis for scanimage).
This option is not available for the JX-250 and the
JX-350. Possible settings:
None
Middle
Strong
Blur
The default value is None.
Threshold (parameter --threshold for scanimage). Sets the
threshold for black and white pixels in lineart mode. Pos
sible values:
1..255
The default value is 128. This option is only available
in scan mode lineart.
Threshold Red (parameter --threshold-red for scanimage).
Sets the threshold for the red component of a pixel in in
1..255
The default value is 128. This option is only available
in scan mode color lineart.
Threshold Green (parameter --threshold-green for scanim
age). Sets the threshold for the green component of a
pixel in in lineart color scan mode. Possible values:
1..255
The default value is 128. This option is only available
in scan mode color lineart.
Threshold Blue (parameter --threshold-blue for scanimage).
Sets the threshold for the blue component of a pixel in in
lineart color scan mode. Possible values:
1..255
The default value is 128. This option is only available
in scan mode color lineart.
Light Color (parameter --LightColor for scanimage). Sets
the color of the light source. Possible values:
white
red
green
blue
The default value is white. This option is only available
in scan modes lineart color and color.
ADF USAGE
If a paper jam occured, the maintenance cover must be
opened and closed, even if the jammed paper can be removed
without opening the maintenance cover. Otherwise, the
error condition cannot be cleared.
CONFIGURATION
The contents of the sharp.conf file is a list of options
and device names that correspond to Sharp scanners. Empty
lines and lines beginning with a hash mark (#) are
ignored. See sane-scsi(5) for details about device names.
Lines setting an option start with the key word option,
followed by the option's name and the option's value. At
present, three options are defined: buffers, buffersize,
and readqueue.
Options defined at the start of sharp.conf apply to all
devices; options defined after a device name apply to this
device.
The options buffers and readqueue are only significant if
the backend has been compiled so that for each scan a sec
ond process is forked (switch USE_FORK in sharp.c ). This
this data into a block of shared memory. The parent pro
cess reads the data from this memory block and delivers it
to the frontend. The options control the size and usage of
this shared memory block.
option buffers defines the number of buffers used. The
smallest number allowed is 2.
option buffersize defines the size of one buffer. Since
each buffer is filled with a single read command sent to
the scanner, its size is limited automatically to the size
allowed by the operating system or by the Sane SCSI
library for SCSI read commands. A buffer size of 128 kB or
256 kB is recommended for scan resolutions of 300 dpi and
above.
option readqueue defines how many read commands to be sent
to the scanner are queued. At present, the Sane SCSI
library supports queued read commands only for for Linux.
For other operating systems, option readqueue should be
set to 0. For Linux, option readqueue should be set to 2.
Larger values than 2 for option readqueue are not reason
able in most cases. option buffers should be greater than
option readqueue.
Performance Considarations
This section focuses on the problem of stops of the scan
ner's carriage during a scan. Carriage stops happen mainly
with the JX-250. This scanner has obviously only a small
internal buffer compared to its speed. That means that the
backend must read the data as fast as possible from the
scanner in order to avoid carriage stops.
Even the JX-250 needs only less than 10 seconds for a 400
dpi A4 gray scale scan, which results in a data transfer
rate of more than 1.6 MB per second. This means that the
data produced by the scanner must be processed fairly
fast. Due to the small internal buffer of the JX-250, the
backend must issue a read request for the next data block
as soon as possible after reading a block of data in order
to avoid carriage stops.
Stops of the carriage can be caused by the following rea
sons:
- too much "traffic" on the SCSI bus
- slow responses by the backend to the scanner,
- a program which processes the data aquired by the
backend too slow.
Too much "traffic" on the SCSI bus: This happens for exam
ple, if hard disks are connected to the same SCSI bus as
disks requires a considerable part of the SCSI bandwidth
during a scan. If this is the case, you should consider to
connect the scanner to a separate SCSI adapter.
Slow responses by the backend to the scanner: Unfortu
nately, Unix-like operating systems generally have no real
time capabilities. Thus there is no guarantee that the
backend is under any circumstances able to communicate
with the scanner as fast as required. To minimize this
problem, the backend should be compiled so that a separate
reader process is forked: Make sure that USE_FORK is
defined when you compile sharp.c. If slow responses of
the backend remain to be problem, you could try to reduce
the load of the system. Even while the backend and the
reader process need only a minor amount of processor time,
other running processes can cause an increase in the time
delay between two time slices given to the reader process.
On slower systems, such an increased delay can be enough
to cause a carriage stop with the JX-250. For Linux, the
usage of the SG driver version 2.1.36 or above is recom
mended, because it supports, in combination with the SCSI
library of Sane version 1.0.2, command queueing within the
kernel. This queueing implementation, combined with a
buffer size of at least 128 kB, should avoid most carirage
stops.
Slow processing of the scan data: An example for this sit
uation is the access to the scanner via a 10 MBit Ether
net, which is definitely too slow to transfer the scan
data as fast as they are produced by the scanner. If you
have enough memory available, you can increase option
buffers, so that an entire image can be stored in these
buffers.
In order to see, if the backend is too slow or if the fur
ther processing of the data is too slow, set the environ
ment variable SANE_DEBUG_SHARP to 1. When a scan is fin
ished, the backend writes the line "buffer full condi
tions: nn" to stderr. If nn is zero, carriage stops are
caused by too slow responses of the backend or too much
"traffic" on the SCSI bus. If nn is greater than zero, the
backend had to wait nn times until a buffer has been pro
cessed by the frontend. (Please note that option buffers
must be greater than option readqueue in order to get use
ful output for "buffer full conditions".)
FILES
/etc/sane.d/sharp.conf
The backend configuration file.
/usr/lib/sane/libsane-sharp.a
The static library implementing this backend.
The shared library implementing this backend (pre
sent on systems that support dynamic loading).
ENVIRONMENT
SANE_DEBUG_SHARP
If the library was compiled with debug support
enabled, this environment variable controls the
debug level for this backend. E.g., a value of 128
requests all debug output to be printed. Smaller
levels reduce verbosity.
KNOWN PROBLEMS
1. ADF Mode
After several ADF scans, the scanner moves the car
riage back to the idle position and back to ADF
scan position, before a scan starts. We do not
know, if this is a problem of the scanner, or if
this is a bug of the backend. At present, the scan
ner must power off and on to stop this annoying
behaviour.
2. Threshold level does not work (only JX-610)
3. The maximum resolution is limited to 600 dpi(JX-610
supported to 1200 dpi) resp. 400 dpi (JX-250)
4. If the JX250 is used with an ADF, the following situa
tion can occur: After several scans, the scanner moves,
after loading a new sheet of paper, the carriage to the
idle position, and then back to the position used for ADF
scans. This happens for every scan, in contrast to the
calibration, which is done after 10 scans. (For the cali
bration, the carriage is also moved to the idle position.)
We do not know, if this behavior is caused by the backend,
or if it is a bug in the firmware of the scanner.
5. Usage of a transparency adapter (film scan unit) is
supported, but not tested.
SEE ALSO
sane(7), sane-scsi(5)
AUTHORS
Kazuya Fukuda, Abel Deuring
CREDITS
The Sharp backend is based on the Canon backend written by
Helmut Koeberle
Parts of this man page are a plain copy of sane-mustek(5)
by David Mosberger-Tang, Andreas Czechanowski and Andreas
Bolsch
Man(1) output converted with
man2html