The configuration file for this backend resides in
Its contents is a list of options and device names that correspond to UMAX scanners. Empty lines and lines starting with a hash mark (#) are ignored. A sample configuration file is shown below:
option scsi-buffer-size-min 65536
option scsi-buffer-size-max 131072
option scan-lines 40
option preview-lines 10
option scsi-maxqueue 2
option handle-bad-sense-error 0
option execute-request-sense 0
option force-preview-bit-rgb 0
option slow-speed -1
option care-about-smearing -1
option calibration-full-ccd -1
option calibration-width-offset -1
option calibration-bytes-pixel -1
option invert-shading-data -1
option lamp-control-available 0
#scsi Vendor Model Type Bus Channel ID LUN
scsi UMAX * Scanner * * * * *
# this is a comment
The special device name must be a generic SCSI device or a symlink to such a device. To find out to which device your scanner is assigned and how you have to set the permissions of that device, have a look at sane-scsi.
When the generic scsi driver of the system supports selection of scsi buffer sizes the umax backend calculates the scsi buffer sizes in dependance of the numbers of bytes per scanline. With scsi-buffer-size-min and scsi-buffer-size-max the scsi buffer size can be defined in a range between 4KB and 1MB. Especially the minimum value is very important. If this value is set too small the backend is not able to send gamma tables to the scanner or to do a correct color calibration. This may result in strange color effects. If the minimum value is set too large then the backend is not able to allocate the requested scsi buffer size and aborts with out of memory error. The default is 32KB, for some scanners it should be increased to 64KB.

The option scan-lines defines the the number of lines that shall be scanned with one scsi read command for a real scan. The number of lines that are read with one scsi command for preview scans are defined by the option preview-lines. Both have to be in the range between 1 and 65536.

With the option scsi-maxqueue you can define the number of scsi commands that shall be queued. UMAX scanners do not support command queueing - as far as I know. But some scsi controller drivers do support queueing in the kernel. In this case it does not make sense to queue more than 2 commands.

When you are able to do color previews but color scans do not work you can set the option force-preview-bit-rgb 1. This always sets the preview bit when acquiring a color scan. The image quality may be reduced.

Some scanners (especally very old scanners) may need the options slow-speed and/or care-about-smearing. The value -1 uses the value defined by the driver, 0 disables the feature, 1 enables the feature. Do not change these options unless you really know what you do, you can destroy your scanner by setting wrong values for this options!!!

Some scsi drivers (or may be some scanners) do return an invalid error code when a scsi command is executed. There are different ways to handle such bad error codes. You can define the behaviour of the umax-backend by setting the option handle-bad-sense-error in umax.conf. You can set the following values:

0 : handle as device busy
1 : handle as ok
2 : handle as i/o error
3 : ignore bad error code, continue sense handler
In most cases it does work when this condition is handled as a device busy state so this is the default (0).

The option execute-request-sense disables(0) or enables(1) the scsi command REQUEST_SENSE. The command can be called when the scanner asks the driver to do calibration. The driver does not know the required calibration parameters for all scanners. Some scanners return the needed parameters when the driver executes the REQUEST_SENSE command. But there is a problem with the REQUEST_SENSE command on some systems with some scsi controller drivers. This can cause a system hang. So the safe way is to disable the REQUEST_SENSE command, but the driver may not be able to do correct calibration in this case.

For some scanners the calibration has to be done by the driver. For this the driver has to know some values about the calibration data. When the REQUEST_SENSE command is disabled or the scanner does not return the correct data the driver needs to know the correct parameters. For some scanners the parameters are stored in the driver. When these values are not set correct the image might look very strange. To be sure that you have a problem with the calibration please enable debug output.

The calibration can be done for each element of the CCD (1) or for each pixel of the requested image(0). The value -1 enables the value defined in the driver.

Some scanners use more pixels than calculated by image/CCD parameters. A value larger or equal 0 defines the offset. The value -1 enables the value defined in the driver.

Some scanners use 1 byte calibration data although the scanner supports more than 8 bits/pixel. You can define 1 or 2 bytes per pixel calinration data. The value -1 enables the value defined in the driver.

Some scanners need inverted shading data (1), others need original shading data (0). The value -1 enables the value defined in the driver.


The UMAX-scanners do block the scsi-bus for a few seconds while scanning. It is not necessary to connect the scanner to its own SCSI-adapter. But if you need short response time for your SCSI-harddisk (e.g. if your computer is a file-server), I suggest you use an own SCSI-adapter for your UMAX-scanner.
The SCSI-adapters that are shipped with some Umax-scanners are very simple ones. I suggest not to use them. If you really want to try: the UDS-IS11 uses a DTC3181E chip (compatible to NCR5380). On linux you may have the chance to get it work with the recent g_NCR5380-driver. The card does not have IRQ/DMA. Try the following option for kernel boot option:


 or use the following command:

        insmod g_NCR5380 ncr_irq=255 ncr_addr=0x280 dtc_3181e=1

     - ncr_irq=255 : no IRQ, no DMA
     - ncr_irq=254 : autoprobe IRQ
     - ncr_addr : can be: 0x220 0x240 0x280 0x2A0 0x2C0 0x300 0x320 0x340

For information about the umax-scsi-cards take a look here.

See the relevant hardware FAQs and HOWTOs for your platform for more information.
See also: sane-scsi


  • The backend configuration file: /usr/local/etc/sane.d/umax.conf
  • The static library implementing this backend: /usr/local/lib/sane/libsane-umax.a
  • The shared library implementing this backend : /usr/local/lib/sane/
    (present on systems that support dynamic loading)


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:
print important errors (printed each time)
print errors
2 print sense
print warnings
4 print scanner-inquiry
print information
6 print less important information
7 print called procedures
8 print reader_process messages
print called sane-init-routines
print called sane-procedures
print sane-infos
print sane option control messages



This page has been changed on 27th. feburary 2001

Author: Oliver Rauch