sane-mustek_pp - SANE backend for Mustek parallel port flatbed scanners
The sane-mustek_pp library implements a SANE (Scanner Access Now Easy)
backend that provides access to Mustek parallel port flatbed scanners.
The following scanners might work with this backend:
Model: ASIC ID: CCD Type: works:
-------------------- --------- ---------- -------
SE 6000 P 1013 00 yes
SM 4800 P 1013/1015 04/01 yes
SE 1200 ED Plus 1015 01 partly
SM 1200 ED Plus 1015 01 partly
SE 12000 P 1505 05 no
SE 600 CP 1015 00 no (*)
SM 600 CP 1015 00 no (*)
600 III EP Plus 1013/1015 00/01 yes
SE 600 SEP 1013 ?? yes
600 II EP ???? ?? no
MD9848 1015 00 yes
Gallery 4800 ???? ?? yes
Viviscan Compact II 1013 00 yes
MD985x 1015 01/05 no (*)
LT9891 1015 01 no (*)
(*) These scanners are currently not supported by the default driver,
but patches are available; see CIS Scanners.
Please note that this backend is still under construction. I don't know
which scanners work or which will work in future releases.
There are two possible reasons a Mustek scanner doesn't work... a) the
protcol is still unknown (SE 12000 P) or b) it's a CIS scanner (all the
others). See CIS Scanners for an explaination why.
Some scanners work faster when EPP/ECP is enabled in the BIOS.
Note that the backend needs to run as root. To allow user access to the
scanner run the backend through the network interface (See saned(1) and
sane-net(5)). Note also that the backend does not support parport shar-
ing , i.e. if you try printing while scanning, your computer may crash.
This backend also conflicts with the sane-musteka4s2 backend. You can
only enable one of them in your dll.conf. However, you have to enable
the backend explicitly in your dll.conf, just remove the hash mark in
the line "mustek_pp".
This backend expects device names of the form:
Where addr is the base address of the port your scanner is attached to.
Known ports are 0x378 (lp1) 0x278 (lp2) and 0x3BC (lp0). Note that if
you are using a Kernel 2.2.x or better and you have only one parallel
port this port is named lp0 regardless of the base address. However,
this backend requires the base address of your port. If you are not
sure which port your scanner is connected to, have a look at your
You can rename any device using the
options. These options aply to the last port option.
Please make sure to edit mustek_pp.conf before you use the backend.
The contents of the mustek_pp.conf file is a list of options and device
names that correspond to Mustek scanners. Empty lines and lines starting
with a hash mark (#) are ignored.
The nine options supported are io-mode, wait-bank, strip-height,
niceload, auth, wait-lamp, bw, use600, and buffer.
Option io-mode defines the mode of the sanei_pa4s2 interface. Possible
values are try_mode_uni and alt_lock. This option may appear for each
possible value. try_mode_uni allows the UNI port mode, however this may
disable the (better) EPP mode. alt_lock toggles between two different
ways to lock the port for scanner access. This option must come before
any port definition or it won't have the effect you'd expect.
Option wait-bank defines the maximal time in msecs the backend waits
for the bank to change. The default value is 700. If this option is
given after the port option, only this device is affected. If this
value is to low, you will get wrong colors and stripes in the scanned
Option strip-height is a option that limits the maximum height of the
strip scanned with a single read command. The height is specified in
lines. If this option is given after the port option, only this device
is affected. A strip-height of zero allows to scan as much as fits into
the scan buffer.
Option niceload tries to avoid to heavy load. Note that this reduces
scan speed. This is a global option.
Option auth turns on user authentification for this scanner. Use this
if you want access control and if you have enabled this at compile
time. This option must come after a port option. At the moment, this
option isn't really supported.
Option wait-lamp allows you to control the time the backend waits for
the lamp to warm up. The time is specified in secs. The default value
is 5 secs. Some scanners need longer to warm up. A value of 0 makes the
backend start without waiting. However the backend will wait at least
2 secs before turning the lamp off again. If this option is given after
a port option it affects only this device.
Option bw defines the maximal color value that is considered black in
lineart scans. The default value is 127. Possible values are between 0
and 255. If this option is given after a port option it affects only
Option use600 enables the 600 dpi handling code. It's not possible to
detect wether a scanner has an optical resolution of 300x600 dpi or
600x1200 dpi. The default is to use the 300x600 dpi code. Use this
option only if your scanner has an optical resolution of 600x1200 dpi.
This is a local only option.
Option buffer allows you to change the size of the scan buffer. The
size must be specified in bytes. The default value is 1 megabyte. If
this opttion is given after the port option, only this device is
affected. If you have limited the strip-height, you only need a scan
8.5 * dpi * 3 * strip-height bytes.
A sample configuration file is shown below:
# GLOBAL #
# enable this option, if you think your scanner
# supports the UNI protocol
# note however that this might disable the better
# EPP protocol
#option io-mode try_mode_uni
# choose between two different ways to lock to port
option io-mode alt_lock
# set the maximal height (in lines) of a strip
# scanned (default: no limit)
#option strip-height 0
# wait n msecs for bank to change (default: 700
# msecs) if this value is to low, stripes my appear
# in the scanned image
#option wait-bank 700
# size (in bytes) of scan buffer (default:
# 1 megabyte)
#option buffer 1048576
# try to avoid to heavy load. Note that this
# reduces scan speed
# Define the time the lamp has to be on before
# scan starts (default 5 secs)
#option wait-lamp 5
# DEVICES #
# specify the port your scanner is connected to.
# Possible are 0x378 (lp1) 0x278 (lp2) and
# 0x3bc (lp0)
# the following options are local to this scanner
# scan maximal 16 lines for one sane_read() call
option strip-height 16
# we just need 16 * 3 * 300 * 8.5 bytes
option buffer 122400
# this scanner needs max 250 msecs to change
# the bank
option wait-bank 250
# My scanner is a MD9848 from Medion using the
# Mustek chipset
# Enable this option, if you want user
# authentification *and* if it's enabled at
# compile time
# Some scanners (especially ASIC 1013) need
# longer to warm up. This option specifies
# the time to wait for the lamp to get hot
#option wait-lamp 15
# Use this option to define the maximal
# black value in lineart scans
#option bw 127
# Use this option for 600 dpi scanners
# for example ScanExpress 1200 ED Plus
Some Mustek Scanners use so called contact image sensors (CIS) instead
of cold cathode devices (CCD). These scanners have a totally different
protocol; they are currently not supported by the default driver.
However, patches are available that support most of the CIS type scanners.
Check out the homepage of Eddy De Greef for these patches (see
the SEE ALSO section).
These patches have been reported to work on the Mustek 600CP, 1200CP,
and 1200CP+ models, and various OEM versions (LifeTec/Medion 9350,
9351, 9850, 9851, 9858, 9890, and 9891; Trust Easy Connect 9600 plus;
Targa Funline TS12EP).
When installing these patches, 3 additional options are available in
the mustek_pp.conf configuration file (see CONFIGURATION): cis600,
These options select the 600CP, 1200CP, or 1200CP+ version of the
driver. One of them must be set.
The 600CP has a maximum resolution of 300x600 DPI, whereas the 1200CP
and 1200CP+ have a maximum resolution of 600x1200 DPI. The option must
match your scanner. If unsure, check the manual or the box.
Choosing the wrong option could damage your scanner! Especially, using
the 1200CP settings on a 600CP can be harmful. If the scanner starts
making a loud noice, turn it off immediately !!!
The cis... options cannot be combined with the use600 option.
Currently, when installing the CIS patches, support for CCD type scanners
is disabled. In future versions of the sane-mustek_pp backend, the
CIS patches will be integrated and support for both types of scanners
The backend configuration file (see also description of
The static library implementing this backend.
The shared library implementing this backend (present on systems
that support dynamic loading).
This environment variable specifies the list of directories that
may contain the configuration file. Under UNIX, the directories
are separated by a colon (`:'), under OS/2, they are separated
by a semi-colon (`;'). If this variable is not set, the configuration
file is searched in two default directories: first, the
current working directory (".") and then in /etc/sane.d. If the
value of the environment variable ends with the directory separator
character, then the default directories are searched after
the explicitly specified directories. For example, setting
SANE_CONFIG_DIR to "/tmp/config:" would result in directories
"tmp/config", ".", and "/etc/sane.d" being searched (in this
SANE_DEBUG_MUSTEK_PP [Toc] [Back]
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.
level debug output
2 warnings & minor errors
3 additional information
4 debug information
5 code flow (not supported yet)
6 special debug information
SANE_DEBUG_SANEI_PA4S2 [Toc] [Back]
This variable sets the debug level for the SANE interface for
the Mustek chipset A4S2. Note that enabling this will spam your
terminal with some million lines of debug output.
level debug output
3 things nice to know
4 code flow
5 detailed code flow
sane(7), sane-mustek(5), sane-net(5), saned(1)
Patches for CIS scanner
For latest bug fixes and information see
Jochen Eisinger <email@example.com>
Too many... please send bug reports to firstname.lastname@example.org (note
that you have to subscribe first to the list before you can send
emails... see http://www.mostang.com/sane/mail.html)
* 1013 support isn't bullet proofed
* 1505 support isn't even present
* 1015 only works for CCD type 00 & 01 (01 only bw/grayscale)
If something doesn't work, please contact me. But I need some information
about your scanner to be able to help you...
run "scanimage -V" to determine this
the backend version and your scanner hardware
run "SANE_DEBUG_MUSTEK_PP=128 scanimage -L" as root. If you
don't get any output from the mustek_pp backend, make sure a
line "mustek_pp" is included into your /etc/sane.d/dll.conf. If
your scanner isn't detected, make sure you've defined the right
port address in your mustek_pp.conf.
the name of your scanner/vendor
also a worthy information. Please also include the optical resolution
and lamp type of your scanner, both can be found in the
manual of your scanner.
any further comments
if you have comments about the documentation (what could be done
better), or you think I should know something, please include
some nice greetings
21 April 2001 sane-mustek_pp(5)
[ Back ]