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 pro-
vides 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
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 sharing , 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 explic-
itly 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 bet-
ter 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 /etc/conf.modules.
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 corre-
spond to Mustek scanners. Empty lines and lines starting with a hash mark (#) are
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
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
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 this device.
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, cis1200, cis1200+.
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 set-
tings on a 600CP can be harmful. If the scanner starts making a loud noice, turn it off
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 sup-
port for both types of scanners will co-exist.
The backend configuration file (see also description of SANE_CONFIG_DIR below).
The static library implementing this backend.
The shared library implementing this backend (present on systems that support
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 order).
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
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
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 <firstname.lastname@example.org>
Too many... please send bug reports to email@example.com (note that you have to sub-
scribe first to the list before you can send emails... see
* 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 scan-
ner 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 it.
some nice greetings
21 April 2001 sane-mustek_pp(5)