summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2014-10-06 14:00:40 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2014-10-06 14:00:40 +0200
commit6e9c41a892ed0e0da326e0278b3221ce3f5713b8 (patch)
tree2e301d871bbeeb44aa57ff9cc070fcf3be484487 /doc
Initial import of sane-backends version 1.0.24-1.2
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.am315
-rw-r--r--doc/Makefile.in1008
-rw-r--r--doc/backend-writing.txt500
-rw-r--r--doc/canon/canon.changes42
-rw-r--r--doc/canon/canon.install2700F.txt135
-rw-r--r--doc/descriptions-external/brother-mfc4600.desc37
-rw-r--r--doc/descriptions-external/brother.desc409
-rw-r--r--doc/descriptions-external/brother2.desc235
-rw-r--r--doc/descriptions-external/canon_mfp.desc73
-rw-r--r--doc/descriptions-external/cs3200f.desc34
-rw-r--r--doc/descriptions-external/epkowa.desc3124
-rw-r--r--doc/descriptions-external/geniusvp2.desc26
-rw-r--r--doc/descriptions-external/hp3770.desc39
-rw-r--r--doc/descriptions-external/hp8200.desc40
-rwxr-xr-xdoc/descriptions-external/hpaio.desc2241
-rw-r--r--doc/descriptions-external/hpoj.desc34
-rw-r--r--doc/descriptions-external/kodak-twain.desc87
-rw-r--r--doc/descriptions-external/lhii.desc46
-rwxr-xr-xdoc/descriptions-external/mustek_a3p1.desc21
-rw-r--r--doc/descriptions-external/panamfs.desc57
-rw-r--r--doc/descriptions-external/primascan.desc33
-rw-r--r--doc/descriptions-external/primax.desc46
-rw-r--r--doc/descriptions-external/samsung.desc88
-rw-r--r--doc/descriptions-external/scanwit.desc27
-rw-r--r--doc/descriptions-external/template.desc.81
-rw-r--r--doc/descriptions-external/v4l2.desc21
-rw-r--r--doc/descriptions-external/viceo.desc75
-rw-r--r--doc/descriptions.txt130
-rw-r--r--doc/descriptions/abaton.desc20
-rw-r--r--doc/descriptions/agfafocus.desc40
-rw-r--r--doc/descriptions/apple.desc26
-rw-r--r--doc/descriptions/artec.desc72
-rw-r--r--doc/descriptions/artec_eplus48u.desc106
-rw-r--r--doc/descriptions/as6e.desc44
-rw-r--r--doc/descriptions/avision.desc851
-rw-r--r--doc/descriptions/bh.desc56
-rw-r--r--doc/descriptions/canon.desc65
-rw-r--r--doc/descriptions/canon630u.desc37
-rw-r--r--doc/descriptions/canon_dr.desc320
-rw-r--r--doc/descriptions/canon_pp.desc62
-rw-r--r--doc/descriptions/cardscan.desc35
-rw-r--r--doc/descriptions/coolscan.desc43
-rw-r--r--doc/descriptions/coolscan2.desc65
-rw-r--r--doc/descriptions/coolscan3.desc75
-rw-r--r--doc/descriptions/dc210.desc14
-rw-r--r--doc/descriptions/dc240.desc15
-rw-r--r--doc/descriptions/dc25.desc16
-rw-r--r--doc/descriptions/dell1600n_net.desc17
-rw-r--r--doc/descriptions/dll.desc7
-rw-r--r--doc/descriptions/dmc.desc29
-rw-r--r--doc/descriptions/epjitsu.desc54
-rw-r--r--doc/descriptions/epson.desc355
-rw-r--r--doc/descriptions/epson2.desc2027
-rw-r--r--doc/descriptions/fujitsu.desc444
-rw-r--r--doc/descriptions/genesys.desc295
-rw-r--r--doc/descriptions/gphoto2.desc13
-rw-r--r--doc/descriptions/gt68xx.desc472
-rw-r--r--doc/descriptions/hp.desc120
-rw-r--r--doc/descriptions/hp3500.desc47
-rw-r--r--doc/descriptions/hp3900.desc82
-rw-r--r--doc/descriptions/hp4200.desc43
-rw-r--r--doc/descriptions/hp5400.desc47
-rw-r--r--doc/descriptions/hp5590.desc55
-rw-r--r--doc/descriptions/hpljm1005.desc36
-rw-r--r--doc/descriptions/hpsj5s.desc32
-rw-r--r--doc/descriptions/hs2p.desc41
-rw-r--r--doc/descriptions/ibm.desc42
-rw-r--r--doc/descriptions/kodak.desc190
-rw-r--r--doc/descriptions/kodakaio.desc186
-rw-r--r--doc/descriptions/kvs1025.desc34
-rw-r--r--doc/descriptions/kvs20xx.desc48
-rw-r--r--doc/descriptions/kvs40xx.desc36
-rw-r--r--doc/descriptions/leo.desc36
-rw-r--r--doc/descriptions/lexmark.desc89
-rw-r--r--doc/descriptions/ma1509.desc38
-rw-r--r--doc/descriptions/magicolor.desc36
-rw-r--r--doc/descriptions/matsushita.desc74
-rw-r--r--doc/descriptions/microtek.desc96
-rw-r--r--doc/descriptions/microtek2.desc167
-rw-r--r--doc/descriptions/mustek.desc174
-rw-r--r--doc/descriptions/mustek_pp.desc163
-rw-r--r--doc/descriptions/mustek_usb.desc41
-rwxr-xr-xdoc/descriptions/mustek_usb2.desc16
-rw-r--r--doc/descriptions/nec.desc14
-rw-r--r--doc/descriptions/net.desc8
-rw-r--r--doc/descriptions/niash.desc63
-rw-r--r--doc/descriptions/p5.desc31
-rw-r--r--doc/descriptions/pie.desc98
-rw-r--r--doc/descriptions/pint.desc10
-rw-r--r--doc/descriptions/pixma.desc908
-rw-r--r--doc/descriptions/plustek.desc284
-rw-r--r--doc/descriptions/plustek_pp.desc156
-rw-r--r--doc/descriptions/pnm.desc8
-rw-r--r--doc/descriptions/qcam.desc19
-rw-r--r--doc/descriptions/ricoh.desc29
-rw-r--r--doc/descriptions/rts8891.desc52
-rw-r--r--doc/descriptions/s9036.desc14
-rw-r--r--doc/descriptions/sceptre.desc30
-rw-r--r--doc/descriptions/sharp.desc40
-rw-r--r--doc/descriptions/sm3600.desc53
-rw-r--r--doc/descriptions/sm3840.desc56
-rw-r--r--doc/descriptions/snapscan.desc353
-rw-r--r--doc/descriptions/sp15c.desc31
-rw-r--r--doc/descriptions/st400.desc20
-rwxr-xr-xdoc/descriptions/stv680.desc63
-rw-r--r--doc/descriptions/tamarack.desc35
-rw-r--r--doc/descriptions/teco1.desc127
-rw-r--r--doc/descriptions/teco2.desc83
-rw-r--r--doc/descriptions/teco3.desc62
-rw-r--r--doc/descriptions/template.desc.81
-rw-r--r--doc/descriptions/test.desc23
-rw-r--r--doc/descriptions/u12.desc61
-rw-r--r--doc/descriptions/umax.desc382
-rw-r--r--doc/descriptions/umax1220u.desc47
-rw-r--r--doc/descriptions/umax_pp.desc63
-rw-r--r--doc/descriptions/unsupported.desc2778
-rw-r--r--doc/descriptions/v4l.desc25
-rw-r--r--doc/descriptions/xerox_mfp.desc354
-rw-r--r--doc/doxygen-genesys.conf.in1793
-rw-r--r--doc/doxygen-sanei.conf.in1473
-rw-r--r--doc/figs/area.eps126
-rw-r--r--doc/figs/area.fig36
-rw-r--r--doc/figs/flow.eps161
-rw-r--r--doc/figs/flow.fig40
-rw-r--r--doc/figs/hierarchy.eps209
-rw-r--r--doc/figs/hierarchy.fig79
-rw-r--r--doc/figs/image-data.eps178
-rw-r--r--doc/figs/image-data.fig63
-rw-r--r--doc/figs/xfer.eps117
-rw-r--r--doc/figs/xfer.fig32
-rw-r--r--doc/gamma4scanimage.man66
-rw-r--r--doc/gt68xx/gt68xx.CHANGES720
-rw-r--r--doc/gt68xx/gt68xx.TODO105
-rw-r--r--doc/html.sty232
-rw-r--r--doc/icons/contents.gifbin0 -> 225 bytes
-rw-r--r--doc/icons/index.gifbin0 -> 180 bytes
-rw-r--r--doc/icons/next.gifbin0 -> 172 bytes
-rw-r--r--doc/icons/next_gr.gifbin0 -> 172 bytes
-rw-r--r--doc/icons/previous.gifbin0 -> 220 bytes
-rw-r--r--doc/icons/previous_gr.gifbin0 -> 220 bytes
-rw-r--r--doc/icons/references.gifbin0 -> 247 bytes
-rw-r--r--doc/icons/references_gr.gifbin0 -> 247 bytes
-rw-r--r--doc/icons/up.gifbin0 -> 145 bytes
-rw-r--r--doc/icons/up_gr.gifbin0 -> 145 bytes
-rw-r--r--doc/leo/leo.txt141
-rw-r--r--doc/matsushita/matsushita.txt189
-rw-r--r--doc/mustek/mustek.CHANGES995
-rw-r--r--doc/mustek_usb/mustek_usb.CHANGES421
-rw-r--r--doc/mustek_usb/mustek_usb.TODO10
-rw-r--r--doc/mustek_usb2/mustek_usb2.CHANGES137
-rw-r--r--doc/mustek_usb2/mustek_usb2.TODO9
-rw-r--r--doc/net.tex479
-rw-r--r--doc/niash/niash.TODO64
-rw-r--r--doc/plustek/FAQ385
-rw-r--r--doc/plustek/MakeModule.sh116
-rw-r--r--doc/plustek/Makefile.kernel24251
-rw-r--r--doc/plustek/Makefile.kernel26124
-rw-r--r--doc/plustek/Plustek-PARPORT-TODO.txt38
-rw-r--r--doc/plustek/Plustek-PARPORT.changes180
-rw-r--r--doc/plustek/Plustek-PARPORT.txt49
-rw-r--r--doc/plustek/Plustek-USB-TODO.txt53
-rw-r--r--doc/plustek/Plustek-USB.changes307
-rw-r--r--doc/plustek/Plustek-USB.txt457
-rw-r--r--doc/releases.txt81
-rw-r--r--doc/sane-abaton.man126
-rw-r--r--doc/sane-agfafocus.man175
-rw-r--r--doc/sane-apple.man252
-rw-r--r--doc/sane-artec.man178
-rw-r--r--doc/sane-artec_eplus48u.man144
-rw-r--r--doc/sane-as6e.man45
-rw-r--r--doc/sane-avision.man165
-rw-r--r--doc/sane-bh.man547
-rw-r--r--doc/sane-canon.man101
-rw-r--r--doc/sane-canon630u.man106
-rw-r--r--doc/sane-canon_dr.man221
-rw-r--r--doc/sane-canon_pp.man232
-rw-r--r--doc/sane-cardscan.man114
-rw-r--r--doc/sane-config.man51
-rw-r--r--doc/sane-coolscan.man111
-rw-r--r--doc/sane-coolscan2.man182
-rw-r--r--doc/sane-coolscan3.man182
-rw-r--r--doc/sane-dc210.man107
-rw-r--r--doc/sane-dc240.man113
-rw-r--r--doc/sane-dc25.man99
-rw-r--r--doc/sane-dll.man178
-rw-r--r--doc/sane-dmc.man140
-rw-r--r--doc/sane-epjitsu.man109
-rw-r--r--doc/sane-epson.man306
-rw-r--r--doc/sane-epson2.man358
-rw-r--r--doc/sane-find-scanner.man134
-rw-r--r--doc/sane-fujitsu.man236
-rw-r--r--doc/sane-genesys.man304
-rw-r--r--doc/sane-gphoto2.man118
-rw-r--r--doc/sane-gt68xx.man218
-rw-r--r--doc/sane-hp.man273
-rw-r--r--doc/sane-hp3500.man53
-rw-r--r--doc/sane-hp3900.man110
-rw-r--r--doc/sane-hp4200.man105
-rw-r--r--doc/sane-hp5400.man102
-rw-r--r--doc/sane-hp5590.man69
-rw-r--r--doc/sane-hpljm1005.man37
-rw-r--r--doc/sane-hpsj5s.man103
-rw-r--r--doc/sane-hs2p.man120
-rw-r--r--doc/sane-ibm.man88
-rw-r--r--doc/sane-kodak.man142
-rw-r--r--doc/sane-kodakaio.man40
-rw-r--r--doc/sane-kvs1025.man31
-rw-r--r--doc/sane-kvs20xx.man29
-rw-r--r--doc/sane-kvs40xx.man31
-rw-r--r--doc/sane-leo.man157
-rw-r--r--doc/sane-lexmark.man151
-rw-r--r--doc/sane-logo.pngbin0 -> 11367 bytes
-rw-r--r--doc/sane-logo2.jpgbin0 -> 6908 bytes
-rw-r--r--doc/sane-ma1509.man134
-rw-r--r--doc/sane-magicolor.man72
-rw-r--r--doc/sane-matsushita.man169
-rw-r--r--doc/sane-microtek.man194
-rw-r--r--doc/sane-microtek2.man318
-rw-r--r--doc/sane-mustek.man407
-rw-r--r--doc/sane-mustek_pp.man490
-rw-r--r--doc/sane-mustek_usb.man205
-rw-r--r--doc/sane-mustek_usb2.man72
-rw-r--r--doc/sane-nec.man59
-rw-r--r--doc/sane-net.man155
-rw-r--r--doc/sane-niash.man81
-rw-r--r--doc/sane-p5.man160
-rw-r--r--doc/sane-pie.man58
-rw-r--r--doc/sane-pint.man123
-rw-r--r--doc/sane-pixma.man330
-rw-r--r--doc/sane-plustek.man521
-rw-r--r--doc/sane-plustek_pp.man518
-rw-r--r--doc/sane-pnm.man46
-rw-r--r--doc/sane-qcam.man92
-rw-r--r--doc/sane-ricoh.man79
-rw-r--r--doc/sane-rts8891.man159
-rw-r--r--doc/sane-s9036.man71
-rw-r--r--doc/sane-sceptre.man152
-rw-r--r--doc/sane-scsi.man328
-rw-r--r--doc/sane-sharp.man505
-rw-r--r--doc/sane-sm3600.man82
-rw-r--r--doc/sane-sm3840.man95
-rw-r--r--doc/sane-snapscan.man111
-rw-r--r--doc/sane-sp15c.man77
-rw-r--r--doc/sane-st400.man146
-rw-r--r--doc/sane-stv680.man176
-rw-r--r--doc/sane-tamarack.man80
-rw-r--r--doc/sane-teco1.man197
-rw-r--r--doc/sane-teco2.man229
-rw-r--r--doc/sane-teco3.man154
-rw-r--r--doc/sane-test.man324
-rw-r--r--doc/sane-u12.man184
-rw-r--r--doc/sane-umax.man276
-rw-r--r--doc/sane-umax1220u.man116
-rw-r--r--doc/sane-umax_pp.man302
-rw-r--r--doc/sane-usb.man149
-rw-r--r--doc/sane-v4l.man91
-rw-r--r--doc/sane-xerox_mfp.man85
-rw-r--r--doc/sane.man928
-rw-r--r--doc/sane.pngbin0 -> 10753 bytes
-rw-r--r--doc/sane.tex1894
-rw-r--r--doc/saned.man325
-rw-r--r--doc/scanimage.man482
-rw-r--r--doc/sceptre/s1200.txt109
-rw-r--r--doc/teco/teco1.txt193
-rw-r--r--doc/teco/teco2.txt267
-rw-r--r--doc/teco/teco3.txt166
-rw-r--r--doc/u12/U12.changes36
-rw-r--r--doc/u12/U12.todo12
-rw-r--r--doc/umax/negative-types.txt15
-rw-r--r--doc/umax/sane-logo.jpgbin0 -> 6908 bytes
-rw-r--r--doc/umax/sane-umax-advanced-options-doc.html178
-rw-r--r--doc/umax/sane-umax-advanced.jpgbin0 -> 16348 bytes
-rw-r--r--doc/umax/sane-umax-astra-doc.html580
-rw-r--r--doc/umax/sane-umax-config-doc.html431
-rw-r--r--doc/umax/sane-umax-doc.html85
-rw-r--r--doc/umax/sane-umax-histogram.jpgbin0 -> 26069 bytes
-rw-r--r--doc/umax/sane-umax-mirage-doc.html281
-rw-r--r--doc/umax/sane-umax-not-listed-doc.html107
-rw-r--r--doc/umax/sane-umax-others-doc.html239
-rw-r--r--doc/umax/sane-umax-parport-doc.html95
-rw-r--r--doc/umax/sane-umax-powerlook-doc.html539
-rw-r--r--doc/umax/sane-umax-scanner-clones-doc.html1054
-rw-r--r--doc/umax/sane-umax-speed-doc.html509
-rw-r--r--doc/umax/sane-umax-standard-options-doc.html274
-rw-r--r--doc/umax/sane-umax-standard.jpgbin0 -> 15587 bytes
-rw-r--r--doc/umax/sane-umax-text.jpgbin0 -> 2546 bytes
-rw-r--r--doc/umax/sane-umax-text2.jpgbin0 -> 1615 bytes
-rw-r--r--doc/umax/sane-umax-text4.jpgbin0 -> 3208 bytes
-rw-r--r--doc/umax/sane-umax-uc-doc.html741
-rw-r--r--doc/umax/sane-umax-vista-doc.html701
-rw-r--r--doc/umax/sane-umax.jpgbin0 -> 24206 bytes
-rw-r--r--doc/umax/umax.BUGS12
-rw-r--r--doc/umax/umax.CHANGES1172
-rw-r--r--doc/umax/umax.FAQ147
-rw-r--r--doc/umax/umax.TODO22
295 files changed, 59984 insertions, 0 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..12ec658
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,315 @@
+## Makefile.am -- an automake template for Makefile.in file
+## Copyright (C) 2009 Chris Bagwell and Sane Developers.
+##
+## This file is part of the "Sane" build infra-structure. See
+## included LICENSE file for license information.
+
+man1_MANS = scanimage.1 sane-config.1 sane-find-scanner.1 gamma4scanimage.1
+EXTRA_DIST = scanimage.man sane-config.man sane-find-scanner.man \
+ gamma4scanimage.man
+
+# Create a list of man pages for only backends that are compiled in so
+# that is all that gets installed. Also, build a complete list of all
+# backend man pages. This allows a user to optionally generate all
+# man pages in HTML form for things like posting to a web site.
+#
+# Backend man pages bypass standard automake man5_MANS because there is not
+# a man page for every supported backend. We could get rid of
+# custom install/uninstall if we required man pages for every backend.
+BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
+BACKEND_5MANS = sane-abaton.5 sane-agfafocus.5 sane-apple.5 sane-as6e.5 \
+ sane-dll.5 sane-dc25.5 sane-dmc.5 sane-epson.5 sane-epson2.5 \
+ sane-hp.5 sane-gphoto2.5 sane-leo.5 sane-lexmark.5 \
+ sane-matsushita.5 sane-microtek.5 sane-microtek2.5 sane-mustek.5 \
+ sane-nec.5 sane-net.5 sane-pie.5 sane-pint.5 sane-pnm.5 \
+ sane-umax.5 sane-qcam.5 sane-scsi.5 sane-artec.5 sane-kodak.5 sane-kodakaio.5 \
+ sane-fujitsu.5 sane-sharp.5 sane-s9036.5 sane-tamarack.5 \
+ sane-ricoh.5 sane-avision.5 sane-plustek.5 sane-st400.5 \
+ sane-mustek_pp.5 sane-dc210.5 sane-v4l.5 sane-snapscan.5 \
+ sane-canon.5 sane-coolscan.5 sane-bh.5 sane-dc240.5 \
+ sane-umax_pp.5 sane-umax1220u.5 sane-sm3600.5 sane-usb.5 \
+ sane-mustek_usb.5 sane-sceptre.5 sane-canon_pp.5 sane-canon630u.5 \
+ sane-teco1.5 sane-teco2.5 sane-teco3.5 sane-test.5 sane-sp15c.5 \
+ sane-coolscan2.5 sane-hpsj5s.5 sane-gt68xx.5 sane-artec_eplus48u.5 \
+ sane-ma1509.5 sane-ibm.5 sane-hp5400.5 sane-plustek_pp.5 sane-u12.5 \
+ sane-niash.5 sane-sm3840.5 sane-genesys.5 sane-hp4200.5 \
+ sane-mustek_usb2.5 sane-hp3500.5 sane-pixma.5 sane-stv680.5 \
+ sane-hp5590.5 sane-hpljm1005.5 sane-cardscan.5 sane-hp3900.5 \
+ sane-epjitsu.5 sane-hs2p.5 sane-canon_dr.5 sane-xerox_mfp.5 \
+ sane-rts8891.5 sane-coolscan3.5 sane-kvs1025.5 sane-kvs20xx.5 \
+ sane-kvs40xx.5 sane-p5.5 sane-magicolor.5
+
+EXTRA_DIST += sane-abaton.man sane-agfafocus.man sane-apple.man sane-as6e.man \
+ sane-dll.man sane-dc25.man sane-dmc.man sane-epson.man \
+ sane-epson2.man sane-hp.man sane-gphoto2.man sane-leo.man \
+ sane-lexmark.man sane-matsushita.man sane-microtek.man \
+ sane-microtek2.man sane-mustek.man sane-nec.man sane-net.man \
+ sane-pie.man sane-pint.man sane-pnm.man sane-umax.man \
+ sane-qcam.man sane-scsi.man sane-artec.man sane-fujitsu.man \
+ sane-sharp.man sane-s9036.man sane-tamarack.man sane-kodak.man sane-kodakaio.man\
+ sane-ricoh.man sane-avision.man sane-plustek.man sane-st400.man \
+ sane-mustek_pp.man sane-dc210.man sane-v4l.man sane-snapscan.man \
+ sane-canon.man sane-coolscan.man sane-bh.man sane-dc240.man \
+ sane-umax_pp.man sane-umax1220u.man sane-sm3600.man sane-usb.man \
+ sane-mustek_usb.man sane-sceptre.man sane-canon_pp.man \
+ sane-canon630u.man sane-teco1.man sane-teco2.man \
+ sane-teco3.man sane-test.man sane-sp15c.man sane-coolscan2.man \
+ sane-hpsj5s.man sane-gt68xx.man sane-artec_eplus48u.man \
+ sane-ma1509.man sane-ibm.man sane-hp5400.man sane-plustek_pp.man \
+ sane-u12.man sane-niash.man sane-sm3840.man sane-genesys.man \
+ sane-hp4200.man sane-mustek_usb2.man sane-hp3500.man \
+ sane-pixma.man sane-stv680.man sane-hp5590.man sane-hpljm1005.man \
+ sane-cardscan.man sane-hp3900.man sane-epjitsu.man sane-hs2p.man \
+ sane-canon_dr.man sane-xerox_mfp.man sane-rts8891.man \
+ sane-coolscan3.man sane-kvs1025.man sane-kvs20xx.man sane-kvs40xx.man \
+ sane-p5.man sane-magicolor.man
+
+man7_MANS = sane.7
+EXTRA_DIST += sane.man
+
+man8_MANS = saned.8
+EXTRA_DIST += saned.man
+
+MANPAGES = $(man1_MANS) $(BACKEND_5MANS) $(man7_MANS) $(man8_MANS)
+
+if CROSS_COMPILING
+HTML_PAGES =
+else
+HTML_PAGES = sane-backends.html sane-backends-external.html \
+ sane-mfgs.html sane-mfgs-external.html
+endif
+doc_DATA = $(HTML_PAGES)
+
+if USE_LATEX
+STANDARD = sane.ps
+else
+STANDARD =
+endif
+
+all: bemans $(STANDARD) html-pages
+
+dist_doc_DATA = backend-writing.txt
+nobase_dist_doc_DATA = $(BEDOCS)
+doc_DATA += $(STANDARD)
+EXTRA_DIST += descriptions.txt releases.txt sane-logo2.jpg sane-logo.png \
+ sane.png
+
+LATEX = TEXINPUTS="$(srcdir):$$TEXINPUTS" @LATEX@
+DVIPS = @DVIPS@
+MAKEINDEX = @MAKEINDEX@
+DLH = TEXINPUTS="$(srcdir):$$TEXINPUTS" dlh
+MAN2HTML= nroff -c -man |\
+ man2html -compress -topm 6 -botm 6 -nodepage -title $${page} \
+ -cgiurl '$$title.$$section.html'|\
+ sed 's,<BODY>,<BODY BGCOLOR=\#FFFFFF TEXT=\#000000><H1 ALIGN=CENTER><IMG SRC="/images/sane.png" HEIGHT=117 WIDTH=346></H1>,'
+
+%.1 %.5 %.7 %.8: %.man
+ @echo "Generating manpage $@...";
+ @sed -e 's|@DATADIR@|$(datadir)|g' \
+ -e 's|@CONFIGDIR@|$(configdir)|g' \
+ -e 's|@DOCDIR@|$(docdir)|g' \
+ -e 's|@LIBDIR@|$(libdir)/sane|g' \
+ -e 's|@BINDIR@|$(bindir)|g' \
+ -e 's|@SBINDIR@|$(sbindir)|g' \
+ -e 's|@PACKAGEVERSION@|$(package_version)|g' $^ >$@
+
+bemans: $(BACKEND_5MANS)
+
+beman5dir = $(mandir)/man5
+install-beman5: $(BACKEND_5MANS)
+ test -z "$(beman5dir)" || $(MKDIR_P) "$(DESTDIR)$(beman5dir)"
+ @list="$(BACKEND_MANS_ENABLED) sane-dll.5 sane-scsi.5 sane-usb.5"; for man in $$list; do \
+ if test ! -r $${man}; then continue; fi; \
+ echo "installing $${man} in $(beman5dir)/$${man}..."; \
+ $(INSTALL_DATA) $${man} $(DESTDIR)$(beman5dir)/$${man} \
+ || exit 1; \
+ done
+
+BEDOCS = canon/canon.changes canon/canon.install2700F.txt
+BEDOCS += gt68xx/gt68xx.CHANGES gt68xx/gt68xx.TODO
+BEDOCS += leo/leo.txt
+BEDOCS += matsushita/matsushita.txt
+BEDOCS += mustek/mustek.CHANGES
+BEDOCS += mustek_usb/mustek_usb.CHANGES mustek_usb/mustek_usb.TODO
+BEDOCS += mustek_usb2/mustek_usb2.CHANGES mustek_usb2/mustek_usb2.TODO
+BEDOCS += niash/niash.TODO
+BEDOCS += plustek/FAQ plustek/MakeModule.sh plustek/Makefile.kernel24 \
+ plustek/Makefile.kernel26 plustek/Plustek-PARPORT-TODO.txt \
+ plustek/Plustek-PARPORT.changes plustek/Plustek-PARPORT.txt \
+ plustek/Plustek-USB-TODO.txt plustek/Plustek-USB.changes \
+ plustek/Plustek-USB.txt
+BEDOCS += sceptre/s1200.txt
+BEDOCS += teco/teco1.txt teco/teco2.txt teco/teco3.txt
+BEDOCS += u12/U12.changes u12/U12.todo
+BEDOCS += umax/negative-types.txt umax/sane-logo.jpg \
+ umax/sane-umax-advanced-options-doc.html \
+ umax/sane-umax-advanced.jpg umax/sane-umax-astra-doc.html \
+ umax/sane-umax-config-doc.html umax/sane-umax-doc.html \
+ umax/sane-umax-histogram.jpg umax/sane-umax-mirage-doc.html \
+ umax/sane-umax-not-listed-doc.html umax/sane-umax-others-doc.html \
+ umax/sane-umax-parport-doc.html umax/sane-umax-powerlook-doc.html \
+ umax/sane-umax-scanner-clones-doc.html umax/sane-umax-speed-doc.html \
+ umax/sane-umax-standard-options-doc.html \
+ umax/sane-umax-standard.jpg umax/sane-umax-text.jpg \
+ umax/sane-umax-text2.jpg umax/sane-umax-text4.jpg \
+ umax/sane-umax-uc-doc.html umax/sane-umax-vista-doc.html \
+ umax/sane-umax.jpg umax/umax.BUGS umax/umax.CHANGES umax/umax.FAQ \
+ umax/umax.TODO
+
+EXTRA_DIST += sane.tex net.tex html.sty
+
+DESC_FILES = descriptions/abaton.desc descriptions/agfafocus.desc \
+ descriptions/apple.desc descriptions/artec.desc \
+ descriptions/artec_eplus48u.desc descriptions/as6e.desc \
+ descriptions/avision.desc descriptions/bh.desc descriptions/canon630u.desc \
+ descriptions/canon.desc descriptions/canon_dr.desc \
+ descriptions/canon_pp.desc descriptions/cardscan.desc \
+ descriptions/coolscan2.desc descriptions/coolscan.desc \
+ descriptions/coolscan3.desc \
+ descriptions/dc210.desc descriptions/dc240.desc descriptions/dc25.desc \
+ descriptions/dell1600n_net.desc descriptions/dll.desc descriptions/dmc.desc \
+ descriptions/epjitsu.desc descriptions/epson2.desc descriptions/epson.desc \
+ descriptions/fujitsu.desc descriptions/genesys.desc \
+ descriptions/gphoto2.desc descriptions/gt68xx.desc descriptions/hp3500.desc \
+ descriptions/hp3900.desc descriptions/hp4200.desc descriptions/hp5400.desc \
+ descriptions/hp5590.desc descriptions/hp.desc descriptions/hpljm1005.desc \
+ descriptions/hpsj5s.desc descriptions/hs2p.desc descriptions/ibm.desc \
+ descriptions/kodak.desc descriptions/kodakaio.desc descriptions/kvs1025.desc \
+ descriptions/kvs20xx.desc descriptions/kvs40xx.desc \
+ descriptions/leo.desc descriptions/lexmark.desc descriptions/ma1509.desc \
+ descriptions/magicolor.desc \
+ descriptions/matsushita.desc descriptions/microtek2.desc \
+ descriptions/microtek.desc descriptions/mustek.desc \
+ descriptions/mustek_pp.desc descriptions/mustek_usb2.desc \
+ descriptions/mustek_usb.desc descriptions/nec.desc descriptions/net.desc \
+ descriptions/niash.desc descriptions/pie.desc descriptions/pint.desc \
+ descriptions/p5.desc descriptions/pixma.desc descriptions/plustek.desc \
+ descriptions/plustek_pp.desc descriptions/pnm.desc descriptions/qcam.desc \
+ descriptions/ricoh.desc descriptions/rts8891.desc descriptions/s9036.desc \
+ descriptions/sceptre.desc descriptions/sharp.desc descriptions/sm3600.desc \
+ descriptions/sm3840.desc descriptions/snapscan.desc descriptions/sp15c.desc \
+ descriptions/st400.desc descriptions/stv680.desc descriptions/tamarack.desc \
+ descriptions/teco1.desc descriptions/teco2.desc descriptions/teco3.desc \
+ descriptions/test.desc descriptions/u12.desc \
+ descriptions/umax1220u.desc descriptions/umax.desc \
+ descriptions/umax_pp.desc descriptions/unsupported.desc \
+ descriptions/v4l.desc descriptions/xerox_mfp.desc
+EXTRA_DIST += $(DESC_FILES) descriptions/template.desc.
+
+DESC_EXT_FILES = descriptions-external/brother2.desc \
+ descriptions-external/brother.desc \
+ descriptions-external/brother-mfc4600.desc \
+ descriptions-external/canon_mfp.desc \
+ descriptions-external/cs3200f.desc \
+ descriptions-external/epkowa.desc \
+ descriptions-external/geniusvp2.desc \
+ descriptions-external/hp3770.desc \
+ descriptions-external/hp8200.desc \
+ descriptions-external/hpaio.desc \
+ descriptions-external/hpoj.desc \
+ descriptions-external/kodak-twain.desc \
+ descriptions-external/lhii.desc \
+ descriptions-external/mustek_a3p1.desc \
+ descriptions-external/panamfs.desc \
+ descriptions-external/primascan.desc \
+ descriptions-external/primax.desc \
+ descriptions-external/samsung.desc \
+ descriptions-external/scanwit.desc \
+ descriptions-external/v4l2.desc \
+ descriptions-external/viceo.desc
+EXTRA_DIST += $(DESC_EXT_FILES) descriptions-external/template.desc.
+
+EXTRA_DIST += figs/area.eps figs/area.fig figs/flow.eps figs/flow.fig \
+ figs/hierarchy.eps figs/hierarchy.fig figs/image-data.eps \
+ figs/image-data.fig figs/xfer.eps figs/xfer.fig
+
+EXTRA_DIST += icons/contents.gif icons/index.gif icons/next.gif \
+ icons/next_gr.gif icons/previous.gif icons/previous_gr.gif \
+ icons/references.gif icons/references_gr.gif icons/up.gif icons/up_gr.gif
+
+install-data-local: install-beman5
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(beman5dir)/sane-*.5
+
+sane.ind: $(srcdir)/sane.tex
+ @echo Generating index for sane.tex...
+ @touch sane.ind
+ @$(LATEX) $(srcdir)/sane </dev/null >/dev/null && \
+ $(MAKEINDEX) sane.idx 2>/dev/null && \
+ $(LATEX) $(srcdir)/sane </dev/null >/dev/null
+
+sane.dvi: sane.ind
+ @echo Generating sane.dvi from sane.tex...
+ @$(LATEX) $(srcdir)/sane </dev/null >/dev/null
+
+sane.ps: sane.dvi
+ @echo Generating sane.ps from sane.dvi...
+ @$(DVIPS) sane.dvi -o sane.ps 2>/dev/null
+
+sane-html: sane.dvi
+ $(DLH) $(srcdir)/sane.tex
+
+html-man: $(MANPAGES)
+ @for page in $(MANPAGES); do \
+ echo "translating $${page} to $${page}.html..."; \
+ cat $${page} | $(MAN2HTML) > $${page}.html; \
+ done
+
+../tools/sane-desc:
+ cd ../tools ; $(MAKE) sane-desc
+
+sane-backends.html: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-backends-split -s ${srcdir}/descriptions \
+ -i "The following table summarizes the backends/drivers distributed \
+ with $(PACKAGE)-$(VERSION), and the hardware or software they \
+ support." -d 0 > sane-backends.html
+
+sane-backends-external.html: $(DESC_EXT_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-backends-split \
+ -s ${srcdir}/descriptions-external \
+ -i "The following table summarizes the backends/drivers that \
+ have not yet been included in the SANE distribution, and the \
+ hardware or software they support." \
+ -t "SANE: External Backends (Drivers)" -d 0 \
+ > sane-backends-external.html
+
+sane-mfgs.html: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-mfgs -s ${srcdir}/descriptions \
+ -i "The following table summarizes the devices supported \
+ by $(PACKAGE)-$(VERSION)." \
+ -d 0 > sane-mfgs.html
+
+sane-mfgs-external.html: $(DESC_EXT_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-mfgs -s ${srcdir}/descriptions-external \
+ -i "The following table summarizes the devices that \
+ are supported by external backends." \
+ -t "SANE: Devices Supported by External Backends" -d 0 \
+ > sane-mfgs-external.html
+
+descriptions.db: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m ascii -s ${srcdir}/descriptions \
+ > descriptions.db
+
+descriptions-external.db: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m ascii -s ${srcdir}/descriptions-external \
+ > descriptions-external.db
+
+html-pages: $(HTML_PAGES)
+html: html-pages html-man sane-html
+
+clean-local:
+ rm -f *.toc *.aux *.log *.cp *.fn *.tp *.vr *.pg *.ky *.blg *.idx *.cb
+ rm -f *.ilg
+
+distclean-local:
+ rm -f $(MANPAGES)
+ rm -f *.lot *.lof *.ind
+ rm -f sane.dvi sane.ps sane-backends.html sane-backends-external.html
+ rm -f sane-mfgs.html sane-mfgs-external.html
+ rm -f sane/*.html sane/*.gif
+ rm -f doxygen-sanei.conf doxygen-genesys.conf
+ -rm -rf sane sanei-html
+ for manpage in $(MANPAGES) ; do \
+ rm -f $${manpage}.html ; \
+ done
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644
index 0000000..20b8ffb
--- /dev/null
+++ b/doc/Makefile.in
@@ -0,0 +1,1008 @@
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/mkinstalldirs $(srcdir)/doxygen-sanei.conf.in \
+ $(srcdir)/doxygen-genesys.conf.in $(dist_doc_DATA) \
+ $(nobase_dist_doc_DATA)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/byteorder.m4 \
+ $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/include/sane/config.h
+CONFIG_CLEAN_FILES = doxygen-sanei.conf doxygen-genesys.conf
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man7dir)" \
+ "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)" \
+ "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)"
+man7dir = $(mandir)/man7
+man8dir = $(mandir)/man8
+NROFF = nroff
+MANS = $(man1_MANS) $(man7_MANS) $(man8_MANS)
+DATA = $(dist_doc_DATA) $(doc_DATA) $(nobase_dist_doc_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVAHI_CFLAGS = @AVAHI_CFLAGS@
+AVAHI_LIBS = @AVAHI_LIBS@
+AWK = @AWK@
+BACKENDS = @BACKENDS@
+BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
+BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
+
+# Create a list of man pages for only backends that are compiled in so
+# that is all that gets installed. Also, build a complete list of all
+# backend man pages. This allows a user to optionally generate all
+# man pages in HTML form for things like posting to a web site.
+#
+# Backend man pages bypass standard automake man5_MANS because there is not
+# a man page for every supported backend. We could get rid of
+# custom install/uninstall if we required man pages for every backend.
+BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCLEAN_FILES = @DISTCLEAN_FILES@
+DLLTOOL = @DLLTOOL@
+DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+DVIPS = @DVIPS@
+DYNAMIC_FLAG = @DYNAMIC_FLAG@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
+GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
+GPHOTO2_LIBS = @GPHOTO2_LIBS@
+GREP = @GREP@
+HAVE_GPHOTO2 = @HAVE_GPHOTO2@
+IEEE1284_LIBS = @IEEE1284_LIBS@
+INCLUDES = @INCLUDES@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JPEG_LIBS = @JPEG_LIBS@
+LATEX = TEXINPUTS="$(srcdir):$$TEXINPUTS" @LATEX@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBUSB_1_0_CFLAGS = @LIBUSB_1_0_CFLAGS@
+LIBUSB_1_0_LIBS = @LIBUSB_1_0_LIBS@
+LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
+LIBV4L_LIBS = @LIBV4L_LIBS@
+LINKER_RPATH = @LINKER_RPATH@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCKPATH_GROUP = @LOCKPATH_GROUP@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINDEX = @MAKEINDEX@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MATH_LIB = @MATH_LIB@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NUMBER_VERSION = @NUMBER_VERSION@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
+PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+RESMGR_LIBS = @RESMGR_LIBS@
+SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
+SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
+SCSI_LIBS = @SCSI_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
+SOCKET_LIBS = @SOCKET_LIBS@
+STRICT_LDFLAGS = @STRICT_LDFLAGS@
+STRIP = @STRIP@
+SYSLOG_LIBS = @SYSLOG_LIBS@
+SYSTEMD_LIBS = @SYSTEMD_LIBS@
+TIFF_LIBS = @TIFF_LIBS@
+USB_LIBS = @USB_LIBS@
+VERSION = @VERSION@
+V_MAJOR = @V_MAJOR@
+V_MINOR = @V_MINOR@
+V_REV = @V_REV@
+XGETTEXT = @XGETTEXT@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+configdir = @configdir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+effective_target = @effective_target@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+locksanedir = @locksanedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+man1_MANS = scanimage.1 sane-config.1 sane-find-scanner.1 gamma4scanimage.1
+EXTRA_DIST = scanimage.man sane-config.man sane-find-scanner.man \
+ gamma4scanimage.man sane-abaton.man sane-agfafocus.man \
+ sane-apple.man sane-as6e.man sane-dll.man sane-dc25.man \
+ sane-dmc.man sane-epson.man sane-epson2.man sane-hp.man \
+ sane-gphoto2.man sane-leo.man sane-lexmark.man \
+ sane-matsushita.man sane-microtek.man sane-microtek2.man \
+ sane-mustek.man sane-nec.man sane-net.man sane-pie.man \
+ sane-pint.man sane-pnm.man sane-umax.man sane-qcam.man \
+ sane-scsi.man sane-artec.man sane-fujitsu.man sane-sharp.man \
+ sane-s9036.man sane-tamarack.man sane-kodak.man \
+ sane-kodakaio.man sane-ricoh.man sane-avision.man \
+ sane-plustek.man sane-st400.man sane-mustek_pp.man \
+ sane-dc210.man sane-v4l.man sane-snapscan.man sane-canon.man \
+ sane-coolscan.man sane-bh.man sane-dc240.man sane-umax_pp.man \
+ sane-umax1220u.man sane-sm3600.man sane-usb.man \
+ sane-mustek_usb.man sane-sceptre.man sane-canon_pp.man \
+ sane-canon630u.man sane-teco1.man sane-teco2.man \
+ sane-teco3.man sane-test.man sane-sp15c.man sane-coolscan2.man \
+ sane-hpsj5s.man sane-gt68xx.man sane-artec_eplus48u.man \
+ sane-ma1509.man sane-ibm.man sane-hp5400.man \
+ sane-plustek_pp.man sane-u12.man sane-niash.man \
+ sane-sm3840.man sane-genesys.man sane-hp4200.man \
+ sane-mustek_usb2.man sane-hp3500.man sane-pixma.man \
+ sane-stv680.man sane-hp5590.man sane-hpljm1005.man \
+ sane-cardscan.man sane-hp3900.man sane-epjitsu.man \
+ sane-hs2p.man sane-canon_dr.man sane-xerox_mfp.man \
+ sane-rts8891.man sane-coolscan3.man sane-kvs1025.man \
+ sane-kvs20xx.man sane-kvs40xx.man sane-p5.man \
+ sane-magicolor.man sane.man saned.man descriptions.txt \
+ releases.txt sane-logo2.jpg sane-logo.png sane.png sane.tex \
+ net.tex html.sty $(DESC_FILES) descriptions/template.desc. \
+ $(DESC_EXT_FILES) descriptions-external/template.desc. \
+ figs/area.eps figs/area.fig figs/flow.eps figs/flow.fig \
+ figs/hierarchy.eps figs/hierarchy.fig figs/image-data.eps \
+ figs/image-data.fig figs/xfer.eps figs/xfer.fig \
+ icons/contents.gif icons/index.gif icons/next.gif \
+ icons/next_gr.gif icons/previous.gif icons/previous_gr.gif \
+ icons/references.gif icons/references_gr.gif icons/up.gif \
+ icons/up_gr.gif
+BACKEND_5MANS = sane-abaton.5 sane-agfafocus.5 sane-apple.5 sane-as6e.5 \
+ sane-dll.5 sane-dc25.5 sane-dmc.5 sane-epson.5 sane-epson2.5 \
+ sane-hp.5 sane-gphoto2.5 sane-leo.5 sane-lexmark.5 \
+ sane-matsushita.5 sane-microtek.5 sane-microtek2.5 sane-mustek.5 \
+ sane-nec.5 sane-net.5 sane-pie.5 sane-pint.5 sane-pnm.5 \
+ sane-umax.5 sane-qcam.5 sane-scsi.5 sane-artec.5 sane-kodak.5 sane-kodakaio.5 \
+ sane-fujitsu.5 sane-sharp.5 sane-s9036.5 sane-tamarack.5 \
+ sane-ricoh.5 sane-avision.5 sane-plustek.5 sane-st400.5 \
+ sane-mustek_pp.5 sane-dc210.5 sane-v4l.5 sane-snapscan.5 \
+ sane-canon.5 sane-coolscan.5 sane-bh.5 sane-dc240.5 \
+ sane-umax_pp.5 sane-umax1220u.5 sane-sm3600.5 sane-usb.5 \
+ sane-mustek_usb.5 sane-sceptre.5 sane-canon_pp.5 sane-canon630u.5 \
+ sane-teco1.5 sane-teco2.5 sane-teco3.5 sane-test.5 sane-sp15c.5 \
+ sane-coolscan2.5 sane-hpsj5s.5 sane-gt68xx.5 sane-artec_eplus48u.5 \
+ sane-ma1509.5 sane-ibm.5 sane-hp5400.5 sane-plustek_pp.5 sane-u12.5 \
+ sane-niash.5 sane-sm3840.5 sane-genesys.5 sane-hp4200.5 \
+ sane-mustek_usb2.5 sane-hp3500.5 sane-pixma.5 sane-stv680.5 \
+ sane-hp5590.5 sane-hpljm1005.5 sane-cardscan.5 sane-hp3900.5 \
+ sane-epjitsu.5 sane-hs2p.5 sane-canon_dr.5 sane-xerox_mfp.5 \
+ sane-rts8891.5 sane-coolscan3.5 sane-kvs1025.5 sane-kvs20xx.5 \
+ sane-kvs40xx.5 sane-p5.5 sane-magicolor.5
+
+man7_MANS = sane.7
+man8_MANS = saned.8
+MANPAGES = $(man1_MANS) $(BACKEND_5MANS) $(man7_MANS) $(man8_MANS)
+@CROSS_COMPILING_FALSE@HTML_PAGES = sane-backends.html sane-backends-external.html \
+@CROSS_COMPILING_FALSE@ sane-mfgs.html sane-mfgs-external.html
+
+@CROSS_COMPILING_TRUE@HTML_PAGES =
+doc_DATA = $(HTML_PAGES) $(STANDARD)
+@USE_LATEX_FALSE@STANDARD =
+@USE_LATEX_TRUE@STANDARD = sane.ps
+dist_doc_DATA = backend-writing.txt
+nobase_dist_doc_DATA = $(BEDOCS)
+DLH = TEXINPUTS="$(srcdir):$$TEXINPUTS" dlh
+MAN2HTML = nroff -c -man |\
+ man2html -compress -topm 6 -botm 6 -nodepage -title $${page} \
+ -cgiurl '$$title.$$section.html'|\
+ sed 's,<BODY>,<BODY BGCOLOR=\#FFFFFF TEXT=\#000000><H1 ALIGN=CENTER><IMG SRC="/images/sane.png" HEIGHT=117 WIDTH=346></H1>,'
+
+beman5dir = $(mandir)/man5
+BEDOCS = canon/canon.changes canon/canon.install2700F.txt \
+ gt68xx/gt68xx.CHANGES gt68xx/gt68xx.TODO leo/leo.txt \
+ matsushita/matsushita.txt mustek/mustek.CHANGES \
+ mustek_usb/mustek_usb.CHANGES mustek_usb/mustek_usb.TODO \
+ mustek_usb2/mustek_usb2.CHANGES mustek_usb2/mustek_usb2.TODO \
+ niash/niash.TODO plustek/FAQ plustek/MakeModule.sh \
+ plustek/Makefile.kernel24 plustek/Makefile.kernel26 \
+ plustek/Plustek-PARPORT-TODO.txt \
+ plustek/Plustek-PARPORT.changes plustek/Plustek-PARPORT.txt \
+ plustek/Plustek-USB-TODO.txt plustek/Plustek-USB.changes \
+ plustek/Plustek-USB.txt sceptre/s1200.txt teco/teco1.txt \
+ teco/teco2.txt teco/teco3.txt u12/U12.changes u12/U12.todo \
+ umax/negative-types.txt umax/sane-logo.jpg \
+ umax/sane-umax-advanced-options-doc.html \
+ umax/sane-umax-advanced.jpg umax/sane-umax-astra-doc.html \
+ umax/sane-umax-config-doc.html umax/sane-umax-doc.html \
+ umax/sane-umax-histogram.jpg umax/sane-umax-mirage-doc.html \
+ umax/sane-umax-not-listed-doc.html \
+ umax/sane-umax-others-doc.html umax/sane-umax-parport-doc.html \
+ umax/sane-umax-powerlook-doc.html \
+ umax/sane-umax-scanner-clones-doc.html \
+ umax/sane-umax-speed-doc.html \
+ umax/sane-umax-standard-options-doc.html \
+ umax/sane-umax-standard.jpg umax/sane-umax-text.jpg \
+ umax/sane-umax-text2.jpg umax/sane-umax-text4.jpg \
+ umax/sane-umax-uc-doc.html umax/sane-umax-vista-doc.html \
+ umax/sane-umax.jpg umax/umax.BUGS umax/umax.CHANGES \
+ umax/umax.FAQ umax/umax.TODO
+DESC_FILES = descriptions/abaton.desc descriptions/agfafocus.desc \
+ descriptions/apple.desc descriptions/artec.desc \
+ descriptions/artec_eplus48u.desc descriptions/as6e.desc \
+ descriptions/avision.desc descriptions/bh.desc descriptions/canon630u.desc \
+ descriptions/canon.desc descriptions/canon_dr.desc \
+ descriptions/canon_pp.desc descriptions/cardscan.desc \
+ descriptions/coolscan2.desc descriptions/coolscan.desc \
+ descriptions/coolscan3.desc \
+ descriptions/dc210.desc descriptions/dc240.desc descriptions/dc25.desc \
+ descriptions/dell1600n_net.desc descriptions/dll.desc descriptions/dmc.desc \
+ descriptions/epjitsu.desc descriptions/epson2.desc descriptions/epson.desc \
+ descriptions/fujitsu.desc descriptions/genesys.desc \
+ descriptions/gphoto2.desc descriptions/gt68xx.desc descriptions/hp3500.desc \
+ descriptions/hp3900.desc descriptions/hp4200.desc descriptions/hp5400.desc \
+ descriptions/hp5590.desc descriptions/hp.desc descriptions/hpljm1005.desc \
+ descriptions/hpsj5s.desc descriptions/hs2p.desc descriptions/ibm.desc \
+ descriptions/kodak.desc descriptions/kodakaio.desc descriptions/kvs1025.desc \
+ descriptions/kvs20xx.desc descriptions/kvs40xx.desc \
+ descriptions/leo.desc descriptions/lexmark.desc descriptions/ma1509.desc \
+ descriptions/magicolor.desc \
+ descriptions/matsushita.desc descriptions/microtek2.desc \
+ descriptions/microtek.desc descriptions/mustek.desc \
+ descriptions/mustek_pp.desc descriptions/mustek_usb2.desc \
+ descriptions/mustek_usb.desc descriptions/nec.desc descriptions/net.desc \
+ descriptions/niash.desc descriptions/pie.desc descriptions/pint.desc \
+ descriptions/p5.desc descriptions/pixma.desc descriptions/plustek.desc \
+ descriptions/plustek_pp.desc descriptions/pnm.desc descriptions/qcam.desc \
+ descriptions/ricoh.desc descriptions/rts8891.desc descriptions/s9036.desc \
+ descriptions/sceptre.desc descriptions/sharp.desc descriptions/sm3600.desc \
+ descriptions/sm3840.desc descriptions/snapscan.desc descriptions/sp15c.desc \
+ descriptions/st400.desc descriptions/stv680.desc descriptions/tamarack.desc \
+ descriptions/teco1.desc descriptions/teco2.desc descriptions/teco3.desc \
+ descriptions/test.desc descriptions/u12.desc \
+ descriptions/umax1220u.desc descriptions/umax.desc \
+ descriptions/umax_pp.desc descriptions/unsupported.desc \
+ descriptions/v4l.desc descriptions/xerox_mfp.desc
+
+DESC_EXT_FILES = descriptions-external/brother2.desc \
+ descriptions-external/brother.desc \
+ descriptions-external/brother-mfc4600.desc \
+ descriptions-external/canon_mfp.desc \
+ descriptions-external/cs3200f.desc \
+ descriptions-external/epkowa.desc \
+ descriptions-external/geniusvp2.desc \
+ descriptions-external/hp3770.desc \
+ descriptions-external/hp8200.desc \
+ descriptions-external/hpaio.desc \
+ descriptions-external/hpoj.desc \
+ descriptions-external/kodak-twain.desc \
+ descriptions-external/lhii.desc \
+ descriptions-external/mustek_a3p1.desc \
+ descriptions-external/panamfs.desc \
+ descriptions-external/primascan.desc \
+ descriptions-external/primax.desc \
+ descriptions-external/samsung.desc \
+ descriptions-external/scanwit.desc \
+ descriptions-external/v4l2.desc \
+ descriptions-external/viceo.desc
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+doxygen-sanei.conf: $(top_builddir)/config.status $(srcdir)/doxygen-sanei.conf.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+doxygen-genesys.conf: $(top_builddir)/config.status $(srcdir)/doxygen-genesys.conf.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man1: $(man1_MANS)
+ @$(NORMAL_INSTALL)
+ @list1='$(man1_MANS)'; \
+ list2=''; \
+ test -n "$(man1dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.1[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-man7: $(man7_MANS)
+ @$(NORMAL_INSTALL)
+ @list1='$(man7_MANS)'; \
+ list2=''; \
+ test -n "$(man7dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.7[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man7:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man7_MANS)'; test -n "$(man7dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man7dir)'; $(am__uninstall_files_from_dir)
+install-man8: $(man8_MANS)
+ @$(NORMAL_INSTALL)
+ @list1='$(man8_MANS)'; \
+ list2=''; \
+ test -n "$(man8dir)" \
+ && test -n "`echo $$list1$$list2`" \
+ || exit 0; \
+ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
+ { for i in $$list1; do echo "$$i"; done; \
+ if test -n "$$list2"; then \
+ for i in $$list2; do echo "$$i"; done \
+ | sed -n '/\.8[a-z]*$$/p'; \
+ fi; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man8:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man8_MANS)'; test -n "$(man8dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
+install-dist_docDATA: $(dist_doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-dist_docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+install-docDATA: $(doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+ done
+
+uninstall-docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+install-nobase_dist_docDATA: $(nobase_dist_doc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(nobase_dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+ fi; \
+ $(am__nobase_list) | while read dir files; do \
+ xfiles=; for file in $$files; do \
+ if test -f "$$file"; then xfiles="$$xfiles $$file"; \
+ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
+ test -z "$$xfiles" || { \
+ test "x$$dir" = x. || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)/$$dir'"; \
+ $(MKDIR_P) "$(DESTDIR)$(docdir)/$$dir"; }; \
+ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(docdir)/$$dir'"; \
+ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(docdir)/$$dir" || exit $$?; }; \
+ done
+
+uninstall-nobase_dist_docDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(nobase_dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
+ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS) $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-local
+
+dvi: dvi-am
+
+dvi-am:
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-dist_docDATA \
+ install-docDATA install-man install-nobase_dist_docDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1 install-man7 install-man8
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_docDATA uninstall-docDATA uninstall-local \
+ uninstall-man uninstall-nobase_dist_docDATA
+
+uninstall-man: uninstall-man1 uninstall-man7 uninstall-man8
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ clean-local cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distclean-local distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-data-local install-dist_docDATA \
+ install-docDATA install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man1 install-man7 \
+ install-man8 install-nobase_dist_docDATA install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-dist_docDATA uninstall-docDATA \
+ uninstall-local uninstall-man uninstall-man1 uninstall-man7 \
+ uninstall-man8 uninstall-nobase_dist_docDATA
+
+
+all: bemans $(STANDARD) html-pages
+
+%.1 %.5 %.7 %.8: %.man
+ @echo "Generating manpage $@...";
+ @sed -e 's|@DATADIR@|$(datadir)|g' \
+ -e 's|@CONFIGDIR@|$(configdir)|g' \
+ -e 's|@DOCDIR@|$(docdir)|g' \
+ -e 's|@LIBDIR@|$(libdir)/sane|g' \
+ -e 's|@BINDIR@|$(bindir)|g' \
+ -e 's|@SBINDIR@|$(sbindir)|g' \
+ -e 's|@PACKAGEVERSION@|$(package_version)|g' $^ >$@
+
+bemans: $(BACKEND_5MANS)
+install-beman5: $(BACKEND_5MANS)
+ test -z "$(beman5dir)" || $(MKDIR_P) "$(DESTDIR)$(beman5dir)"
+ @list="$(BACKEND_MANS_ENABLED) sane-dll.5 sane-scsi.5 sane-usb.5"; for man in $$list; do \
+ if test ! -r $${man}; then continue; fi; \
+ echo "installing $${man} in $(beman5dir)/$${man}..."; \
+ $(INSTALL_DATA) $${man} $(DESTDIR)$(beman5dir)/$${man} \
+ || exit 1; \
+ done
+
+install-data-local: install-beman5
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(beman5dir)/sane-*.5
+
+sane.ind: $(srcdir)/sane.tex
+ @echo Generating index for sane.tex...
+ @touch sane.ind
+ @$(LATEX) $(srcdir)/sane </dev/null >/dev/null && \
+ $(MAKEINDEX) sane.idx 2>/dev/null && \
+ $(LATEX) $(srcdir)/sane </dev/null >/dev/null
+
+sane.dvi: sane.ind
+ @echo Generating sane.dvi from sane.tex...
+ @$(LATEX) $(srcdir)/sane </dev/null >/dev/null
+
+sane.ps: sane.dvi
+ @echo Generating sane.ps from sane.dvi...
+ @$(DVIPS) sane.dvi -o sane.ps 2>/dev/null
+
+sane-html: sane.dvi
+ $(DLH) $(srcdir)/sane.tex
+
+html-man: $(MANPAGES)
+ @for page in $(MANPAGES); do \
+ echo "translating $${page} to $${page}.html..."; \
+ cat $${page} | $(MAN2HTML) > $${page}.html; \
+ done
+
+../tools/sane-desc:
+ cd ../tools ; $(MAKE) sane-desc
+
+sane-backends.html: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-backends-split -s ${srcdir}/descriptions \
+ -i "The following table summarizes the backends/drivers distributed \
+ with $(PACKAGE)-$(VERSION), and the hardware or software they \
+ support." -d 0 > sane-backends.html
+
+sane-backends-external.html: $(DESC_EXT_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-backends-split \
+ -s ${srcdir}/descriptions-external \
+ -i "The following table summarizes the backends/drivers that \
+ have not yet been included in the SANE distribution, and the \
+ hardware or software they support." \
+ -t "SANE: External Backends (Drivers)" -d 0 \
+ > sane-backends-external.html
+
+sane-mfgs.html: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-mfgs -s ${srcdir}/descriptions \
+ -i "The following table summarizes the devices supported \
+ by $(PACKAGE)-$(VERSION)." \
+ -d 0 > sane-mfgs.html
+
+sane-mfgs-external.html: $(DESC_EXT_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m html-mfgs -s ${srcdir}/descriptions-external \
+ -i "The following table summarizes the devices that \
+ are supported by external backends." \
+ -t "SANE: Devices Supported by External Backends" -d 0 \
+ > sane-mfgs-external.html
+
+descriptions.db: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m ascii -s ${srcdir}/descriptions \
+ > descriptions.db
+
+descriptions-external.db: $(DESC_FILES) ../tools/sane-desc
+ @../tools/sane-desc -m ascii -s ${srcdir}/descriptions-external \
+ > descriptions-external.db
+
+html-pages: $(HTML_PAGES)
+html: html-pages html-man sane-html
+
+clean-local:
+ rm -f *.toc *.aux *.log *.cp *.fn *.tp *.vr *.pg *.ky *.blg *.idx *.cb
+ rm -f *.ilg
+
+distclean-local:
+ rm -f $(MANPAGES)
+ rm -f *.lot *.lof *.ind
+ rm -f sane.dvi sane.ps sane-backends.html sane-backends-external.html
+ rm -f sane-mfgs.html sane-mfgs-external.html
+ rm -f sane/*.html sane/*.gif
+ rm -f doxygen-sanei.conf doxygen-genesys.conf
+ -rm -rf sane sanei-html
+ for manpage in $(MANPAGES) ; do \
+ rm -f $${manpage}.html ; \
+ done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/doc/backend-writing.txt b/doc/backend-writing.txt
new file mode 100644
index 0000000..7b49041
--- /dev/null
+++ b/doc/backend-writing.txt
@@ -0,0 +1,500 @@
+2006-01-01
+
+Here are a few rules and tips that should help writing a
+SANE-conforming backend and including it into the SANE package:
+
+
+GETTING STARTED
+---------------
+
+* You will need information about the protocol the scanner (or other image
+ application device) is using. The easiest way is to ask the manufacturer
+ about it. You should mention that the code will be open-source, however.
+
+* Read the SANE standard.
+
+* One approach is to write a stand-alone scanning program first. Debugging
+ this program is usually easier than using the SANE libraries. However, keep
+ in mind what you learned from the SANE standard.
+
+* Once your program works basically, insert its functions into a basically
+ empty SANE backend. You can get one by removing everything but the SANE
+ includes and SANE API function definitions from an existing backend (e.g.
+ test.c).
+
+* If you have any information about the scanner you want to support that
+ is not already mentioned in one of the .desc files, please contact the
+ sane-devel mailing list. Especially if you have written code (e.g. a test
+ program) or started writing a backend, contact us.
+
+* Keep other users informed about what you did and want to do. This way no
+ work is done twice and you may get volunteers for coding or testing.
+ Set up a website or at least write to sane-devel. If you have a website,
+ a link to it can be included in the .desc file and users looking for that
+ scanner will find it on the SANE website.
+
+* When you have a working backend but you don't want to have it included
+ in the SANE distribution yet, at least the .desc file can be included
+ (see below for details). So people will find a link to your backend at
+ the SANE webpage.
+
+
+CONFIGURATION AND BUILD SYSTEM
+------------------------------
+
+Sane-backends uses the autoconf and automake tools. The configure script is
+generated from configure.in and aclocal.m4 by running "autoreconf".
+Simple checks (e.g. for headers) should be placed into configure.in while
+for more complex stuff acinclude.m4 is the right file. After changes in one
+of these files, "autoreconf" should be called. This will then call a
+chain of autotools, such as autoconf to generate configure, autoheader
+to generate include/sane/config.h.in, and automake to generate various
+Makefile.in's from Makefile.am's. All changes made by "autoreconf" must
+be commited together.
+
+When running configure, the Makefiles in the main and sub-directories are
+created from their respective Makefile.in files. Also include/sane/config.h
+which is included into to every c file is created from its .in file.
+
+Running "make" runs the respective targets in the sub directories recursively.
+
+The Makefile.am in each directory contains lists of files which are part of the
+distribution and which are therefore copied to the tar.gz archive, when a
+release is made. It's important that newly added files are also added to
+a variable that will cause them to be distributed (EXTRA_DIST at a minimum).
+
+For creating binaries and libraries libtool is used. The ltmain.sh script
+contains special modifications for SANE. These modifications ensure that
+the soname of each SANE backend library is "libsane.so". Without this
+change, backend libraries (like "libsane-epson.so") could not used as
+on-the-fly replacement for the dll backend.
+
+DIRECTORY OVERVIEW
+------------------
+
+This chapter explains some details about the files and directories used in the
+sane-backends distribution.
+
+sane-backends/
+ * acinclude.m4 aclocal.m4 compile config.guess config.sub configure
+ configure.in depcomp install-sh ltmain.sh Makefile.am Makefile.in missing
+ mkinstalldirs: Part of the build system as explained above.
+ * ChangeLog:
+ The ChangeLog contains all the changes made since the last stable release.
+ If anything is changed in git, it must be also mentioned in ChangeLog.
+ It's not enough to write just a git commit message, as users won't have
+ access to these messages. For more details on the format, see the SANE
+ git page on the website.
+ * ChangeLog-1.0.0, ChangeLog-1.0.1 (...):
+ These files contain the ChangeLogs of older releases. Once a new release has
+ been made, the current ChangeLog renamed to ChangeLog-1.something.something
+ and a new empty ChangeLog is created.
+ * AUTHORS COPYING INSTALL LICENSE:
+ General documentation + license.
+ * NEWS:
+ This is some kind of executive summary of the ChangeLog. It will be created
+ before a release.
+ * PROBLEMS:
+ General (severe) problems that all SANE users should be
+ aware. Backend-specific trouble should normally not mentioned there.
+ * PROJECTS:
+ Planned SANE-related development (e.g. ports, frontends). New backends won't
+ be listed here but a new .desc file will be created for them (see below).
+ * README:
+ General building instructions.
+ * README.aix README.beos (...):
+ Platform-dependent building and usage instructions.
+ * sane-backends.lsm:
+ The .lsm file as used for the ibiblio archive.
+
+sane-backends/backend/
+ This is where the actual backend code is placed. As an example the file
+ structure for a backend named "newbackend" is listed below. Backend names must
+ be unique and should not contain any special characters. Lower case letters,
+ numbers and underscores "_" are ok.
+ Backend documentation of any kind should not be placed here but in the doc/
+ directory. Code which is useful for more than one backend should be placed in
+ sanei/ instead.
+ * newbackend.c:
+ The main backend file, usually contains the SANE API code. Mandatory.
+ * newbackend.h:
+ Header file, containing includes and so on.
+ * newbackend.conf.in:
+ Configuration file for the backend, newbackend.conf will be created by
+ running "make" from this file. Some variables are substituted, e.g. for
+ installation directories. This is especially useful for firmware
+ directories. See Makefile.am for a list.
+ * newbackend-low.c:
+ Contains low level code for the "newbackend" backend. Depending on the
+ complexity of the backend, splitting it to several files can be appropriate,
+ the total number of files shouldn't exceed approx. 10, however.
+ Other files:
+ * Makefile.am, Makefile.in:
+ Makefile.am contains rather complex rules for building the backends. For
+ adding backends, special care should be taken concerning the FIRMWARE_DIRS
+ (add your backend name here, if your scanner needs firmware files) and
+ other variables (see build system description). There is some
+ documentation inside of Makefile.am on what needs to be added and where.
+ At a minimum, a convenience library of form lib${backend}.la and
+ a installed library libsane-${backend}.la must be defined. Any
+ sanei objects referenced should be listed in a
+ libsane_${backend}_la_LIBADD line.
+ * sane_strstatus.c:
+ Contains the code for the sane_strstatus() function to avoid code
+ duplication in every backend.
+
+sane-backends/doc/
+ Documentation for SANE. For some more details, see chapter DOCUMENTATION
+ below. Again an example for "newbackend":
+ * sane-newbackend.man:
+ The manual page of the backend. From this file, "sane-newbackend.5" is
+ generated by running "make".
+ * newbackend/ (directory)
+ Contains additional information about newbackend, e.g. READMEs or TODO
+ files.
+ General files:
+ * Makefile.in:
+ "sane-newbackend.5" must be added to variable BACKEND_5MANS and
+ "sane-newbackend.man" to EXTRA_DIST. A backend documentation directory
+ (if used) must be added to the BEDOCS variable.
+ * backend-writing.txt:
+ This file.
+ * descriptions.txt:
+ Describes the format of .desc files.
+ * doxygen-sanei.conf.in:
+ Used by doxygen to create the documentation of the sanei code.
+ * releases.txt:
+ Explains how to make releases of sane-backends.
+ * sane.tex, net.tex:
+ Contains the LaTeX source of the SANE standard.
+ * descriptions/ (directory)
+ Contains the .desc files for every backend that is included into
+ sane-backends.
+ * descriptions-external/ (directory)
+ Contains the .desc files for backend that are not included into
+ sane-backends yet (external backends). These files should only be created
+ if the code it points to is really a SANE backend (and not just a command
+ line program).
+
+sane-backends/frontend/
+ Contains the frontends scanimage, saned, and tstbackend.
+
+sane-backends/include/
+ Header files used by the SANE backends. The main directory contains the
+ headers used for general librar functions like getopt, while the
+ SANE-specific headers are located in include/sane/:
+ * config.h.in:
+ Main header file needed for portablility. config.h is created from this
+ file and must be included by every backend.
+ * sane.h:
+ Official SANE API header file. Don't change this without discussion on
+ the sane-devel mailing list.
+ * saneopts.h:
+ Defines several option NAMEs, TITLEs and DESCs that are (or should be)
+ used by several backends.
+ * sanei_*:
+ Sanei (SANE internal) headers. Needed for code used in several backends
+ like USB access. For more details, see the documentaion on the SANE website.
+
+sane-backends/japi/
+ Contains Java interface for SANE. See README.JAVA for details.
+
+sane-backends/lib/
+ Contains various library functions that may miss in the standard C library
+ of some platforms.
+
+sane-backends/po/
+ Translations of SANEbackend options. See README for details.
+
+sane-backends/sanei/
+ Sanei (SANE internal) code. Needed for code used in several backends
+ like USB access. For more details, see the documentaion on the SANE
+ website.
+
+sane-backends/testsuite/
+ Testsuite for SANE. See README for details.
+
+sane-backends/tools/
+ Contains several tools for SANE. There are backend-specific and general command line
+ tools as well as the hotplug support and .desc file generation code. See
+ README for details.
+
+
+PROGRAMMING
+-----------
+
+* A backend library is always only one file (libsane-backendname.so). Please do
+ not use multiple libraries e.g. for lower and higher level code.
+
+* To add the backend to the existing SANE code, the following must be done at
+ least:
+ - add the backend name to ALL_BACKENDS in configure.in (and run autoreconf)
+ - Add new backend to BACKEND_CONFS, be_convenience_libs, be_dlopen_libs,
+ and define _lib${backend}_la_SOURCES and
+ nodist_libsane_${backend}_la_SOURCES; using an existing backend as
+ a template. Any sanei reference code should be listed in
+ libsane_${backend}_la_LIBADD as well as any external libraries
+ required to resolve all symbols.
+ - Add the source code files to the backend/ directories. All file names
+ must start with the backend name (e.g. newbackend.c, newbackend.h and
+ newbackend-usb.c).
+
+* Please follow the GNU coding standards. It's clear that the style
+ outlined there is nobody's favorite, but it's much easier to
+ maintain SANE if everybody follows more or less the same coding
+ style. It also looks more professional. The GNU standards can be
+ found at:
+
+ http://www.gnu.org/prep/standards_toc.html
+ ftp://ftp.gnu.org/pub/gnu/standards/standards.text
+
+ Note that GNU emacs supports automatic indentation according to this
+ standard. The command "indent -gnu" can be used to reformat
+ existing sources according to this standard.
+
+* Please be courteous to programmer's with terminals that are 80
+ characters wide. It's not difficult to avoid long lines, so please
+ do so. Note that in ANSI C you can split long strings into pieces
+ separated by white space. For example,
+ "this is an awfully long string" can be written as "this is an "
+ "awfully long string".
+
+* Use only ANSI C for your backend. C99 is not supported by the compilers of
+ some older platforms so please avoid using its features.
+
+* Please do not depend on compiler specific features or, if you do, make
+ the dependency conditional so other compilers will still be able to
+ compile the files. In particular:
+
+ - do not use C++ style comments (//-line comments)
+
+ - do not declare dynamically sized automatic arrays; instead,
+ use alloca() after including "../include/lalloca.h". For example:
+
+ void
+ func (int n)
+ {
+ char buf[n];
+ }
+
+ should be re-written as:
+
+ #ifdef _AIX
+ # include "../include/lalloca.h" /* MUST come first for AIX! */
+ #endif
+
+ #include "../include/sane/config.h"
+ #include "../include/lalloca.h"
+ :
+ void
+ func (int n)
+ {
+ char *buf = alloca (n);
+ }
+ - Don't use any #pragma directives---they're completely
+ compiler-dependent.
+
+* If you use headers or libraries that may not be available on all systems,
+ write a check for configure.in and include it conditionally. If your backend
+ depends on these libraries or headers, compile the backend only if they are
+ available (see pint for an example).
+
+* Use #include ".../include/sane/..." to include the sane header files
+ instead of #include <sane/...>. Otherwise problems with different installed
+ SANE versions may occur. Also this makes clear that the local files are used.
+
+* Don't forget to #include ".../include/sane/config.h" in your backend before
+ any other includes. This must be done for any .c file that generates its own
+ object file. If you use lalloca.h see above for the correct includes.
+
+* Include sanei_backend.h after the other includes.
+
+* It's no longer necessary to #define PATH_MAX (now in sanei_backend.h).
+ If you define it, do so *after* the system includes.
+
+* Please use sanei functions whenever possible (e.g.
+ sanei_config_read()). This makes porting to other os/platforms much
+ easier. Most of these functions are documented in their respective
+ header files in include/sane/sanei_*.h. For most of them there is also
+ documentation in doxygen format: http://www.sane-project.org/sanei/. These
+ HTML pages can be generated by calling "doxygen sanei-doxygen.conf" in
+ the doc/ directory.
+
+* Initialize global variables explicitly in sane_init. Keep in mind that
+ sane_init can be called more than once (if sane_exit is called everytime
+ after sane_init). Therefore don't depend on automatic initialization to
+ 0 / NULL.
+
+* Do make sure that your code is byte-order independent. This is
+ particularly important for networking-related code and when dealing
+ with non-textual data files.
+
+* Don't use printf, fprintf or perror to output debug or error messages.
+ Use the DBG macro instead. If your backend can't detect a scanner for
+ whatever reason it shouldn't output anything as long as
+ SANE_DEBUG_BACKENDNAME isn't set. So don't use DBG(0, ...) in this case.
+
+* Please do not assume that `size_t' is `unsigned int'. On some
+ systems, it's `unsigned long' and the size of this type may be
+ bigger than that of an int (this is true for practically any of the
+ 64-bit systems). To print a variable of type size_t portably, cast
+ the variable to u_long and print it with the %lu specifier. E.g.:
+
+ size_t len;
+
+ DBG(3, "len=%lu\n", (u_long) len);
+
+* Please do not assume that `void *' has the same size as `int'. On some
+ systems, it's `long' and the size of this type may be bigger than that of
+ an int (this is true for practically any of the 64-bit systems). Where this
+ comes up is with opaque handles. For example:
+
+ int OpaqueHandle;
+ MyScanner *s = (MyScanner *)OpaqueHandle;
+
+ will FAIL on most 64 bit systems. Please use `void *' or better
+ `SANE_Handle'.
+
+* Don't use exit() in your backend. You will exit the whole program, not only
+ your backend.
+
+* If you use wait() or waitpid() in your backend, check its return value. This
+ is important, if the status value is checked for e.g. WIFEXITED after the
+ call of wait() or waitpid(). Both functions may fail if the frontend already
+ did a wait for the children.
+
+* Please try to avoid compilation warnings. At least with "--disable-warnings"
+ there shouldn't be warnings when compiling backends. It's not necessary to
+ fix every "unused parameter" warning but take care that no warnings pointing
+ to really existing problems or ambiguities are missed. Some programming
+ techniques generating warnings on gcc may lead to errors on other systems.
+
+* To support translation of SANE options, please mark the descriptions (desc)
+ and title of options with SANE_I18N() and add all files using SANE_I18N() to
+ po/POTFILES. See po/README for details.
+
+* Please check for TL_X < BR_X and TL_Y < BR_Y to avoid segfaults or even
+ scanner damage. This should NOT be done in sane_control_option, it should
+ be possible to temporary set TL_X > BR_X or TL_ > BR, otherwise it is hard
+ for a frontend to set the correct values.
+
+
+TESTING
+-------
+
+* Please test a backend with "scanimage -T" (plus other options,
+ as appropriate/necessary) as this will make sure that sane_read()
+ always returns the correct amount of data etc.
+
+* You can also test a backend with tstbackend. tstbackend is not
+ compiled nor installed by default. To do that, cd into frontend and
+ run "make tstbackend".
+
+* Please test a backend not just with scanimage and xscanimage
+ (+ other frontends), but also with saned. Based on past experience,
+ it is often the case that remote scanning can uncover subtle bugs.
+ Note that you don't have to use two different machines to test "remote"
+ scanning---you can use one and the same machine to test a backend via saned
+ (just be sure to enable the "net" backend in dll.conf and follow the
+ steps described in saned(8)).
+
+* Please test on every available platform/os. Even if no scanner is attached
+ to this system, test compilation and running scanimage. If you don't have
+ access to other platforms, ask sane-devel.
+
+* Please make sure that all global symbols exported from a SANE backend start
+ with the prefix "sane" or "sanei" to avoid clashes with exported symbols
+ of other backends. Only symbols mentioned in the SANE standard should start
+ with "sane_*". Make sure, the sanei_* symbols are unique, e.g. by using
+ sanei_backendname_*. Only export symbols that are absolutely necessary.
+ You can verify this by running GNU "nm" on the static library. For example:
+
+ nm -g backend/.libs/libsane-hp.a
+
+ would list all global symbols in the HP backend.
+
+ "./configure; make; make libcheck" in the sane-backends root directory
+ will name all backend libraries, that contain "illegal" symbols.
+
+DOCUMENTATION
+-------------
+
+* Even if you haven't written a man-page for your backend yet, you *must*
+ create a .desc file which describes it. Anytime you submit source code for
+ your backend, you should include an update to the .desc file which reflects
+ the new state of the backend. The .desc files are used to create the HTML
+ lists of supported devices. These lists are updated automatically when you
+ change a .desc file in git. See e.g.
+ http://www.sane-project.org/lists/sane-mfgs-cvs.html for the results.
+
+* The .desc files are located in the directories "doc/descriptions" and
+ "doc/descriptions-external" (for included and external backends).
+
+* "doc/descriptions.txt" describes the format of the ".desc" files. There is
+ also a template for new .desc files: "template.desc.". The format of the
+ files in the two directories is very similar. If you'd like to try parsing
+ your creation to recreate the sane-backends webpages, cd into "tools/" and
+ enter "make sane-desc". You can either use sane-desc directly (try
+ "./sane-desc -h") or use "make html-pages" in "doc/".
+
+* For external backends, you don't need to supply :manpage and :version. The
+ manpage link won't work anyway and version will be outdated soon.
+
+* When your backend is included in the SANE distribution, add an entry to
+ doc/sane.man, AUTHORS and sane-backends.lsm. The sane.man entry should point
+ to your documentation (man-page, website, readme). Also move your .desc
+ file from "doc/descriptions-external" to "doc/descriptions" and update
+ them.
+
+* In your manual page (backend.man), use @LIBDIR@ and the other macros for
+ path names to the libraries, config files and documentation. Don't use fixed
+ paths as they will be wrong if SANE is installed with a different prefix
+ (e.g. /usr instead of /usr/local).
+
+* If you want to include READMEs, HTML files or other documentation, please
+ create your own directory (doc/backendname) and store your files in this
+ directory. If you only have a manual page a subdirectory isn't necessary.
+
+* Please keep your manpages and .desc files up-to-date especially regarding
+ version numbers.
+
+
+CHECKLIST: SUBMITTING A NEW BACKEND
+-----------------------------------
+
+In sane-backends/
+* Add the author(s) name(s) to AUTHORS
+* Correct any related entries in the bug-tracking system
+
+In sane-backends/backend/
+* Use the command "indent -gnu" to reformat your code according to the
+ standard.
+* Add the backend name to dll.conf
+* Check that the SANE license is in the backend source files.
+* Add the source file names and the .conf file
+ to BACKEND_CONFS in Makefile.am
+
+In sane-backends/doc/
+* Add an entry for the man page in sane.man
+* Add the man page file in doc/Makefile.in
+* Move the description file from descriptions-external/ to doc/descriptions/
+* Check that the description file is correct: "cd doc; make html-pages" and
+ check the html pages result with a browser.
+* Check that the backend version is the same in the source and in the
+ description file.
+
+In sane-backends/po/
+* Add all files using SANE_I18N() to po/POTFILES
+
+
+INCLUDING INTO git
+------------------
+
+* If you want to include your backend into SANE's git tree use the latest git
+ to make patches. Check the mailing list and the bug-tracking system for
+ information about bugs to avoid.
+
+* If your backend isn't included yet in the SANE's git tree, write an email to
+ the SANE mailing list (sane-devel) and ask for inclusion. Usually one
+ of the developers will check the backend for common mistakes and test
+ compilation. If everything is ok the backend will be added to the git tree.
diff --git a/doc/canon/canon.changes b/doc/canon/canon.changes
new file mode 100644
index 0000000..30eb6e9
--- /dev/null
+++ b/doc/canon/canon.changes
@@ -0,0 +1,42 @@
+
+Version 991108:
+
+* Negative mask removal. This is a major change. Negatives get scanned
+ *a lot* better now, meaning that you get good-looking colors.
+
+* Select native scanning resolutions, contributed by Stefan Scherer
+ <stefan_scherer@sepp.de>.
+
+* Support for Automatic Document Feeder (ADF), contributed by Jonathan Adams
+ <jadams@saiman.demon.co.uk>.
+
+* Corrected some namings of variables which caused problems when using the
+ backend with 'xsane' or with the command-line 'scanimage'. I have not tested
+ it myself with 'xsane' yet.
+
+* For your information, and because some users had problems with the previous
+ versions and some kernels, I use kernel 2.2.12 and have SCSI support as
+ modules (the modules which I have to load before using the scanner are
+ scsi_mod, aha152x and sg).
+
+
+===========================================================================
+
+
+Version 990201:
+
+* New code for the transparency unit by Markus Mertinat.
+
+* "Manual focus" was there, but I had not noticed that it didn't really work.
+ Now it does.
+
+* Changed the names of some options, because xscanimage worked ok,
+ but not scanimage.
+
+* When using high resolutions, "Auto Exposure" for slides is now much faster
+ because it sets the resolution down first.
+
+* I have included a new directory containing scripts I find useful.
+
+
+
diff --git a/doc/canon/canon.install2700F.txt b/doc/canon/canon.install2700F.txt
new file mode 100644
index 0000000..923a6d4
--- /dev/null
+++ b/doc/canon/canon.install2700F.txt
@@ -0,0 +1,135 @@
+
+-----------------------------------------------------------------------
+How to install a CanoScan 2700F on a Linux box ?
+by Stephan Hegel <ea273@fen.baynet.de>.
+Date: Fri Jan 15 16:13:15 MEZ 1999
+-----------------------------------------------------------------------
+
+Here is a short description on how to install the CanoScan 2700F film and
+slide scanner on a Linux box. Actually it was just written as a reminder
+for myself but I think it is a good idea to add it to Manuel Panea's
+Canon backend package. Please remember that there is NO GUARANTEE that
+this step by step instruction works also for you.
+Corrections and suggestions are welcome, of course. Thank you.
+
+
+1. How to install an Adaptec AVA-1502AP ?
+-----------------------------------------
+
+ The AVA-1502AP is is a small ISA Adaptec SCSI controller which is
+ shipped with the CanoScan slide scanner. Per default is has the
+ address 0x140, the IRQ 10 and the SCSI host id 7. Check first for
+ conflicts with your already existing hardware.
+
+ Install the controller into the computer.
+
+ After starting the BIOS should detect the board as a PNP board.
+ Boot the computer with the "SCSISelect" disk which is shipped with
+ the scanner to check that the controller is detected. Don't change
+ any settings except address, IRQ or SCSI id if necessary.
+
+ Configure a new Linux kernel (version 2.0.30 or newer) with:
+ SCSI Support (yes)
+ SCSI Generic support (yes)
+ Low level driver for aha152x (yes)
+ Note: here you can try to compile the SCSI support as modules as
+ long as you don't boot the computer from a SCSI disk. But this
+ is not tested.
+
+ Compile and install the new Linux kernel.
+
+ Add "aha152x=0x140,10,7" to the "append" line to the already existing
+ kernel parameters in lilo.conf, e.g:
+ -------------------
+ # Linux bootable partition config begins
+ image = /vmlinuz
+ root = /dev/hdc1
+ label = linux
+ append = "sbpcd=0x230,SoundBlaster aha152x=0x140,10,7"
+ # Linux bootable partition config ends
+ -------------------
+
+ Invoke lilo to activate the changes.
+
+ Reboot the computer and watch the boot messages. The SCSI host
+ adapter should be there now.
+
+
+2. How to connect the scanner ?
+------------------------------
+
+ Shutdown and turn off the computer, connect the scanner with the SCSI
+ cable to the SCSI adapter. Set the SCSI Id with the turn-switch at
+ the back of the scanner body. I'm using SCSI Id 1 with "termination
+ on" since the scanner is the one and only device connected to my host
+ adapter.
+
+ Turn on the scanner first and wait for a few second. The scanner
+ performs a short self test.
+
+ Turn on the computer.
+
+ Watch the boot messages, there should be a message indicating that
+ the SCSI host adapter and the scanner are there.
+
+ Now you can check again that the scanner device is there:
+ cat /proc/scsi/scsi
+ Should print something like that:
+ Host: scsi0 Channel: 00 Id: 01 Lun: 00
+ Vendor: CANON Model: IX-27015C Rev: 1.17
+ Type: Scanner ANSI SCSI revision: 02
+
+
+3. How to install SANE for the Canon 2700 film scanner ?
+--------------------------------------------------------
+
+ Fetch the latest SANE distribution from the SANE homepage at:
+ http://www.sane-project.org/
+
+ Unpack and configure it.
+
+ Get the latest canon backend from Manuel's homepage:
+ http://www.rzg.mpg.de/~mpd/sane
+
+ Put the files in the sane/backend directory as described in the
+ README of the package. This overwrites the existing canon.* files
+ with the latest version of these files.
+
+ Compile and install SANE.
+
+ Add the "canon" scanner to the /usr/local/etc/sane.d/dll.conf file:
+ -------- cut here ------------
+ # enable the next line if you want to allow access through the network:
+ #net
+ pnm
+ #mustek
+ #hp
+ #qcam
+ #umax
+ canon
+ -------- cut here ------------
+
+ Add a "canon.conf" file to the /usr/local/etc/sane.d directory:
+ -------- cut here ------------
+ scsi CANON
+ -------- cut here ------------
+
+ Check the available scanners:
+ scanimage -L
+ This should give something like this:
+ device `canon:/dev/sg0' is a CANON IX-27015C film scanner
+ device `pnm:0' is a Noname PNM file reader virtual device
+ device `pnm:1' is a Noname PNM file reader virtual device
+
+ Invoke the frontend:
+ xscanimage &
+ NOTE: The "xscanimage" frontend is in the SANE distribution. There
+ is also another SANE frontend available which is called "xsane" by
+ Oliver Rauch. It is still under heavy development and can be grabbed
+ from:
+ http://www.wolfsburg.de/~rauch
+
+ A dialog box appears, select the canon scanner and here we go ...
+ Happy scanning !!!
+
+-----------------------------------------------------------------------
diff --git a/doc/descriptions-external/brother-mfc4600.desc b/doc/descriptions-external/brother-mfc4600.desc
new file mode 100644
index 0000000..1d57e47
--- /dev/null
+++ b/doc/descriptions-external/brother-mfc4600.desc
@@ -0,0 +1,37 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "brother-mfc4600" ; name of backend
+;:version "0.42" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://sourceforge.net/projects/brother-mfc"
+;:comment ""
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Brother"
+:url "http://www.brother.com/"
+
+:model "MFC 4600"
+:status :basic
+:url "http://sourceforge.net/projects/brother-mfc"
+:interface "USB"
+:usbid "0x04f9" "0x0111"
+:comment "Only USB version of this scanner is supported. Please report how well it works. See link."
+
+
+
diff --git a/doc/descriptions-external/brother.desc b/doc/descriptions-external/brother.desc
new file mode 100644
index 0000000..e875a4c
--- /dev/null
+++ b/doc/descriptions-external/brother.desc
@@ -0,0 +1,409 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "brother" ; name of backend
+;:version "1.0.0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://solutions.brother.com/linux/sol/printer/linux/sane_drivers.html" ; backend's web page
+:comment "External backend made by brother. As this software contains non-free parts, it can't be included into SANE. If you can't find your model here, please have a look at the brother website which contains the latest list."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Brother" ; name a manufacturer
+:url "http://www.brother.com/" ; manufacturer's URL
+;:comment ""
+ ; comment about the manufacturer
+
+;data taken from Brother website and Brsane.ini
+
+
+:model "DCP-1000"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0112"
+:comment "No report yet."
+
+:model "DCP-1000J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0153"
+:comment "No report yet."
+
+:model "DCP-1400"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0116"
+:comment "No report yet."
+
+:model "DCP-3020C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x014c"
+:comment "No report yet."
+
+:model "DCP-4020C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0144"
+:comment "No report yet."
+
+:model "DCP-8020"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0140"
+:comment "No report yet."
+
+:model "DCP-8025D"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0141"
+
+:model "DCP-8025J"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x014f"
+:comment "No report yet."
+
+:model "DCP-8040"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x015d"
+:comment "No report yet."
+
+:model "DCP-8045D"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x015e"
+
+:model "DCP-8060"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x01a3"
+
+:model "FAX1800C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0126"
+:comment "No report yet."
+
+:model "FAX1815C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x014d"
+:comment "No report yet."
+
+:model "FAX1820C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0147"
+:comment "No report yet."
+
+:model "FAX1920CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0149"
+:comment "No report yet."
+
+:model "FAX-2850"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0123"
+:comment "No report yet."
+
+:model "FAX-2900"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0117"
+:comment "No report yet."
+
+:model "FAX-3800"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0118"
+:comment "No report yet."
+
+:model "FAX-4100"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x012e"
+:comment "No report yet."
+
+:model "FAX-4750e"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x012f"
+:comment "No report yet."
+
+:model "FAX-5750e"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0130"
+:comment "No report yet."
+
+
+:model "MFC-100"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0135"
+:comment "No report yet."
+
+:model "MFC-150CL"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0136"
+:comment "No report yet."
+
+:model "MFC-3100C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x010e"
+:comment "No report yet."
+
+:model "MFC-3200C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x013a"
+:comment "No report yet."
+
+:model "MFC-3220C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0146"
+:comment "No report yet."
+
+:model "MFC-3320CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0148"
+:comment "No report yet."
+
+:model "MFC-3420C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x014a"
+
+:model "MFC-3420J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0157"
+:comment "No report yet."
+
+:model "MFC-3820CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x014b"
+:comment "No report yet."
+
+:model "MFC-3820J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0158"
+:comment "No report yet."
+
+:model "MFC-3820CN"
+:status :good
+:interface "USB network"
+;:usbid "0x04f9" "0x014b"
+:comment "Network connection is reported to work."
+
+:model "MFC-4420C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x013e"
+:comment "No report yet."
+
+:model "MFC-4800"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0110"
+
+:model "MFC-4800J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0124"
+:comment "No report yet."
+
+:model "MFC-4820C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x013f"
+
+:model "MFC-5100C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x010f"
+
+:model "MFC-5100J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0122"
+:comment "No report yet."
+
+:model "MFC-5200C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0132"
+
+:model "MFC-5200J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x013d"
+:comment "No report yet."
+
+:model "MFC-580"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0120"
+
+:model "MFC-590"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0121"
+
+:model "MFC-6800"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0111"
+:comment "No report yet."
+
+:model "MFC-6800J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0125"
+:comment "No report yet."
+
+:model "MFC-8210"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0151"
+:comment "No report yet."
+
+:model "MFC-8220"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0150"
+:comment "No report yet."
+
+:model "MFC-8420"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0142"
+
+:model "MFC-8440"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x015f"
+
+:model "MFC-8500"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0113"
+:comment "No report yet."
+
+:model "MFC-8500J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0128"
+:comment "No report yet."
+
+:model "MFC-8820D"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0143"
+
+:model "MFC-8820J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x014e"
+:comment "No report yet."
+
+:model "MFC-8840D"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0160"
+
+:model "MFC-890"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x013c"
+
+:model "MFC-9030"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x012b"
+:comment "No report yet."
+
+:model "MFC-9070"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x011d"
+:comment "No report yet."
+
+:model "MFC-9160"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x011f"
+:comment "Is reported to work well with backend version 0.0.12."
+
+:model "MFC-9180"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x011e"
+:comment "Reported to work well under openSUSE 10.2."
+
+:model "MFC-9660"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0119"
+:comment "No report yet."
+
+:model "MFC-9700"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0114"
+:comment "No report yet."
+
+:model "MFC-9760"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x011c"
+:comment "No report yet."
+
+:model "MFC-9800"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0115"
+:comment "No report yet."
+
+:model "MFC-9800J"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0127"
+:comment "No report yet."
+
+:model "MFC-9860"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x011a"
+:comment "No report yet."
+
+:model "MFC-9880"
+:status :unsupported
+:interface "USB"
+:usbid "0x04f9" "0x011b"
+:comment "There is a report that this scanner does not work with the brother backend (I/O errors)"
+
diff --git a/doc/descriptions-external/brother2.desc b/doc/descriptions-external/brother2.desc
new file mode 100644
index 0000000..adda1e3
--- /dev/null
+++ b/doc/descriptions-external/brother2.desc
@@ -0,0 +1,235 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "brother2" ; name of backend
+;:version "1.0.0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://solutions.brother.com/linux/sol/printer/linux/sane_drivers.html" ; backend's web page
+:comment "External backend made by brother. As this software contains non-free parts, it can't be included into SANE. If you can't find your model here, please have a look at the brother website which contains the latest list."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Brother" ; name a manufacturer
+:url "http://www.brother.com/" ; manufacturer's URL
+;:comment ""
+ ; comment about the manufacturer
+
+;data taken from Brother website and Brsane2.ini
+
+:model "DCP-110C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0169"
+
+:model "DCP-115C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x018c"
+
+:model "DCP-116C"
+:status :untested
+:interface "USB"
+;:usbid "0x04f9" "0x018c"
+:comment "No report yet."
+
+:model "DCP-117C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x018e"
+
+:model "DCP-120C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0190"
+
+:model "DCP-310CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x016b"
+:comment "No report yet."
+
+:model "DCP-315CN"
+:status :untested
+:interface "USB network"
+;:usbid "0x04f9" ""
+:comment "No report yet."
+
+:model "DCP-330C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x01a9"
+:comment "No report yet."
+
+:model "DCP-340CW"
+:status :untested
+:interface "USB"
+;:usbid "0x04f9" ""
+:comment "No report yet."
+
+:model "DCP-7010"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0182"
+
+:model "DCP-7020"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0183"
+:comment "No report yet."
+
+:model "DCP-7025"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0184"
+
+:model "MFC-210C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0161"
+
+:model "MFC-215C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0193"
+:comment "brscan2-0.0.2 necessary"
+
+:model "MFC-240C"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x01ab"
+:comment "Reportedly working."
+
+:model "MFC-3240C"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0173"
+:comment "No report yet."
+
+:model "MFC-3340CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0174"
+:comment "No report yet."
+
+:model "MFC-410CN"
+:status :basic
+:interface "USB network"
+:usbid "0x04f9" "0x0163"
+:comment "Sometimes hangs and refuses to scan. A simple power off/on switch will fix things."
+
+:model "MFC-420CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0162"
+:comment "No report yet."
+
+:model "MFC-425CN"
+:status :untested
+:interface "USB network"
+;:usbid "0x04f9" ""
+:comment "No report yet."
+
+:model "MFC-5440CN"
+:status :good
+:interface "USB network"
+:usbid "0x04f9" "0x016d"
+
+:model "MFC-5840CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x016e"
+:comment "No report yet."
+
+;only in ini
+:model "MFC-610CLN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0166"
+:comment "No report yet."
+
+;only in ini
+:model "MFC-610CLN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0168"
+:comment "No report yet."
+
+:model "MFC-620CN"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0165"
+:comment "No report yet."
+
+:model "MFC-640CW"
+:status :untested
+:interface "USB"
+;:usbid "0x04f9" ""
+:comment "No report yet."
+
+:model "MFC-7220"
+:status :untested
+:interface "USB"
+:usbid "0x04f9" "0x0185"
+:comment "No report yet."
+
+:model "MFC-7225N"
+:status :untested
+:interface "USB network"
+:usbid "0x04f9" "0x0186"
+:comment "No report yet."
+
+:model "MFC-7420"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x0180"
+:comment "No report yet."
+
+:model "MFC-7820N"
+:status :good
+:interface "USB network"
+:usbid "0x04f9" "0x0181"
+:comment "Network connection reported to work."
+
+:model "MFC-7840W"
+:status :good
+:interface "USB"
+:usbid "0x04f9" "0x01e5"
+:comment "Reported to work with brscan3 driver."
+
+:model "MFC-820CW"
+:status :untested
+:interface "USB"
+;:usbid "0x04f9" "0x0180"
+:comment "No report yet."
+
+:model "MFC-8460N"
+:status :untested
+:interface "USB"
+;:usbid "0x04f9" "0x0180"
+:comment "No report yet."
+
+:model "MFC-8860DN"
+:status :untested
+:interface "USB"
+;:usbid "0x04f9" "0x0180"
+:comment "No report yet."
+
+:model "MFC-9420CN"
+:status :untested
+:interface "USB network"
+;:usbid "0x04f9" ""
+:comment "No report yet."
diff --git a/doc/descriptions-external/canon_mfp.desc b/doc/descriptions-external/canon_mfp.desc
new file mode 100644
index 0000000..e181d53
--- /dev/null
+++ b/doc/descriptions-external/canon_mfp.desc
@@ -0,0 +1,73 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "canon_mfp" ; name of backend
+;:version "1.0.0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://cweb.canon.jp/drv-upd/bj/other.html#linux";
+:url "http://support-asia.canon-asia.com/";
+:comment "External backend made by canon. As this software contains non-free parts, it can't be included into SANE. If you can't find your model here, please have a look at the canon website which contains the latest list."
+:comment "Note: these backend are designed by Canon and are part of their proprietary scanning software. They may not work at all with SANE, or with SANE frontends."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Canon" ; name a manufacturer
+:url "http://www.canon.com/" ; manufacturer's URL
+;:comment ""
+ ; comment about the manufacturer
+
+:model "MP140"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x172b"
+:comment "No report yet."
+
+:model "MP160"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x1714"
+:comment "No report yet."
+
+:model "MP210"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x1721"
+:comment "No report yet."
+
+:model "MP510"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x1717"
+:comment "No report yet."
+
+:model "MP520"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x1724"
+:comment "No report yet."
+
+:model "MP600"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x1718"
+:comment "No report yet."
+
+:model "MP610"
+:status :untested
+:interface "USB"
+:usbid "0x04a9" "0x1725"
+:comment "Could not have it working with SANE."
diff --git a/doc/descriptions-external/cs3200f.desc b/doc/descriptions-external/cs3200f.desc
new file mode 100644
index 0000000..b734d02
--- /dev/null
+++ b/doc/descriptions-external/cs3200f.desc
@@ -0,0 +1,34 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "cs3200f" ; name of backend
+;:version "0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-cs3200f" ; name of manpage (if it exists)
+;:url "http://www.luser.com/temp/" ; backend's web page
+:comment "Backend is in experimental CVS"
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Canon"
+:url "http://www.canon.com/"
+
+:model "CanoScan 3200F"
+:url "/unsupported/canon-3200f.html"
+:interface "USB"
+:usbid "0x04a9" "0x2216"
+:status :minimal
+:comment "Backend is in experimental CVS."
diff --git a/doc/descriptions-external/epkowa.desc b/doc/descriptions-external/epkowa.desc
new file mode 100644
index 0000000..55f4eb2
--- /dev/null
+++ b/doc/descriptions-external/epkowa.desc
@@ -0,0 +1,3124 @@
+;;; epkowa.desc -*- emacs-lisp -*- (eh, sort of)
+;;; Copyright (C) 2004--2013 Olaf Meeuwissen
+;;;
+;;; This file is part of the "Image Scan!" documentation.
+;;;
+;;; The "Image Scan!" documentation is free software.
+;;; You can redistribute it and/or modify it under the terms of the GNU
+;;; General Public License as published by the Free Software Foundation;
+;;; either version 2 of the License or at your option any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of FITNESS
+;;; FOR A PARTICULAR PURPOSE or MERCHANTABILITY.
+;;; See the GNU General Public License for more details.
+;;;
+;;; You should have received a verbatim copy of the GNU General Public
+;;; License along with this program; if not, write to:
+;;;
+;;; Free Software Foundation, Inc.
+;;; 59 Temple Place, Suite 330
+;;; Boston, MA 02111-1307 USA
+
+;;; This list of devices has been compiled using the following sources:
+;;;
+;;; * iscan-data-$version (see :version field below)
+;;; * iscan-2.24.0/NEWS
+;;; * iscan-2.24.0/backend/usb (since moved to iscan-data)
+;;; * sane-backends/backend/epson_usb.c (CVS 1.18)
+;;; * sane-backends/doc/descriptions/epson.desc (CVS 1.26)
+;;; * http://www.freecolormanagement.com/sane/supported.html
+;;; * http://www.sane-project.org/lists/sane-mfgs-cvs.html#Z-EPSON
+;;; * http://www.epsondevelopers.com/
+;;; * http://www.epson.com/ (several representative countries)
+;;; * http://www.i-love-epson.co.jp/
+;;; * messages on the sane-devel and LinuxPrinting.org epson-list
+;;; mailing lists
+;;;
+;;; Some of the above sources may have moved or may no longer exist.
+
+;; Backend data.
+;;
+:backend "epkowa"
+:version "iscan 2.29.1/iscan-data 1.23.0"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+
+;; Device and manufacturer information.
+;;
+:devicetype :scanner
+:mfg "EPSON"
+:url "http://www.epson.com/"
+:comment ""
+
+; SEIKO EPSON CORPORATION's marketing division divides the world in
+; Japan and several overseas regions. The same scanner is marketed
+; under different names in the various regions. I have assumed the
+; Japan-centric point of view that the scanner names for the models
+; marketed in Japan are "canonical". All the other model names are
+; considered overseas.
+
+; I have marked the models for which I have been able to download a
+; product specification with an indication of the site.
+;
+; JP = http://www.i-love-epson.co.jp/ (in Japanese)
+;
+; All command specs were downloaded from www.epsondevelopers.com.
+;
+; Note that the above location may have moved, may no longer exist
+; or no longer provide (unfettered) access to the specifications.
+
+; For the :comment sections I have tried to stick to the following
+; ordering
+;
+; - support limitations
+; - additional requirements
+; - other backends that claim support
+; - correspondence to other models
+
+
+;; List of EPSON scanners and all-in-ones.
+;;
+
+:model "Actionscanner II"
+:interface "parallel SCSI"
+:status :good
+:comment "overseas version of the GT-5000"
+
+:model "AcuLaser CX11"
+:interface "USB"
+:usbid "0x04b8" "0x0815"
+:status :good
+:comment "overseas version of the LP-A500"
+
+:model "AcuLaser CX11NF"
+:interface "USB"
+:usbid "0x04b8" "0x0815"
+:status :good
+:comment "network interface not supported<br>AcuLaser CX11 with network interface and fax"
+
+:model "AcuLaser CX21"
+:interface "USB"
+:usbid "0x04b8" "0x0835"
+:status :good
+:comment "network interface not supported"
+
+:model "AcuLaser MX20DN"
+:interface "USB"
+:usbid "0x04b8" "0x0866"
+:status :complete
+:comment "network interface not supported<br>business all-in-one"
+
+:model "AcuLaser MX20DNF"
+:interface "USB"
+:usbid "0x04b8" "0x0866"
+:status :complete
+:comment "network interface not supported<br>business all-in-one"
+
+:model "AcuLaser MX21DNF"
+:interface "USB"
+:usbid "0x04b8" "0x0866"
+:status :complete
+:comment "network interface not supported<br>business all-in-one"
+
+:model "Artisan 635"
+:interface "USB"
+:usbid "0x04b8" "0x0878"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-704A"
+
+:model "Artisan 700"
+:interface "USB"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the EP-801A"
+
+:model "Artisan 710 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-802A"
+
+:model "Artisan 725"
+:interface "USB"
+:usbid "0x04b8" "0x0861"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-803A"
+
+:model "Artisan 730 Series"
+:interface "USB"
+:usbid "0x04b8" "0x087b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-804A"
+
+:model "Artisan 800"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the EP-901A"
+
+:model "Artisan 810 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0853"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-902A"
+
+:model "Artisan 835"
+:interface "USB"
+:usbid "0x04b8" "0x0860"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-903A"
+
+:model "Artisan 837"
+:interface "USB"
+:usbid "0x04b8" "0x0879"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-904F"
+
+:model "CC-500L" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010d"
+:status :unsupported
+:comment "all-in-one"
+
+:model "CC-550L" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011a"
+:status :unsupported
+:comment "all-in-one"
+
+:model "CC-570L" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+:comment "all-in-one"
+
+:model "CC-600PX" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+:comment "all-in-one"
+
+:model "CC-700" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0108"
+:status :unsupported
+:comment "all-in-one"
+
+:model "DS-30"
+:interface "USB"
+:usbid "0x04b8" "0x0147"
+:status :complete
+:comment "requires DFSG non-free iscan-plugin-ds-30"
+
+:model "EP-702A"
+:interface "USB"
+:usbid "0x04b8" "0x0850"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-703A"
+:interface "USB"
+:usbid "0x04b8" "0x0862"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-704A"
+:interface "USB"
+:usbid "0x04b8" "0x0878"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-705A"
+:interface "USB"
+:usbid "0x04b8" "0x089f"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-774A"
+:interface "USB"
+:usbid "0x04b8" "0x0893"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-775A"
+:interface "USB"
+:usbid "0x04b8" "0x089e"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-775AW"
+:interface "USB"
+:usbid "0x04b8" "0x089e"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-801A"
+:interface "USB"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "EP-802A"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-803A"
+:interface "USB"
+:usbid "0x04b8" "0x0861"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-803AW"
+:interface "USB"
+:usbid "0x04b8" "0x0861"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-804A"
+:interface "USB"
+:usbid "0x04b8" "0x087b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-804AR"
+:interface "USB"
+:usbid "0x04b8" "0x087b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-804AW"
+:interface "USB"
+:usbid "0x04b8" "0x087b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-805A"
+:interface "USB"
+:usbid "0x04b8" "0x089c"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-805AR"
+:interface "USB"
+:usbid "0x04b8" "0x089c"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-805AW"
+:interface "USB"
+:usbid "0x04b8" "0x089c"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-901A"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "EP-901F"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "EP-902A"
+:interface "USB"
+:usbid "0x04b8" "0x0853"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-903A"
+:interface "USB"
+:usbid "0x04b8" "0x0860"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-903F"
+:interface "USB"
+:usbid "0x04b8" "0x0860"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-904A"
+:interface "USB"
+:usbid "0x04b8" "0x0879"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-904F"
+:interface "USB"
+:usbid "0x04b8" "0x0879"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-905A"
+:interface "USB"
+:usbid "0x04b8" "0x089b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "EP-905F"
+:interface "USB"
+:usbid "0x04b8" "0x089a"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ES-300C"
+:interface "SCSI parallel"
+:status :good
+:comment "overseas version of the GT-6000"
+
+:model "ES-300GS"
+:interface "SCSI"
+:status :good
+
+:model "ES-600C"
+:interface "parallel"
+:status :good
+:comment "overseas version of the GT-5400"
+
+:model "ES-800C"
+:interface "SCSI"
+:status :good
+:comment "overseas version of the GT-8000"
+
+:model "ES-1000C"
+:status :unsupported
+:comment "overseas version of the GT-8500"
+
+:model "ES-1200C"
+:interface "parallel"
+:status :good
+:comment "overseas version of the GT-9000"
+
+:model "ES-2000" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0107"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "ES-2200" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010e"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "ES-6000" ; product spec (JP)
+:interface "SCSI"
+:status :good
+
+:model "ES-6000H" ; product spec (JP)
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-6000HS" ; product spec (JP)
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-7000H" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0126"
+:status :good
+:comment "network interface unsupported<br>IEEE1394 untested"
+
+:model "ES-8000"
+:interface "SCSI"
+:status :untested
+
+:model "ES-8500" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0109"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-9000H" ; product spec (JP)
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-10000G" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0129"
+:status :good
+:comment "network interface unsupported<br>IEEE1394 untested"
+
+:model "ES-D200"
+:interface "USB"
+:usbid "0x04b8" "0x0137"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80"
+
+:model "ES-D350"
+:interface "USB"
+:usbid "0x04b8" "0x0144"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80"
+
+:model "ES-D400"
+:interface "USB"
+:usbid "0x04b8" "0x0136"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80"
+
+:model "ES-G11000"
+:interface "USB"
+:usbid "0x04b8" "0x014b"
+:status :good
+
+:model "ES-H300"
+:interface "USB"
+:usbid "0x04b8" "0x012b"
+:status :good
+:comment "network interface not supported"
+
+:model "ES-H7200"
+:interface "USB Ethernet"
+:usbid "0x04b8" "0x0138"
+:status :good
+:comment "network interface supported via DFSG non-free iscan-network-nt package"
+
+:model "Expression 636"
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-9500"
+
+:model "Expression 800" ; command spec
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-9600"
+:scsi "EPSON" "Expression800" "processor"
+
+:model "Expression 836XL" ; command spec
+:interface "SCSI"
+:status :untested
+:comment "overseas version of the ES-8000"
+
+:model "Expression 1600" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0107"
+:status :complete
+:comment "IEEE1394 untested<br>overseas version of the ES-2000"
+
+:model "Expression 1640XL" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0109"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-8500"
+
+:model "Expression 1680" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010e"
+:status :complete
+:comment "IEEE1394 untested<br>overseas version of the ES-2200"
+
+:model "Expression 1680 Pro"
+:interface "SCSI USB"
+:status :untested
+:comment "IEEE1394 option"
+
+:model "Expression 1680XL Pro"
+:interface "SCSI USB"
+:status :untested
+
+:model "Expression 10000XL" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0129"
+:status :good
+:comment "network interface not supported<br>IEEE1394 untested<br>overseas version of the ES-10000G"
+
+:model "Expression 10000XL Graphic Arts"
+:interface "USB IEEE1394"
+:status :untested
+:comment "network interface not supported"
+
+:model "Expression 10000XL Photo"
+:interface "USB IEEE1394"
+:status :untested
+:comment "network interface not supported"
+
+:model "Expression 11000XL"
+:interface "USB"
+:usbid "0x04b8" "0x014b"
+:status :good
+:comment "overseas version of the ES-G11000"
+
+:model "F-3200" ; product spec (JP)
+:interface "USB IEEE1394"
+:usbid "0x04b8" "0x080a"
+:status :unsupported
+:comment "Film scanner"
+
+:model "F-3200 Photo"
+:interface "USB IEEE1394"
+:status :unsupported
+
+:model "FilmScan 200"
+:interface "SCSI"
+:status :unsupported
+:comment "A better backend for the FilmScan 200 can be found at <A HREF=\"http://www.vjet.demon.co.uk/scanner/\">http://www.vjet.demon.co.uk/scanner/</A>."
+:url "http://www.vjet.demon.co.uk/scanner/"
+
+:model "GT-1500"
+:interface "USB"
+:usbid "0x04b8" "0x0133"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-1500<br>overseas version of the GT-D1000"
+
+:model "GT-2200"
+:interface "USB"
+:usbid "0x04b8" "0x0102"
+:status :unsupported
+
+:model "GT-2500"
+:interface "USB"
+:usbid "0x04b8" "0x012b"
+:status :good
+:comment "network interface not supported<br>overseas version of the ES-H300"
+
+:model "GT-4000"
+:status :untested
+
+:model "GT-5000"
+:interface "parallel SCSI"
+:status :good
+
+:model "GT-5400"
+:interface "parallel"
+:status :good
+
+:model "GT-5500"
+:interface "SCSI"
+:status :good
+
+:model "GT-6000"
+:interface "SCSI Parport"
+:status :good
+
+:model "GT-6500"
+:interface "parallel"
+:status :good
+:comment "overseas version of the GT-5400"
+
+:model "GT-6600U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0103"
+:status :complete
+
+:model "GT-6700U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010c"
+:status :complete
+
+:model "GT-7000S"
+:interface "SCSI"
+:status :complete
+:scsi "EPSON" "SCANNER GT-7000" "processor"
+
+:model "GT-7000U"
+:interface "USB"
+:usbid "0x04b8" "0x0101"
+:status :complete
+
+:model "GT-7200U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-7200<br>also supported by the plustek backend"
+
+:model "GT-7300U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-7300<br>also supported by the plustek backend"
+
+:model "GT-7400U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0120"
+:status :unsupported
+:comment "supported by the snapscan backend"
+
+:model "GT-7600S" ; product spec (JP)
+:interface "SCSI"
+:status :complete
+:comment "SCSI version of the GT-7600U"
+
+:model "GT-7600U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "USB version of the GT-7600S"
+
+:model "GT-7600UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "GT-7600U with TPU option bundled"
+
+:model "GT-7700U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010b"
+:status :complete
+
+:model "GT-8000"
+:interface "SCSI"
+:status :good
+
+:model "GT-8200U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :complete
+
+:model "GT-8200UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :good
+
+:model "GT-8300UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011e"
+:status :complete
+
+:model "GT-8400UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :unsupported
+
+:model "GT-8500"
+:status :untested
+
+:model "GT-8700" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :complete
+
+:model "GT-8700F" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :good
+:comment "GT-8700U with TPU option bundled"
+
+:model "GT-9000"
+:interface "parallel"
+:status :good
+
+:model "GT-9300UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011b"
+:status :complete
+
+:model "GT-9400UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0116"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-9400"
+
+:model "GT-9500"
+:interface "SCSI"
+:status :complete
+
+:model "GT-9600"
+:interface "SCSI"
+:status :complete
+
+:model "GT-9700F" ; product spec (JP)
+:interface "USB IEEE1394"
+:usbid "0x04b8" "0x0112"
+:scsi "EPSON" "GT-9700" "processor"
+:status :complete
+
+:model "GT-9800F" ; product spec (JP)
+:interface "USB IEEE1394"
+:usbid "0x04b8" "0x011c"
+:scsi "EPSON" "GT-9800" "processor"
+:status :complete
+
+:model "GT-10000"
+:interface "SCSI"
+:status :good
+:comment "overseas version of the ES-6000"
+
+:model "GT-10000+" ; command spec
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-6000H"
+
+:model "GT-12000"
+:interface "SCSI"
+:status :untested
+:comment "overseas version of the ES-8000"
+
+:model "GT-15000" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0126"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-7000H"
+
+:model "GT-20000"
+:interface "USB Ethernet"
+:usbid "0x04b8" "0x0138"
+:status :good
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>overseas version of the ES-H7200"
+
+:model "GT-30000" ; command spec
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-9000H"
+
+:model "GT-D1000"
+:interface "USB"
+:usbid "0x04b8" "0x0133"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-1500"
+
+:model "GT-F500" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :good
+:comment "multi photo feeder not supported<br>requires DFSG non-free iscan-plugin-gt-f500<br>also supported by the snapscan backend"
+
+:model "GT-F520"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :good
+:comment "multi photo feeder not supported<br>requires DFSG non-free iscan-plugin-gt-f520<br>also supported by the snapscan backend"
+
+:model "GT-F550" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :good
+:comment "auto film loader not supported<br>requires DFSG non-free iscan-plugin-gt-f500<br>also supported by the snapscan backend"
+
+:model "GT-F570"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :good
+:comment "auto film loader not supported<br>requires DFSG non-free iscan-plugin-gt-f520<br>also supported by the snapscan backend"
+
+:model "GT-F600" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0118"
+:status :good
+:comment "only scans up to 2400dpi<br>requires DFSG non-free iscan-plugin-gt-f600"
+
+:model "GT-F650"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-s600<br>GT-S600 with TPU"
+
+:model "GT-F670"
+:interface "USB"
+:usbid "0x04b8" "0x012e"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-f670"
+
+:model "GT-F700"
+:interface "USB"
+:usbid "0x04b8" "0x012f"
+:status :good
+:comment "auto film loader not supported<br>requires DFSG non-free iscan-plugin-gt-f700"
+
+:model "GT-F720"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-f720<br>GT-S620 with TPU"
+
+:model "GT-F730"
+:interface "USB"
+:usbid "0x04b8" "0x0142"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-perfection-v330<br>GT-S630 with TPU"
+
+:model "GT-F740"
+:interface "USB"
+:usbid "0x04b8" "0x014a"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-perfection-v370<br>GT-S640 with TPU"
+
+:model "GT-S50"
+:interface "USB"
+:usbid "0x04b8" "0x0137"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80<br>overseas version of the ES-D200"
+
+:model "GT-S55"
+:interface "USB"
+:usbid "0x04b8" "0x0143"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80"
+
+:model "GT-S80"
+:interface "USB"
+:usbid "0x04b8" "0x0136"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80<br>overseas version of the ES-D400"
+
+:model "GT-S85"
+:interface "USB"
+:usbid "0x04b8" "0x0144"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-s80"
+
+:model "GT-S600"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-s600"
+
+:model "GT-S620"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-f720"
+
+:model "GT-S630"
+:interface "USB"
+:usbid "0x04b8" "0x0142"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-perfection-v330"
+
+:model "GT-S640"
+:interface "USB"
+:usbid "0x04b8" "0x014a"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-perfection-v370"
+
+:model "GT-X700" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0128"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "GT-X750"
+:interface "USB"
+:usbid "0x04b8" "0x0119"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-x750"
+
+:model "GT-X770"
+:interface "USB"
+:usbid "0x04b8" "0x0130"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-x770"
+
+:model "GT-X800" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x012a"
+:status :complete
+:comment "film area guide mode not supported<br>IEEE1394 untested"
+
+:model "GT-X820"
+:interface "USB"
+:usbid "0x04b8" "0x013a"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-x820"
+
+:model "GT-X900"
+:interface "USB"
+:usbid "0x04b8" "0x012c"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "GT-X970"
+:interface "USB"
+:usbid "0x04b8" "0x0135"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "K200 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0871"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "K300 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0872"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "L200 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0873"
+:status :complete
+:comment "all-in-one"
+
+:model "L210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08a1"
+:status :complete
+:comment "all-in-one"
+
+:model "L350"
+:interface "USB"
+:usbid "0x04b8" "0x08a1"
+:status :complete
+:comment "all-in-one"
+
+:model "L351"
+:interface "USB"
+:usbid "0x04b8" "0x08a1"
+:status :complete
+:comment "all-in-one"
+
+:model "L355"
+:interface "USB"
+:usbid "0x04b8" "0x08a8"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "L358"
+:interface "USB"
+:usbid "0x04b8" "0x08a8"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "L550"
+:interface "USB"
+:usbid "0x04b8" "0x08a9"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "LP-7900CS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9000CCH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9000CCS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9000CFH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9500CCS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9500CFH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9500CH2"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9800CCH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9800CCS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9800CFH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-A500"
+:interface "USB"
+:usbid "0x04b8" "0x0815"
+:status :good
+:comment "network interface not supported<br>business all-in-one"
+
+:model "LP-M5000"
+:interface "USB"
+:usbid "0x04b8" "0x0843"
+:status :good
+:comment "network interface not supported<br>business all-in-one"
+
+:model "LP-M5300 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0894"
+:status :good
+:comment "network interface not supported<br>business all-in-one"
+
+:model "LP-M5500"
+:interface "USB"
+:usbid "0x04b8" "0x0817"
+:status :good
+:comment "network interface not supported<br>business all-in-one"
+
+:model "LP-M5500F"
+:interface "USB"
+:usbid "0x04b8" "0x0817"
+:status :good
+:comment "network interface not supported<br>business all-in-one<br>LP-M5500 with the fax option bundled"
+
+:model "LP-M5600"
+:interface "USB"
+:usbid "0x04b8" "0x0833"
+:status :good
+:comment "network interface not supported<br>business all-in-one"
+
+:model "LP-M6000"
+:interface "USB"
+:usbid "0x04b8" "0x0834"
+:status :good
+:comment "network interface not supported<br>business all-in-one"
+
+:model "M200 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08aa"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME 200"
+:interface "USB"
+:usbid "0x04b8" "0x0830"
+:status :good
+:comment "all-in-one"
+
+:model "ME 300"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "ME 320 Series"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :complete
+:comment "all-in-one"
+
+:model "ME 330 Series"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :complete
+:comment "all-in-one"
+
+:model "ME 340 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0883"
+:status :complete
+:comment "all-in-one"
+
+:model "ME OFFICE 510"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "ME OFFICE 520 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0865"
+:status :complete
+:comment "all-in-one"
+
+:model "ME OFFICE 535"
+:interface "USB"
+:usbid "0x04b8" "0x0881"
+:status :complete
+:comment "all-in-one<br>overseas version of the PX-404A"
+
+:model "ME OFFICE 560W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0864"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME OFFICE 570W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0880"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-434A"
+
+:model "ME Office 600F"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME OFFICE 620F Series"
+:interface "USB"
+:usbid "0x04b8" "0x0863"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME OFFICE 650FN Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "ME Office 700FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "ME OFFICE 900WD Series"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-503A"
+
+:model "ME OFFICE 940FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0890"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME OFFICE 960FWD Series"
+:interface "USB"
+:usbid "0x04b8" "0x085d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME-101"
+:interface "USB"
+:usbid "0x04b8" "0x08a0"
+:status :complete
+:comment "all-in-one"
+
+:model "ME-301"
+:interface "USB"
+:usbid "0x04b8" "0x0896"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "ME-303"
+:interface "USB"
+:usbid "0x04b8" "0x0897"
+:status :complete
+:comment "all-in-one<br>overseas version of the PX-405A"
+
+:model "ME-401"
+:interface "USB"
+:usbid "0x04b8" "0x0898"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-435A"
+
+:model "PM-A700" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0814"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A750"
+:interface "USB"
+:usbid "0x04b8" "0x081a"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A820"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A840"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A840S"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "PM-A850" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0806"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A870" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A890"
+:interface "USB"
+:usbid "0x04b8" "0x081c"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A900" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0810"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A920"
+:interface "USB"
+:usbid "0x04b8" "0x082a"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A940"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A950"
+:interface "USB"
+:usbid "0x04b8" "0x081d"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A970"
+:interface "USB"
+:usbid "0x04b8" "0x0828"
+:status :good
+:comment "all-in-one"
+
+:model "PM-T960"
+:interface "USB"
+:usbid "0x04b8" "0x0836"
+:status :good
+:comment "all-in-one"
+
+:model "PM-T990"
+:interface "USB"
+:usbid "0x04b8" "0x0829"
+:status :good
+:comment "all-in-one<br>PM-A970 with network interface"
+
+:model "PX-045A"
+:interface "USB"
+:usbid "0x04b8" "0x0895"
+:status :complete
+:comment "all-in-one"
+
+:model "PX-1600F"
+:interface "USB"
+:usbid "0x04b8" "0x0869"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-1700F"
+:interface "USB"
+:usbid "0x04b8" "0x087c"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-401A"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one"
+
+:model "PX-402A"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one"
+
+:model "PX-403A"
+:interface "USB"
+:usbid "0x04b8" "0x087f"
+:status :complete
+:comment "all-in-one"
+
+:model "PX-404A"
+:interface "USB"
+:usbid "0x04b8" "0x0881"
+:status :complete
+:comment "all-in-one"
+
+:model "PX-405A"
+:interface "USB"
+:usbid "0x04b8" "0x0897"
+:status :complete
+:comment "all-in-one"
+
+:model "PX-434A"
+:interface "USB"
+:usbid "0x04b8" "0x0880"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-435A"
+:interface "USB"
+:usbid "0x04b8" "0x0898"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-501A"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "PX-502A"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one"
+
+:model "PX-503A"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-504A"
+:interface "USB"
+:usbid "0x04b8" "0x0891"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-505F"
+:interface "USB"
+:usbid "0x04b8" "0x08a5"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-535F"
+:interface "USB"
+:usbid "0x04b8" "0x08a6"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-601F"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface not supported"
+
+:model "PX-602F"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-603F"
+:interface "USB"
+:usbid "0x04b8" "0x085d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-605F"
+:interface "USB"
+:usbid "0x04b8" "0x0899"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-673F"
+:interface "USB"
+:usbid "0x04b8" "0x086a"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-675F"
+:interface "USB"
+:usbid "0x04b8" "0x0899"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-A550" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A620"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A640"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A650"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A720"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A740"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one"
+
+:model "PX-B750F"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "PX-FA700"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one"
+
+:model "Perfection 600"
+:interface "SCSI"
+:status :unsupported
+:comment "supported by the umax backend<br>rebadged UMAX Astra 1200S"
+
+:model "Perfection 610" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0103"
+:status :complete
+:comment "overseas version of the GT-6600U"
+
+:model "Perfection 636S"
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-7000S"
+:scsi "EPSON" "Perfection636" "processor"
+
+:model "Perfection 636U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0101"
+:status :complete
+:comment "overseas version of the GT-7000U"
+
+:model "Perfection 640U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x010c"
+:status :complete
+:comment "overseas version of the GT-6700U"
+
+:model "Perfection 660"
+:interface "USB"
+:usbid "0x04b8" "0x0114"
+:status :unsupported
+:comment "supported by the snapscan backend"
+
+:model "Perfection 1200S" ; command spec
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-7600S"
+:scsi "EPSON" "Perfection1200" "processor"
+
+:model "Perfection 1200U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "overseas version of the GT-7600U"
+
+:model "Perfection 1200U PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "Perfection 1200U with TPU option bundled<br>overseas version of the GT-7600UF"
+
+:model "Perfection 1240U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x010b"
+:status :complete
+:comment "overseas version of the GT-7700U"
+
+:model "Perfection 1250"
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-7200<br>also supported by the plustek backend<br>overseas version of the GT-7200U"
+
+:model "Perfection 1250 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-7200<br>also supported by the plustek backend<br>Perfection 1250 with TPU option bundled"
+
+:model "Perfection 1260"
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-7300<br>also supported by the plustek backend<br>overseas version of the GT-7300U"
+
+:model "Perfection 1260 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-7300<br>also supported by the plustek backend<br>Perfection 1260 with TPU option bundled"
+
+:model "Perfection 1270"
+:interface "USB"
+:usbid "0x04b8" "0x0120"
+:status :unsupported
+:comment "supported by the snapscan backend<br>overseas version of the GT-7400"
+
+:model "Perfection 1600"
+:interface "SCSI"
+:status :unsupported
+
+:model "Perfection 1640SU" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :complete
+:comment "overseas version of the GT-8700"
+
+:model "Perfection 1640SU PHOTO"
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :good
+:comment "overseas version of the GT-8700F"
+
+:model "Perfection 1650" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :complete
+:comment "overseas version of the GT-8200U"
+
+:model "Perfection 1650 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :good
+:comment "overseas version of the GT-8200UF"
+
+:model "Perfection 1660 PHOTO" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x011e"
+:status :complete
+:comment "overseas version of the GT-8300UF"
+
+:model "Perfection 1670"
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :unsupported
+:comment "supported by the snapscan backend"
+
+:model "Perfection 1670 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :unsupported
+:comment "supported by the snapscan backend<br>overseas version of the GT-8400UF"
+
+:model "Perfection 2400 PHOTO" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x011b"
+:status :complete
+:comment "overseas version of the GT-9300UF"
+
+:model "Perfection 2450 PHOTO" ; command spec
+:interface "USB IEEE1394"
+:usbid "0x04b8" "0x0112"
+:scsi "EPSON" "GT-9700" "processor"
+:status :complete
+:comment "overseas version of the GT-9700F"
+
+:model "Perfection 2480 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :good
+:comment "multi photo feeder not supported<br>requires DFSG non-free iscan-plugin-gt-f500<br>also supported by the snapscan backend<br>overseas version of the GT-F500"
+
+:model "Perfection 2580 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :good
+:comment "auto film loader not supported<br>requires DFSG non-free iscan-plugin-gt-f500<br>also supported by the snapscan backend<br>overseas version of the GT-F550"
+
+:model "Perfection 3170 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0116"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-9400<br>overseas version of the GT-9400UF"
+
+:model "Perfection 3200 PHOTO" ; command spec
+:interface "USB IEEE1394"
+:usbid "0x04b8" "0x011c"
+:scsi "EPSON" "GT-9800" "processor"
+:status :complete
+:comment "overseas version of the GT-9800F"
+
+:model "Perfection 3490 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :good
+:comment "multi photo feeder not supported<br>requires DFSG non-free iscan-plugin-gt-f520<br>also supported by the snapscan backend<br>overseas version of the GT-F520"
+
+:model "Perfection 3590 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :good
+:comment "auto film loader not supported<br>requires DFSG non-free iscan-plugin-gt-f520<br>also supported by the snapscan backend<br>overseas version of the GT-F570"
+
+:model "Perfection 4180 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0118"
+:status :good
+:comment "only scans up to 2400dpi<br>requires DFSG non-free iscan-plugin-gt-f600<br>overseas version of the GT-F600"
+
+:model "Perfection 4490 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0119"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-x750<br>overseas version of the GT-X750"
+
+:model "Perfection 4870 PHOTO" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0128"
+:status :complete
+:comment "IEEE1394 untested<br>overseas version of the GT-X700"
+
+:model "Perfection 4990 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x012a"
+:status :good
+:comment "film area guide mode not supported<br>IEEE1394 untested<br>overseas version of the GT-X800"
+
+:model "Perfection 4990 Pro"
+:interface "USB IEEE1394"
+:status :untested
+:comment "seems to be a 4990 PHOTO with additional software"
+
+:model "Perfection V10"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-s600<br>overseas version of the GT-S600"
+
+:model "Perfection V30"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-f720<br>overseas version of the GT-S620"
+
+:model "Perfection V33"
+:interface "USB"
+:usbid "0x04b8" "0x0142"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-perfection-v330<br>overseas version of the GT-S630"
+
+:model "Perfection V37"
+:interface "USB"
+:usbid "0x04b8" "0x014a"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-perfection-v370<br>overseas version of the GT-S640"
+
+:model "Perfection V100 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-s600<br>overseas version of the GT-F650"
+
+:model "Perfection V200 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012e"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-f670<br>overseas version of the GT-F670"
+
+:model "Perfection V300 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-gt-f720<br>overseas version of the GT-F720"
+
+:model "Perfection V330 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x0142"
+:status :good
+:comment "requires DFSG non-free esci-interpreter-perfection-v330<br>overseas version of the GT-F730"
+
+:model "Perfection V370 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x014a"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-perfection-v370<br>overseas version of the GT-F740"
+
+:model "Perfection V350 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012f"
+:status :good
+:comment "auto film loader not supported<br>requires DFSG non-free iscan-plugin-gt-f700<br>overseas version of the GT-F700"
+
+:model "Perfection V500 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x0130"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-x770<br>overseas version of the GT-X770"
+
+:model "Perfection V600 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x013a"
+:status :good
+:comment "requires DFSG non-free iscan-plugin-gt-x820<br>overseas version of the GT-X820"
+
+:model "Perfection V700 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012c"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the GT-X900"
+
+:model "Perfection V750 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012c"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the GT-X900"
+
+:model "Stylus CX1500" ; Australia
+:interface "USB"
+:usbid "0x04b8" "0x080c"
+:status :unsupported
+:comment "supported by the snapscan backend<br>all-in-one"
+
+:model "Stylus CX2800"
+:interface "USB"
+:usbid "0x04b8" "0x0830"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX2900"
+:interface "USB"
+:usbid "0x04b8" "0x0830"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3100"
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-570L"
+
+:model "Stylus CX3200"
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-570L"
+
+:model "Stylus CX3500" ; Australia
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A550"
+
+:model "Stylus CX3600" ; UK
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A550"
+
+:model "Stylus CX3650" ; France
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3700"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3800"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3810"
+:interface "USB"
+:status :untested
+:comment "all-in-one"
+
+:model "Stylus CX3900"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A620"
+
+:model "Stylus CX4100"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4200"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4300"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :good
+:comment "all-in-one<br>requires DFSG non-free iscan-plugin-cx4400"
+
+:model "Stylus CX4400"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :good
+:comment "all-in-one<br>requires DFSG non-free iscan-plugin-cx4400"
+
+:model "Stylus CX4500"
+:interface "USB"
+:usbid "0x04b8" "0x080d"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4600"
+:interface "USB"
+:usbid "0x04b8" "0x080d"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4700"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A650"
+
+:model "Stylus CX4800"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A650"
+
+:model "Stylus CX4900"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5000"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5100"
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-600PX"
+
+:model "Stylus CX5200"
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-600PX"
+
+:model "Stylus CX5300"
+:interface "USB"
+:usbid "0x04b8" "0x0808"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5400"
+:interface "USB"
+:usbid "0x04b8" "0x0808"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5500"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :good
+:comment "all-in-one<br>requires DFSG non-free iscan-plugin-cx4400"
+
+:model "Stylus CX5600"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :good
+:comment "all-in-one<br>requires DFSG non-free iscan-plugin-cx4400"
+
+:model "Stylus CX5700F"
+:interface "USB"
+:usbid "0x04b8" "0x0821"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX5800F"
+:interface "USB"
+:usbid "0x04b8" "0x0821"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX5900"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A720"
+
+:model "Stylus CX6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A720"
+
+:model "Stylus CX6300"
+:interface "USB"
+:usbid "0x04b8" "0x0805"
+:status :good
+:comment "all-in-one<br>mistakenly thinks its a PX-A650"
+
+:model "Stylus CX6400"
+:interface "USB"
+:usbid "0x04b8" "0x0805"
+:status :good
+:comment "all-in-one<br>mistakenly thinks its a PX-A650"
+
+:model "Stylus CX6500"
+:interface "USB"
+:usbid "0x04b8" "0x0813"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX6600"
+:interface "USB"
+:usbid "0x04b8" "0x0813"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX6900F"
+:interface "USB"
+:usbid "0x04b8" "0x0831"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX7000F"
+:interface "USB"
+:usbid "0x04b8" "0x0831"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX7300"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A640"
+
+:model "Stylus CX7400"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A640"
+
+:model "Stylus CX7700"
+:interface "USB"
+:usbid "0x04b8" "0x081f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX7800"
+:interface "USB"
+:usbid "0x04b8" "0x081f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX8300"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A740"
+
+:model "Stylus CX8400"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A740"
+
+:model "Stylus CX9300F"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-FA700"
+
+:model "Stylus CX9400Fax"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-FA700"
+
+:model "Stylus DX3800"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX3850"
+:interface "USB"
+;:usbid "0x04b8" "0x0818" ; not confirmed
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX4000"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A620"
+
+:model "Stylus DX4200"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX4400"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :good
+:comment "all-in-one<br>requires DFSG non-free iscan-plugin-cx4400"
+
+:model "Stylus DX4800"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A650"
+
+:model "Stylus DX4850"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>DX4800 + card reader"
+
+:model "Stylus DX5000"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A720"
+
+:model "Stylus DX7000F"
+:interface "USB"
+:usbid "0x04b8" "0x0831"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus DX7400"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A640"
+
+:model "Stylus DX8400"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A740"
+
+:model "Stylus DX9400F"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-FA700"
+
+:model "Stylus Office BX300F"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX305F"
+:interface "USB"
+:usbid "0x04b8" "0x0863"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX305FW"
+:interface "USB"
+:usbid "0x04b8" "0x0863"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX305FW Plus"
+:interface "USB"
+:usbid "0x04b8" "0x0870"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX310FN Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Office BX320FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x085f"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX535WD"
+:interface "USB"
+:usbid "0x04b8" "0x0891"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>overseas version of the PX-504A"
+
+:model "Stylus Office BX630FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0890"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX525WD"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-503A"
+
+:model "Stylus Office BX600FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "Stylus Office BX610FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-602F"
+
+:model "Stylus Office BX625FWD"
+:interface "USB"
+:usbid "0x04b8" "0x085d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX635FWD"
+:interface "USB"
+:usbid "0x04b8" "0x088f"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office BX925FWD"
+:interface "USB"
+:usbid "0x04b8" "0x086a"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-673F"
+
+:model "Stylus Office BX935FWD"
+:interface "USB"
+:usbid "0x04b8" "0x0892"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office TX300F"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office TX320F Series"
+:interface "USB"
+:usbid "0x04b8" "0x0863"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office TX510FN Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Office TX525FW"
+:interface "USB"
+:usbid "0x04b8" "0x085f"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Office TX600FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "Stylus Office TX610FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-602F"
+
+:model "Stylus Office TX620FWD Series"
+:interface "USB"
+:usbid "0x04b8" "0x085d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Photo PX650 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0850"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-702A"
+
+:model "Stylus Photo PX660 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0862"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-703A"
+
+:model "Stylus Photo PX700W"
+:interface "USB"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the EP-801A"
+
+:model "Stylus Photo PX710W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-802A"
+
+:model "Stylus Photo PX720WD Series"
+:interface "USB"
+:usbid "0x04b8" "0x0861"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-803A"
+
+:model "Stylus Photo PX730WD Series"
+:interface "USB"
+:usbid "0x04b8" "0x087b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-804A"
+
+:model "Stylus Photo PX800FW"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the EP-901A"
+
+:model "Stylus Photo PX810FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0853"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-902A"
+
+:model "Stylus Photo PX820FWD Series"
+:interface "USB"
+:usbid "0x04b8" "0x0860"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-903A"
+
+:model "Stylus Photo PX830FWD Series"
+:interface "USB"
+:usbid "0x04b8" "0x0879"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-904F"
+
+:model "Stylus Photo RX420"
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX425" ; France
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX430" ; Australia
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX500"
+:interface "USB"
+:usbid "0x04b8" "0x0807"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX510"
+:interface "USB"
+:usbid "0x04b8" "0x0807"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX520"
+:interface "USB"
+:usbid "0x04b8" "0x081a"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A750"
+
+:model "Stylus Photo RX530"
+:interface "USB"
+:usbid "0x04b8" "0x081a"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A750"
+
+:model "Stylus Photo RX560"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A820"
+
+:model "Stylus Photo RX585"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A840"
+
+:model "Stylus Photo RX580"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A820"
+
+:model "Stylus Photo RX595"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A840"
+
+:model "Stylus Photo RX590"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A820"
+
+:model "Stylus Photo RX600"
+:interface "USB"
+:usbid "0x04b8" "0x0806"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A850"
+
+:model "Stylus Photo RX610"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A840"
+
+:model "Stylus Photo RX620"
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A870"
+
+:model "Stylus Photo RX630"
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A870"
+
+:model "Stylus Photo RX640"
+:interface "USB"
+:usbid "0x04b8" "0x081c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A890"
+
+:model "Stylus Photo RX650"
+:interface "USB"
+:usbid "0x04b8" "0x081c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A890"
+
+:model "Stylus Photo RX680"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A940"
+
+:model "Stylus Photo RX685"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A940"
+
+:model "Stylus Photo RX690"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A940"
+
+:model "Stylus Photo RX700"
+:interface "USB"
+:usbid "0x04b8" "0x0810"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A900"
+
+:model "Stylus Photo TX650 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0850"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-702A"
+
+:model "Stylus Photo TX700W"
+:interface "USB"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the EP-801A"
+
+:model "Stylus Photo TX710W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-802A"
+
+:model "Stylus Photo TX720WD Series"
+:interface "USB"
+:usbid "0x04b8" "0x0861"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-803A"
+
+:model "Stylus Photo TX730WD Series"
+:interface "USB"
+:usbid "0x04b8" "0x087b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-804A"
+
+:model "Stylus Photo TX800FW"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the EP-901A"
+
+:model "Stylus Photo TX820FWD Series"
+:interface "USB"
+:usbid "0x04b8" "0x0860"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-903A"
+
+:model "Stylus NX100"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "Stylus NX110 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-402A"
+
+:model "Stylus NX125"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus NX127"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus NX130 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0883"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus NX200"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus NX210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus NX220 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0865"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus NX230 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0885"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus NX300 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus NX330 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0880"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus NX400"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-501A"
+
+:model "Stylus NX410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0851"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "Stylus NX420 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0864"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus NX430W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0884"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus NX510 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-502A"
+
+:model "Stylus NX530 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0891"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-504A"
+
+:model "Stylus NX625"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-503A"
+
+:model "Stylus NX635"
+:interface "USB"
+:usbid "0x04b8" "0x0891"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>overseas version of the PX-504A"
+
+:model "Stylus SX100"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "Stylus SX110 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-402A"
+
+:model "Stylus SX125"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus SX130 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0883"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus SX200"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX205"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX218"
+:interface "USB"
+:usbid "0x04b8" "0x0865"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus SX230 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0881"
+:status :complete
+:comment "all-in-one<br>overseas version of the PX-404A"
+
+:model "Stylus SX235W"
+:interface "USB"
+:usbid "0x04b8" "0x0885"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus SX400"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-501A"
+
+:model "Stylus SX405"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0851"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "Stylus SX420W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0864"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus SX430W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0880"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus SX440W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0884"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus SX510W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-502A"
+
+:model "Stylus SX525WD"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-503A"
+
+:model "Stylus SX535WD"
+:interface "USB"
+:usbid "0x04b8" "0x0891"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>overseas version of the PX-504A"
+
+:model "Stylus SX600FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "Stylus SX610FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-602F"
+
+:model "Stylus SX620FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x085d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus Scan 2000"
+:interface "USB"
+:usbid "0x04b8" "0x0105"
+:status :untested
+:comment "apparently mostly the same as the Stylus Scan 2500"
+
+:model "Stylus Scan 2500"
+:interface "USB"
+:usbid "0x04b8" "0x0106"
+:status :untested
+:comment "scanner is apparently a GT-7000"
+
+:model "Stylus TX100"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "Stylus TX110 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-402A"
+
+:model "Stylus TX120 Series"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus TX130 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0883"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus TX200"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX203"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX209"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX220 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0865"
+:status :complete
+:comment "all-in-one"
+
+:model "Stylus TX230W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0885"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus TX235"
+:interface "USB"
+:usbid "0x04b8" "0x0881"
+:status :complete
+:comment "all-in-one<br>overseas version of the PX-404A"
+
+:model "Stylus TX400"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-501A"
+
+:model "Stylus TX410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0851"
+:status :good
+:comment "network interface not supported<br>all-in-one"
+
+:model "Stylus TX420W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0864"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus TX430W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0880"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus TX435W"
+:interface "USB"
+:usbid "0x04b8" "0x0884"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "Stylus TX550W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-502A"
+
+:model "Stylus TX560WD Series"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-503A"
+
+:model "WF-2510 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08a5"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-505F"
+
+:model "WF-2520 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08a6"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-535F"
+
+:model "WF-2530 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08a6"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-535F"
+
+:model "WF-2540 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08a6"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-535F"
+
+:model "WF-3520 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0899"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-605F"
+
+:model "WF-3530 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0899"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-675F"
+
+:model "WF-3540 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0899"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WF-7510 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0869"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-1600F"
+
+:model "WF-7520 Series"
+:interface "USB"
+:usbid "0x04b8" "0x087c"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-1700F"
+
+:model "WF-M1560 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08ab"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WP-4511"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-B750F"
+
+:model "WP-4515"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WP-4521"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-B750F"
+
+:model "WP-4525"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-B750F"
+
+:model "WP-4530 Series"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-B750F"
+
+:model "WP-4540 Series"
+:interface "USB"
+:usbid "0x04b8" "0x087d"
+:status :complete
+:comment "network interface option supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-B750F"
+
+:model "WP-4590 Series"
+:interface "USB"
+:usbid "0x04b8" "0x087e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce 310 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "WorkForce 320 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0863"
+:status :complete
+:comment "network interface (option) supported via DFSG non-free iscan-network-nt package<br>some models in the series have a built-in network interface<br>all-in-one"
+
+:model "WorkForce 435"
+:interface "USB"
+:usbid "0x04b8" "0x0870"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce 500"
+:interface "USB"
+:usbid "0x04b8" "0x084c"
+:status :good
+:comment "all-in-one"
+
+:model "WorkForce 520 Series"
+:interface "USB"
+:usbid "0x04b8" "0x085f"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce 545"
+:interface "USB"
+:usbid "0x04b8" "0x0890"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce 600"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface not supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "WorkForce 610 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-602F"
+
+:model "WorkForce 625"
+:interface "USB"
+:usbid "0x04b8" "0x085e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-503A"
+
+:model "WorkForce 630 Series"
+:interface "USB"
+:usbid "0x04b8" "0x085d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce 645"
+:interface "USB"
+:usbid "0x04b8" "0x088f"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce 840 Series"
+:interface "USB"
+:usbid "0x04b8" "0x086a"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-673F"
+
+:model "WorkForce 845"
+:interface "USB"
+:usbid "0x04b8" "0x0892"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "WorkForce K301"
+:interface "USB"
+:usbid "0x04b8" "0x0872"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-100 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0895"
+:status :complete
+:comment "all-in-one<br>overseas version of the PX-045A"
+
+:model "XP-200 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0896"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-211"
+:interface "USB"
+:usbid "0x04b8" "0x08ae"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-212"
+:interface "USB"
+:usbid "0x04b8" "0x08ae"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-215"
+:interface "USB"
+:usbid "0x04b8" "0x08ae"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-300 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0898"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-435A"
+
+:model "XP-310 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08af"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package"
+
+:model "XP-400 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0898"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-435A"
+
+:model "XP-410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x08b0"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-600 Series"
+:interface "USB"
+:usbid "0x04b8" "0x089e"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-775A"
+
+:model "XP-700 Series"
+:interface "USB"
+:usbid "0x04b8" "0x089d"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-750 Series"
+:interface "USB"
+:usbid "0x04b8" "0x089c"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-805A/EP-805AR/EP-805AW"
+
+:model "XP-800 Series"
+:interface "USB"
+:usbid "0x04b8" "0x089b"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-905A"
+
+:model "XP-850 Series"
+:interface "USB"
+:usbid "0x04b8" "0x089a"
+:status :complete
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the EP-905F"
diff --git a/doc/descriptions-external/geniusvp2.desc b/doc/descriptions-external/geniusvp2.desc
new file mode 100644
index 0000000..c605221
--- /dev/null
+++ b/doc/descriptions-external/geniusvp2.desc
@@ -0,0 +1,26 @@
+;
+; SANE Backend specification file
+;
+
+:backend "geniusvp2" ; backend's name
+;:version "0.2" ; backend's version (or "unmaintained")
+;:manpage "sane-geniusvp2" ; manpage name
+:url "http://sourceforge.net/projects/geniusvp2/" ; backend's web page
+:comment "Supports color mode, bit depth of 8, 75-600 dpi resolution"
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Genius" ; name a manufacturer
+:url "http://www.genius-kye.com/" ; manufacturer's URL
+
+:model "ColorPage-Vivid Pro II" ; name models for above-specified mfg.
+:status :basic ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "Parport (EPP)" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:comment "Similar to Primax Colorado Direct 9600, but with EICI 091000 ASIC"
+ ; comment about the model
diff --git a/doc/descriptions-external/hp3770.desc b/doc/descriptions-external/hp3770.desc
new file mode 100644
index 0000000..7c2c60e
--- /dev/null
+++ b/doc/descriptions-external/hp3770.desc
@@ -0,0 +1,39 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "hp3770" ; name of backend
+;:version "0.0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://www.cyberbaladeur.fr/telechargement.html" ; backend's web page
+:comment "This backend can't be added to the SANE distribution because it consists of binary-only code."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett Packard" ; name a manufacturer
+:url "http://www.hp.com/" ; manufacturer's URL
+
+:model "ScanJet 3770" ; name models for above-specified mfg.
+:status :basic ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "USB" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:usbid "0x03f0" "0x2505"
+:url "http://ftp.cyberbaladeur.fr/3770.tar.gz" ; model's URL
+:comment "External backend. Binary-only Linux i386 code. Not supported by the SANE developers. Is reported to scan only a small area? Scanning of slides or negatives is not implemented."
diff --git a/doc/descriptions-external/hp8200.desc b/doc/descriptions-external/hp8200.desc
new file mode 100644
index 0000000..7dcf663
--- /dev/null
+++ b/doc/descriptions-external/hp8200.desc
@@ -0,0 +1,40 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "hp8200" ; name of backend
+;:version "0.0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://www.cyberbaladeur.fr/telechargement.html" ; backend's web page
+:comment "This backend can't be added to the SANE distribution because it consists of binary-only code."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett Packard" ; name a manufacturer
+:url "http://www.hp.com/" ; manufacturer's URL
+
+:model "ScanJet 8200" ; name models for above-specified mfg.
+:status :good ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "USB" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:usbid "0x03f0" "0x0b01"
+:url "http://ftp.cyberbaladeur.fr/82xxc%20Linux%20drivers.tar.gz" ; model's URL
+:comment "External backend. Binary-only Linux i386 code. Not supported by the SANE developers."
+
diff --git a/doc/descriptions-external/hpaio.desc b/doc/descriptions-external/hpaio.desc
new file mode 100755
index 0000000..5b4cc5c
--- /dev/null
+++ b/doc/descriptions-external/hpaio.desc
@@ -0,0 +1,2241 @@
+;
+; SANE Backend specification file
+;
+
+:backend "hpaio" ; name of backend
+:version "" ; version of backend
+:url "http://hpinkjet.sourceforge.net/" ; backend's web page
+:comment "This backend isn't included in SANE because it is included in the HPLIP software."
+
+:devicetype :scanner ; start of a list of devices....
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/united-states/consumer/gateway/printing_multifunction.html"
+:model "HP Officejet v30 All-in-one Printer"
+:status :good
+
+:model "HP Officejet v40xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet v40s All-in-one Printer"
+:status :good
+
+:model "HP Officejet r40 All-in-one Printer"
+:status :good
+
+:model "HP Officejet v40 All-in-one Printer"
+:status :good
+
+:model "HP Officejet r40xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet t45xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet r45 All-in-one Printer"
+:status :good
+
+:model "HP Officejet v45 All-in-one Printer"
+:status :good
+
+:model "HP Officejet t45 All-in-one Printer"
+:status :good
+
+:model "HP Officejet g55 All-in-one Printer"
+:status :good
+
+:model "HP Officejet g55xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet k60 All-in-one Printer"
+:status :good
+
+:model "HP Officejet r60 All-in-one Printer"
+:status :good
+
+:model "HP Officejet k60xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet t65xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet t65 All-in-one Printer"
+:status :good
+
+:model "HP Officejet r65 All-in-one Printer"
+:status :good
+
+:model "HP Officejet k80 All-in-one Printer"
+:status :good
+
+:model "HP Officejet k80xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet r80xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet r80 All-in-one Printer"
+:status :good
+
+:model "HP Officejet g85 All-in-one Printer"
+:status :good
+
+:model "HP Officejet g85xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet g95 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart All-in-one Printer - b109d"
+:status :good
+
+:model "HP Photosmart All-in-one Printer - b109e"
+:status :good
+
+:model "HP Photosmart All-in-one Printer - b109c"
+:status :good
+
+:model "HP Photosmart All-in-one Printer - b109a"
+:status :good
+
+:model "HP Photosmart Wireless All-in-one Printer - b109q"
+:status :good
+
+:model "HP Photosmart Wireless All-in-one Printer - b109n"
+:status :good
+
+:model "HP Photosmart Wireless All-in-one Printer - b109q=r"
+:status :good
+
+:model "HP Officejet d125xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet d135 All-in-one Printer"
+:status :good
+
+:model "HP Officejet d135xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet d145xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet d145 All-in-one Printer"
+:status :good
+
+:model "HP Officejet d155xi All-in-one Printer"
+:status :good
+
+:model "HP Deskjet Ink Advantage k209a All-in-one Printer"
+:status :good
+
+:model "HP Photosmart Plus All-in-one Printer - b209a"
+:status :good
+
+:model "HP Photosmart Plus All-in-one Printer - b209b"
+:status :good
+
+:model "HP Photosmart Plus All-in-one Printer - b209c"
+:status :good
+
+:model "HP Printer Scanner Copier 300"
+:status :good
+
+:model "HP Photosmart Premium All-in-one Printer Series - c309h"
+:status :good
+
+:model "HP Photosmart Premium All-in-one Printer Series - c309g"
+:status :good
+
+:model "HP Photosmart Premium Fax All-in-one Printer - c309a"
+:status :good
+
+:model "HP Photosmart Premium Fax All-in-one Printer Series -c309c"
+:status :good
+
+:model "HP Photosmart Premium Fax All-in-one Printer Series -c309a"
+:status :good
+
+:model "HP Deskjet f310 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f325 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f335 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f340 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f350 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f370 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f375 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f378 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f379 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f380 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f385 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f388 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f390 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f394 All-in-one Printer"
+:status :good
+
+:model "HP PSC 500xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 500 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 500 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 520 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 570 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 580 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 590 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 600 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 610 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 630 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 635 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 700 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 710 All-in-one Printer"
+:status :good
+
+:model "HP PSC 720 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 720 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 725 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f735 All-in-one Printer"
+:status :good
+
+:model "HP PSC 750 All-in-one Printer"
+:status :good
+
+:model "HP PSC 750xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 760 All-in-one Printer"
+:status :good
+
+:model "HP PSC 780 All-in-one Printer"
+:status :good
+
+:model "HP PSC 780xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 900 All-in-one Printer"
+:status :good
+
+:model "HP 915 Inkjet All-in-one Printer"
+:status :good
+
+:model "HP PSC 920 All-in-one Printer"
+:status :good
+
+:model "HP PSC 950 All-in-one Printer"
+:status :good
+
+:model "HP PSC 950vr All-in-one Printer"
+:status :good
+
+:model "HP PSC 950xi All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m1005 Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm1015 Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm1017 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 1100a Xi All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 1100xi Printer"
+:status :good
+
+:model "HP LaserJet 1100a All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 1100 Printer"
+:status :good
+
+:model "HP LaserJet 1100a Se All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 1100se Printer"
+:status :good
+
+:model "HP PSC 1110v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1110 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1118 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m1120 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m1120n Multifunction Printer"
+:status :good
+
+:model "HP Officejet Pro 1150c All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1150cse All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1170cse All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1170c All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1170cxi All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1175cxi All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1175cse All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 1175c All-in-one Printer"
+:status :good
+
+:model "HP PSC 1200 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1205 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1209 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1210xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 1210v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1210 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1213 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1215 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1216 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1217 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1218 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1219 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 1220 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 1220se All-in-one Printer"
+:status :good
+
+:model "HP PSC 1300 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1310 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1311 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet cm1312 Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm1312nfi Multifunction Printer"
+:status :good
+
+:model "HP PSC 1312 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1315v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1315s All-in-one Printer"
+:status :good
+
+:model "HP PSC 1315xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 1315 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1317 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1318 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m1319f Multifunction Printer"
+:status :good
+
+:model "HP PSC 1340 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1345 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1350xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 1350v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1350 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1355 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1401 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1402 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1403 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1406 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1408 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1410 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1410v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1410xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 1415 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1417 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1503 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1504 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1507 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1508 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1510s All-in-one Printer"
+:status :good
+
+:model "HP PSC 1510xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 1510 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1510v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1513s All-in-one Printer"
+:status :good
+
+:model "HP PSC 1513 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1514 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m1522n Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m1522nf Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m1522 Multifunction Printer"
+:status :good
+
+:model "HP PSC 1600 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1603 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1605 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1608 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1610 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1610xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 1610v All-in-one Printer"
+:status :good
+
+:model "HP PSC 1613 All-in-one Printer"
+:status :good
+
+:model "HP PSC 1615 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2105 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2108 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2110 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2110 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2110v All-in-one Printer"
+:status :good
+
+:model "HP PSC 2110xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 2115 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2120 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2128 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2140 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2150 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2170 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2171 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2175 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2175v All-in-one Printer"
+:status :good
+
+:model "HP PSC 2175xi All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2179 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2179 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2180 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2185 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2187 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2188 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2200 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2210 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2210v All-in-one Printer"
+:status :good
+
+:model "HP PSC 2210xi All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2210 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2212 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2214 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2224 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2235 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2238 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2240 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2250 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2275 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2276 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2280 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2288 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2290 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2300 Series All-in-one Printer"
+:status :good
+
+:model "HP PSC 2310 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet cm2320n Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm2320nf Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm2320fxi Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm2320 Multifuntion Printer"
+:status :good
+
+:model "HP PSC 2350 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2352 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2353p All-in-one Printer"
+:status :good
+
+:model "HP PSC 2353 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2355 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2355p All-in-one Printer"
+:status :good
+
+:model "HP PSC 2355xi All-in-one Printer"
+:status :good
+
+:model "HP PSC 2355v All-in-one Printer"
+:status :good
+
+:model "HP PSC 2357 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2358 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2405 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP PSC 2410v Photosmart All-in-one Printer"
+:status :good
+
+:model "HP PSC 2410xi Photosmart All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2410 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2410 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2418 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2420 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2420 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2423 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2430 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2440 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2450 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2476 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2480 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2483 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2488 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2492 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f2493 All-in-one Printer"
+:status :good
+
+:model "HP PSC 2500 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP PSC 2510 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP PSC 2510xi Photosmart All-in-one Printer"
+:status :good
+
+:model "HP PSC 2550 Photosmart All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2570 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2571 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2573 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2574 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2575a All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2575v All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2575xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2575 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2578 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2605 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2608 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2610 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2610v All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2610xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2613 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2615 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2710 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2710xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 2713 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m2727nf Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m2727 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m2727nfs Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet 2800 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet 2820 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet 2830 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet 2840 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3015 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3020 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3030 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m3035 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m3035xs Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 3050z All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3050 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3052 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3055 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3100xi All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3100se All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3100 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3108 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3110v All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3110 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3110 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3125 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3135 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3140 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3150se All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3150 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3150 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3150xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3170 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3173 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3175 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3183 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3188 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3190 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3193 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c3194 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3200 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3200m All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3207 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3210a All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3210v All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3210xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3210 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3213 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3214 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3300 Multifunction Printer"
+:status :good
+
+:model "HP Photosmart 3308 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3310 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3310xi All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3310 Digital Printer Copier"
+:status :good
+
+:model "HP Photosmart 3313 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart 3314 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3320n Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 3320 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 3330 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 3380 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3390 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 3392 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j3608 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j3625 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j3635 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j3640 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j3650 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j3680 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4100 Series All-in-one Printer"
+:status :good
+
+:model "HP LaserJet 4100 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 4101 Multifunction Printer"
+:status :good
+
+:model "HP Officejet 4105 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4110xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4110 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4110v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4110 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4115 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4135 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4140 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4140 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4170 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4172 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4173 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4175 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4175 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4183 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4185 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4188 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4188 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4190 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4190 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4193 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4194 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4194 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4200 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4205 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4210 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4210 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4211 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4212 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4213 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4215 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4215v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4215xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4219 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4224 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4230 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4235 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4235 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4238 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4240 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4240 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4250 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4250 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4251 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4252 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4255 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4256 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4259 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4270 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4272 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4272 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4273 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4273 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4274 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4275 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4275 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4280 All-in-one"
+:status :good
+
+:model "HP Photosmart c4280 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4280 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4283 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4283 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4285 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4288 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4288 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4292 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4293 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4293 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4294 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4294 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4308 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4311 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4312 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4314 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4315 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4315xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4315v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4317 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4319 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4338 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4340 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4342 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4343 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4344 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m4345 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 4345xm Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 4345 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m4345x Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m4345xs Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 4345xs Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 4345x Multifunction Printer"
+:status :good
+
+:model "HP Photosmart c4345 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m4345xm Multifunction Printer"
+:status :good
+
+:model "HP Photosmart c4348 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m4349 MFP"
+:status :good
+
+:model "HP Officejet 4352 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4353 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4355 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4357 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 4359 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4380 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4383 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4384 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4385 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4388 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4410 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4424 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4435 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4435 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4440 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4440 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4450 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4450 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4470 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4470 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4472 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4472 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4473 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4473 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4480 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4480 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4483 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4483 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4485 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4486 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4488 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4488 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4490 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4492 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4493 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4494 All-in-one Printer"
+:status :good
+
+:model "HP Deskjet f4500 All-in-one Printer Series"
+:status :good
+
+:model "HP Designjet 4520mfp"
+:status :good
+
+:model "HP Officejet j4524 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4525 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4535 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4540 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4540 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4550 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4550 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4560 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4570 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4572 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4573 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4575 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4580c All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4580 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4580 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4583 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4585 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4585 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4588 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4593 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4599 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4610 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4635 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4640 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4650 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4660 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4670 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4673 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4680 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4680 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j4680c All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4683 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4688 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet 4730x Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet 4730xs Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm4730 Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet 4730 Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm4730fsk Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm4730fm Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet cm4730f Multifunction Printer"
+:status :good
+
+:model "HP Color LaserJet 4730xm Multifunction Printer"
+:status :good
+
+:model "HP Photosmart c4740 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4750 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4780 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4783 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4785 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4788 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4793 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4795 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4798 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c4799 All-in-one Printer"
+:status :good
+
+:model "HP LaserJet m5035 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m5035xs Multifunction Printer"
+:status :good
+
+:model "HP LaserJet m5035x Multifunction Printer"
+:status :good
+
+:model "HP Officejet 5100 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5105 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5110 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5110v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5110xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5140 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5170 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5173 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5175 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5183 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5185 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5188 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5194 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5240 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5250 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5270 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5273 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5275 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5280 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5283 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5288 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5290 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5293 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5370 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5373 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5380 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5383 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5388 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5390 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5393 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5505 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5505 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5508 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5508 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5510v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5510v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5510xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5510 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5510xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5510 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5515 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5515 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5520 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5540 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5550 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5570 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c5580 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5600 Series All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5605 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5607 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5608 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5609 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5610v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5610xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5610 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5615 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5679 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 5680 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5725 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5730 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5735 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5738 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5740 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5750 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5780 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5783 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5785 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5788 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j5790 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6105 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6110v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6110 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6110xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6154 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6170 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6175 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6183 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6185 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6188 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6190 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6200 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6203 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6205 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6208 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6210xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6210v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6210 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6213 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6215 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6240 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6245 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6250 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6260 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6263 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6268 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6270 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6275 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6280 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6283 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6285 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6286 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6288 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6301 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6304 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6305 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6307 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6308 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6310 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6310xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6310v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6313 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6315 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6318 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6324 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6340 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6350 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6375 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6380 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6383 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c6388 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6405 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6410 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6413 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6415 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6424 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6450 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6480 All-in-one Printer"
+:status :good
+
+:model "HP Officejet j6488 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 6500 Wireless All-in-one Printer - e709q"
+:status :good
+
+:model "HP Officejet 6500 Wireless All-in-one Printer - e709n"
+:status :good
+
+:model "HP Officejet 6500 All-in-one Printer - e709c"
+:status :good
+
+:model "HP Officejet 6500 All-in-one Printer - e709a"
+:status :good
+
+:model "HP Officejet 7100 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7110xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7110 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7115 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7130 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7130xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7135xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7140xi All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7154 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7170 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7183 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7185 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7188 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7190 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7205 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7208 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7210 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7210v All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7210xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7213 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7215 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7250 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7275 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7280 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7283 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c7288 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7300 Series All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7310xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7310 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7313 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7380 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7408 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7410xi All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7410 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 7413 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7480 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7500 Series All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7550 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7555 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7580 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7590 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7600 Series All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7650 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7680 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7681 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7700 Series All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7710 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7750 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro l7780 All-in-one Printer"
+:status :good
+
+:model "HP cm8050 Color Multifunction Printer With Edgeline Technology"
+:status :good
+
+:model "HP cm8060 Color Multifunction Printer With Edgeline Technology"
+:status :good
+
+:model "HP LaserJet 8100 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 8150 Multifunction Printer"
+:status :good
+
+:model "HP Photosmart c8150 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c8180 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c8183 All-in-one Printer"
+:status :good
+
+:model "HP Photosmart c8188 All-in-one Printer"
+:status :good
+
+:model "HP Officejet Pro 8500 Premier All-in-one Printer - a909n"
+:status :good
+
+:model "HP Officejet Pro 8500 Wireless All-in-one Printer - a909g"
+:status :good
+
+:model "HP Officejet Pro 8500 All-in-one Printer - a909a"
+:status :good
+
+:model "HP LaserJet 9000 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 9000l Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 9040 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 9050 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 9055 Multifunction Printer"
+:status :good
+
+:model "HP LaserJet 9065 Multifunction Printer"
+:status :good
+
+:model "HP Officejet 9110 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 9120 All-in-one Printer"
+:status :good
+
+:model "HP Officejet 9130 All-in-one Printer"
+:status :good
+
+:model "HP Color LaserJet 9500 Multifunction Printer"
+:status :good
+
diff --git a/doc/descriptions-external/hpoj.desc b/doc/descriptions-external/hpoj.desc
new file mode 100644
index 0000000..8a4c53c
--- /dev/null
+++ b/doc/descriptions-external/hpoj.desc
@@ -0,0 +1,34 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "hpoj" ; name of backend
+:version "(unmaintained)" ; version of backend
+:url "http://hpoj.sourceforge.net/" ; backend's web page
+:comment "HPOJ is not maintained anymore. It's recommended to use the hpaio (hplip) backend instead of HPOJ."
+
+
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/go/all-in-one"
+
+; name models for above-specified mfg.
+:model "Most HP OfficeJet, LaserJet, and PSC (Printer/Scanner/Copier) multi-function peripherals"
+:url "http://hpoj.sourceforge.net/suplist.shtml"
+:interface "Parport(ECP) USB JetDirect"
+:status :good
+:comment "HPOJ is not maintained anymore. It's recommended to use the hpaio (hplip) backend instead of hpoj."
+:usbid "ignore"
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions-external/kodak-twain.desc b/doc/descriptions-external/kodak-twain.desc
new file mode 100644
index 0000000..2d75cd1
--- /dev/null
+++ b/doc/descriptions-external/kodak-twain.desc
@@ -0,0 +1,87 @@
+:backend "kodak-twain" ; name of backend
+:version "unknown" ; version of backend (or "unmaintained")
+:url "http://www.kodak.com/go/scanonlinux" ;
+:comment "External backend developed by Kodak. Provides full access to the supported Kodak scanners by providing a SANE interface to the proprietary Kodak 32bit TWAIN stack. Several Linux distributions are supported."
+
+:devicetype :scanner ; start of a list of devices....
+:mfg "Kodak" ; name a manufacturer
+:url "http://www.kodak.com/" ; manufacturer's URL
+
+:model "i1210"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x600a"
+:comment "No report yet."
+
+:model "i1220"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x600b"
+:comment "No report yet."
+
+:model "i1310"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x600c"
+:comment "No report yet."
+
+:model "i1320"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x600d"
+:comment "Reported to work on Fedora 12."
+
+:model "i1405"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x601a"
+:comment "No report yet."
+
+:model "i1410"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x600e"
+:comment "No report yet."
+
+:model "i1420"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x600f"
+:comment "No report yet."
+
+:model "i1440"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x6010"
+:comment "No report yet."
+
+:model "i2400"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x601c"
+:comment "No report yet."
+
+:model "i2600"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x601d"
+:comment "No report yet."
+
+:model "i2800"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x601e"
+:comment "No report yet."
+
+:model "i1000 A3 accessory"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x6012"
+:comment "Flatbed attachment for use with Kodak ADF scanner. Requires 12V power over usb cable. No report yet."
+
+:model "i1000 A4 accessory"
+:status :untested
+:interface "USB"
+:usbid "0x040a" "0x6011"
+:comment "Flatbed attachment for use with Kodak ADF scanner. Requires 12V power over usb cable. No report yet."
+
diff --git a/doc/descriptions-external/lhii.desc b/doc/descriptions-external/lhii.desc
new file mode 100644
index 0000000..a755709
--- /dev/null
+++ b/doc/descriptions-external/lhii.desc
@@ -0,0 +1,46 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "lhii" ; name of backend
+;:version "0.42" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://www.sane-project.org/backends/lhii/lhii-v0.2.tgz" ; backend's web page
+:comment "This backend is for old handscanners with proprietary adapter cards. You also need a kernel driver. You may find such drivers at that page: http://www.willamowius.de/scanner.html ."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Mustek" ; name a manufacturer
+:comment "Other models may also be supported."
+
+:model "CG-6000" ; name models for above-specified mfg.
+:status :untested ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "Proprietary" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:url "http://www.sane-project.org/backends/lhii/gi1904-v0.2.tgz" ; model's URL
+:comment "Old handscanner. Hasn't been tested for a long time but once worked. See link for the linux kernel driver that's necessary to run the scanner." ; comment about the model
+
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+; :status specifier is optional after :model and at the top-level
+
+
diff --git a/doc/descriptions-external/mustek_a3p1.desc b/doc/descriptions-external/mustek_a3p1.desc
new file mode 100755
index 0000000..e38b87a
--- /dev/null
+++ b/doc/descriptions-external/mustek_a3p1.desc
@@ -0,0 +1,21 @@
+:backend "mustek_a3p1"
+;:version "1.0-3"
+;:manpage "sane-mustek_a3p1"
+:url "http://www.meier-geinitz.de/sane/mustek_a3p1-backend/"
+:comment "Only Mustek P 3600 A3 Pro is supported at the moment"
+:devicetype :scanner
+
+:mfg "Mustek"
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "P 3600 A3 Pro"
+:interface "USB"
+:status :minimal
+:usbid "0x055f" "0x0401"
+:comment "Reports about scanning problems. 1800 dpi seems to work if only small scan areas are selected."
+
+
+
+
diff --git a/doc/descriptions-external/panamfs.desc b/doc/descriptions-external/panamfs.desc
new file mode 100644
index 0000000..fd49925
--- /dev/null
+++ b/doc/descriptions-external/panamfs.desc
@@ -0,0 +1,57 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "panamfs" ; name of backend
+;:version "1.0.0" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://panasonic.net/pcc/support/fax/common/table/linuxdriver.html" ; backend's web page
+:comment "External backend made by panasonic."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Panasonic" ; name a manufacturer
+:url "http://panasonic.net/" ; manufacturer's URL
+;:comment ""
+ ; comment about the manufacturer
+:model "DP-MC210"
+:status :untested
+:comment "No report yet."
+
+:model "DP-MB250"
+:status :untested
+:comment "No report yet."
+
+:model "DP-MB300 series"
+:status :untested
+:comment "No report yet."
+
+:model "KX-MB1500 series"
+:status :untested
+:comment "No report yet."
+
+:model "KX-MB2000 series"
+:status :untested
+:comment "No report yet."
+
+:model "KX-MB3000 series"
+:status :untested
+:comment "No report yet."
+
+:model "KX-MC6000 series"
+:status :untested
+:comment "No report yet."
+
diff --git a/doc/descriptions-external/primascan.desc b/doc/descriptions-external/primascan.desc
new file mode 100644
index 0000000..1f02202
--- /dev/null
+++ b/doc/descriptions-external/primascan.desc
@@ -0,0 +1,33 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "primascan" ; name of backend
+;:version "0.42" ; version of backend (or "unmaintained")
+;:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://www.geocities.com/trsh0101/index.html" ; backend's web page
+:comment "SANE backend and stand-alone program"
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Primax" ; name a manufacturer
+:url "http://www.primax.nl/"
+
+:model "Colorado 2400U"
+:interface "USB"
+:usbid "0x0461" "0x0346"
+:status :minimal
+;:comment ""
diff --git a/doc/descriptions-external/primax.desc b/doc/descriptions-external/primax.desc
new file mode 100644
index 0000000..30633b0
--- /dev/null
+++ b/doc/descriptions-external/primax.desc
@@ -0,0 +1,46 @@
+:backend "primax" ; name of backend
+;:version "1.1.beta1" ; version of backend
+;:manpage "sane-primax" ; name of manpage (if it exists)
+:url "http://px-backend.sourceforge.net" ; backend's web page
+:comment "This backend is not included because it depends on the code of the primax command line program. Therefore the author wants to keep it in the primax CVS tree."
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Primax" ; name a manufacturer
+:url "http://www.primax.nl/"
+
+:model "Colorado Direct 300"
+:interface "Parport"
+:status :good
+
+:model "Colorado Direct 600/30bit"
+:interface "Parport"
+:status :untested
+
+:mfg "Network" ; another manufacturer...
+
+:model "Scanny MM100"
+:interface "Parport"
+:status :good
+
+:mfg "Storm"
+
+:model "Totalscan"
+:interface "Parport"
+:status :untested
+
+:model "ImageWave"
+:interface "Parport"
+:status :untested
+
+:mfg "Genius"
+
+:model "Colorpage-Vivid+"
+:interface "Parport"
+:status :untested
+
+
+
+
diff --git a/doc/descriptions-external/samsung.desc b/doc/descriptions-external/samsung.desc
new file mode 100644
index 0000000..6bb2d0f
--- /dev/null
+++ b/doc/descriptions-external/samsung.desc
@@ -0,0 +1,88 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "samsung" ; name of backend
+;:version "(external)" ; version of backend
+:url "http://product.samsung.com/cgi-bin/nabc/support/b2c_support_product_results.jsp" ; backend's web page
+:comment "External binary-only backend for Linux i386 (and x86_64?). See the website for the latest release."
+
+
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Samsung" ; name a manufacturer
+:url "http://www.samsung.com/"
+:comment "Multi Function Peripheral. External backend made by Samsung."
+
+; name models for above-specified mfg.
+:model "SCX-4016"
+:interface "Parport USB"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "SCX-4100"
+:interface "Parport USB"
+:usbid "0x04e8" "0x3413"
+:status :good
+:comment "Is reported to work. "
+
+:model "SCX-4200"
+:interface "USB"
+:usbid "0x04e8" "0x341b"
+:status :good
+:comment "Is reported to work. The configuration applet must be run as root."
+
+:model "SCX-4216F"
+:interface "Parport USB"
+:usbid "0x04e8" "0x3409"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "SCX-4521F"
+:interface "Parport USB"
+:usbid "0x04e8" "0x3419"
+:status :basic
+:comment "See bug report #304052"
+
+:model "SCX-4720F"
+:interface "Parport USB"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "SCX-6220"
+:interface "Parport USB"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "SCX-6320F"
+:interface "Parport USB"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "SF-565P"
+:interface "Parport USB"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "SF-755P"
+:interface "Parport USB"
+:status :untested
+:comment "Please contact us if you use this device."
+
+:model "For models not mentioned here, check Samsung website"
+:interface "USB"
+:status :untested
+:comment "Please contact us if you have a Samsung device not mentioned here.""
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions-external/scanwit.desc b/doc/descriptions-external/scanwit.desc
new file mode 100644
index 0000000..dc9510b
--- /dev/null
+++ b/doc/descriptions-external/scanwit.desc
@@ -0,0 +1,27 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "scanwit" ; name of backend
+:url "ftp://ftp.mccme.ru/users/ushakov/scanwit"
+;:version "(2001-10-10)" ; version of backend
+;
+;:manpage "sane-ibm" ; name of manpage (if it exists)
+:comment "The backend is not included because it lacks code for safe detection of the scanner and documentation."
+
+:devicetype :scanner
+
+:mfg "Benq (Acer)" ; name a manufacturer
+:url "http://www.benq.com"
+:comment "Formerly Acer Peripherals"
+
+:model "ScanWit 2720S" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :basic
+:comment "Usable, but not complete"
diff --git a/doc/descriptions-external/template.desc. b/doc/descriptions-external/template.desc.
new file mode 100644
index 0000000..25b9b5a
--- /dev/null
+++ b/doc/descriptions-external/template.desc.
@@ -0,0 +1,81 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "template" ; name of backend
+:version "0.42" ; version of backend (or "unmaintained")
+:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://www.luser.com/temp/" ; backend's web page
+:url "http://www.luser.com/b/" ; another backend webpage
+:comment "This backend supports only the USB and SCSI models"
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "TemPlate" ; name a manufacturer
+:url "http://www.template.com/" ; manufacturer's URL
+:url "http://www.template.de/" ; another manufacturer URL
+:comment "TemPlate scanners are sometimes labeled \"TMP\""
+ ; comment about the manufacturer
+
+:model "Templ Z" ; name models for above-specified mfg.
+:status :untested ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "SCSI" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:usbid "0x1234" "0x4321" ; Vendor and product ids of an USB device
+:url "http://www.tmp.com/z.html" ; model's URL
+:comment "With Z-Axis scrolling" ; comment about the model
+
+:model "Templ ZS"
+:interface "USB"
+:usbid "0x1234" "0x4322"
+:status :unsupported
+:comment "No support yet, but we have docs."
+
+:model "Templ ZQ"
+:interface "USB"
+:usbid "0x1234" "0x4323"
+:status :minimal
+
+:model "Templ ZY"
+:interface "SCSI"
+:status :basic
+
+:model "Templ ZZ"
+:interface "SCSI"
+:status :good
+
+:mfg "ArmorPlate" ; another manufacturer...
+:url "http://www.armorplate.com/"
+
+:model "AmplScan II"
+:interface "SCSI"
+:status :complete
+:comment "AmplScan *II*, not AmplScan!"
+
+:devicetype :api ; specify a different type
+:desc "Interface to FrObYz API" ; describe a non-hardware device
+:comment "Only FrObYz version 2.0 is supported!"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+; :status specifier is optional after :model and at the top-level
+
+
diff --git a/doc/descriptions-external/v4l2.desc b/doc/descriptions-external/v4l2.desc
new file mode 100644
index 0000000..f9ab650
--- /dev/null
+++ b/doc/descriptions-external/v4l2.desc
@@ -0,0 +1,21 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "v4l2" ; name of backend
+;:version "(19991125)" ; version of backend
+;:manpage "sane-v4l2" ; name of manpage (if it exists)
+:url "http://video.inodes.org/sane-v4l2/" ; backend's web page
+:comment "The status of this backend is unknown. It hasn't been updated for years. The v4l2 API is now in Linux 2.5 but it's not clear if the v4l2 backend is compatible to that API."
+
+:devicetype :api ; specify a different type
+:desc "Interface to Video For Linux 2 API" ; describe a non-hardware device
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions-external/viceo.desc b/doc/descriptions-external/viceo.desc
new file mode 100644
index 0000000..9f1d9f1
--- /dev/null
+++ b/doc/descriptions-external/viceo.desc
@@ -0,0 +1,75 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "viceo" ; name of backend
+:version "0.6" ; version of backend
+;:manpage "sane-viceo" ; name of manpage (if it exists)
+:url "mailto:viceo@stevencherie.net" ; backend's web page
+:url "http://viceo.orcon.net.nz/"
+:comment "Supports E3 and E4 family USB scanners from Genius, Primax, IBM. The backend is not included because the license situation is unclear. Also it only works on Linux and needs a a patch for the kernel scanner driver which isn't available on 2.6."
+
+:devicetype :scanner
+
+:mfg "Genius" ; name a manufacturer
+:url "http://www.genius-kye.com/"
+:model "Vivid Pro USB" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x0458" "0x2001"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
+
+:mfg "Primax"
+:url "http://www.primax.nl/"
+:model "Colorado USB 19200"
+:interface "USB"
+:usbid "0x0461" "0x0360"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
+
+:model "Colorado 2200 USB"
+:interface "USB"
+:usbid "0x0461" "0x0364"
+:status :untested
+:comment "Untested. See link for details. Linux 2.4 only, needs a kernel patch."
+:url "/unsupported/primax-colorado-2200-usb.html"
+
+:mfg "Visioneer"
+
+:model "OneTouch 6100"
+:interface "USB"
+:usbid "0x04a7" "0x0231"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
+
+:model "OneTouch 7600"
+:interface "USB"
+:usbid "0x04a7" "0x0211"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
+
+:model "OneTouch 8600"
+:interface "USB"
+:usbid "0x04a7" "0x0331"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
+
+:mfg "IBM"
+:url "http://www.ibm.com/"
+:model "IdeaScan 2000 USB"
+:interface "USB"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
+
+:mfg "LG Electronics"
+:model "Scanworks 600U"
+:interface "USB"
+:usbid "0x0461" "0x0364"
+:status :basic
+:comment "Linux 2.4 only, needs a kernel patch."
diff --git a/doc/descriptions.txt b/doc/descriptions.txt
new file mode 100644
index 0000000..d4cab94
--- /dev/null
+++ b/doc/descriptions.txt
@@ -0,0 +1,130 @@
+SANE Backend specification files
+--------------------------------
+
+The specification files (e.g. epson.desc) describe the capabilities of the
+backends. They provide information about the backend itself (e.g., name and
+version) and about the supported devices (e.g., manufacturer and product
+names). One file per backend should be used. Descriptions for backends
+included in the SANE distribution are located in
+`sane-backends/doc/descriptions/' while descriptions of external backends
+should be placed in `sane-backends/doc/descriptions-external/'.
+
+There is a special file `sane-backends/doc/descriptions/unsupported.desc' that
+doesn't belong to a backend but lists all (known) devices not supported by
+SANE. It may contain additional information about the device or links to
+non-SANE based programs.
+
+The specification files can be used to generate lists of backends and/or
+supported devices, hotplug/udev device lists, databases for search engines, and
+similar sources of information. Currently the creation of ASCII output and HTML
+lists is supported by `tools/sane-desc.c'. The generation of the HTML pages can
+be started by `make html-pages' in the doc/ directory.
+
+The file contents is basically emacs-lisp --- so ";" indicates comment to end
+of line. Empty lines are ignored.
+
+All syntactic elements are keyword tokens, followed by a string or keyword
+argument, as specified. All keyword tokens but ":backend" are optional.
+
+
+Backend-specific keyword tokens
+-------------------------------
+
+The keyword `:backend' must be specified exactly once. It must be the first
+keyword in each specification file. It is followed by the name of the backend.
+Example: `:backend "epson"'
+
+The following backend-specific keyword tokens are optional. If they are used,
+they shouldn't be used more than once per file.
+
+`:version' has one string argument containing the backend's version
+number. The version should match the version used in the backend source code.
+Example: `:version: "12.3.5"'. If the backend isn't maintained, the version
+should be `unmaintained' or contain this tag together with the version number.
+
+`:new' indicates that the backend is brand-new in the latest SANE release if
+the keyword argument is `:yes'. Otherwise, `:no' should be used or `:new'
+should be omitted at all.
+Example: `:new :yes'
+
+The `:manpage' keyword token has one string argument that names the manual
+page for the backend.
+Example: `:manpage "sane-epson"'
+
+
+Device-specific keyword tokens
+------------------------------
+
+The keyword `:devicetype' starts a list of devices supported by the backend.
+It has one keyword argument. The following types are possible: `:scanner',
+`:stillcam' (still camera), `:vidcam' (video camera), `:meta' (meta backend
+like dll), `:api' (API like PINT). `:devicetype' can be used more than
+once. Each instance starts a new list of devices.
+Example: `:devicetype :scanner'
+
+`:mfg' has one string argument that defines the name of the manufacturer of
+the following devices. This keyword should be only used for hardware
+devicetypes (scanner, stillcam, vidcam). To avoid different spellings, the
+manufacturer list of the SANE standard should be used. `:mfg' can be used more
+than once.
+Example: `:mfg "Epson"'.
+
+The keyword token `:model' is used to specify the name of a hardware device in
+its string token. It must be preceded by a `:mfg' keyword. `:model' can be
+used more than once.
+Example: `:model "Perfection 636S"'
+
+`:interface' defines how the device is connected to the computer. Its string
+argument can be one or more of "SCSI", "USB", "Parport", "Serial port",
+"IEEE-1394", "JetDirect", "Ethernet", or "Proprietary". If neither one fits,
+please contact the SANE mailing list for advice. The "Parport" entries can be
+amended by "(SPP)", "(ECP)" and/or "(EPP)". The `:interface' keyword refers to
+the previous `:model', is optional and should be used only once per model.
+Example: `:interface "SCSI USB IEEE-1394"'
+
+`:usbid' defines the USB vendor and product ids of the device. It has two
+arguments which must be lower case hexadecimal (4 digits). The first one is the
+USB vendor id, the second one the USB product id. The keyword refers to the
+previous `:model', is optional, and applicable for devices with :interface "USB"
+only, and should be used only once per model. The special parameter "ignore" can
+be used if no vendor or product ids are given intentionally, e.g. for a group of
+scanners.
+Example: `:usbid "0x1234" "0x4321"'
+
+The keyword `:status' is an indication of the level of support for the model.
+It's followed by one of the following keyword arguments: `:unsupported',
+`:untested', `:minimal', `:basic', `:good', or `:complete'. The `:status'
+keyword refers to the previous `:model', is optional and should be used only
+once per model.
+`:unsupported' means the device is not supported at least by this backend. The
+keyword should only be used in the file `unsupported.desc', or to make clear
+that a specific scanner is not supported by a backend. `:untested' means the
+device may be supported but couldn't be tested. `:minimal' means that the
+device is detected and scans at least in one mode. But the quality is bad or
+important features won't work. `:basic' means it works at least in the most
+important modes but quality is not perfect. `:good' means the device is usable
+for day-to-day work. Some rather exotic features may be missing. `:complete'
+means the backends supports everything the device can do. Example: `:status
+:untested'
+
+The `:desc' keyword token is used for non-hardware devices (API and meta). Its
+string argument describes the meta backend or API. It should be used only once
+per device type.
+Example: `:desc "Scanners with the machine-independent PINT interface"
+
+
+Multi-level keyword tokens
+--------------------------
+
+The following keyword tokens can be used after `:backend', `:mfg', `:model',
+and `:desc'.
+
+One or more `:url' keyword tokens can be used to point to more information
+about the entry the keyword refers to. The string argument contains a URL to
+e.g. a manufacturer's or backend's homepage. The most important URL should be
+listed first.
+Example: `:url "http://www.epson.com/"'
+
+`:comment' is used to add more information to one of the entries. The string
+argument can e.g. contain comments on the level of support for a model.
+Example: `:comment "US version of GT-5000"'
diff --git a/doc/descriptions/abaton.desc b/doc/descriptions/abaton.desc
new file mode 100644
index 0000000..b2cc5ed
--- /dev/null
+++ b/doc/descriptions/abaton.desc
@@ -0,0 +1,20 @@
+:backend "abaton"
+:version "unmaintained"
+:manpage "sane-abaton"
+;:url "http://aix2.uottawa.ca/~s1204672/sane/"
+
+:devicetype :scanner
+
+:mfg "Abaton"
+;:url "http://www.everex.com/"
+;dead?
+
+:model "Scan 300/GS"
+:interface "SCSI"
+:status :complete
+:comment "All known modes and functions supported"
+
+:model "Scan 300/S"
+:interface "SCSI"
+:status :untested
+:comment "Untested, use with caution"
diff --git a/doc/descriptions/agfafocus.desc b/doc/descriptions/agfafocus.desc
new file mode 100644
index 0000000..bcb482f
--- /dev/null
+++ b/doc/descriptions/agfafocus.desc
@@ -0,0 +1,40 @@
+:backend "agfafocus"
+:version "unmaintained"
+:manpage "sane-agfafocus"
+
+:devicetype :scanner
+
+:mfg "AGFA"
+:url "http://www.agfa.com/"
+
+:model "Focus GS Scanner"
+:interface "SCSI"
+:status :untested
+:comment "6 bit gray"
+
+:model "Focus Lineart Scanner"
+:interface "SCSI"
+:status :untested
+:comment "Lineart only? Untested."
+
+:model "Focus II"
+:interface "SCSI"
+:status :untested
+:comment "gray only"
+
+:model "Focus Color"
+:interface "SCSI"
+:status :good
+:comment "3-pass"
+
+:model "Focus Color Plus"
+:interface "SCSI"
+:status :good
+:comment "3-pass"
+
+:mfg "Siemens"
+
+:model "S9036"
+:interface "SCSI"
+:status :untested
+:comment "gray only"
diff --git a/doc/descriptions/apple.desc b/doc/descriptions/apple.desc
new file mode 100644
index 0000000..046bb4e
--- /dev/null
+++ b/doc/descriptions/apple.desc
@@ -0,0 +1,26 @@
+;Apple backend .desc file by Milon Firikis.
+
+:backend "apple" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-apple" ; name of manpage (if it exists)
+;:url "http://no.www.page.yet/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Apple"
+:url "http://developer.apple.com/"
+:model "Apple Scanner"
+:interface "SCSI"
+:status :good ; :alpha, :beta, :stable, :new
+:comment "4bit, 16 shades of gray"
+
+:model "OneScanner"
+:interface "SCSI"
+:comment "8bit, 256 shades of gray. The backend needs work especially in the quantization code but it may work."
+:status :basic ; :alpha, :beta, :stable, :new
+
+
+:model "Color OneScanner"
+:interface "SCSI"
+:status :minimal ; :alpha, :beta, :stable, :new
+:comment "truecolor (needs much work) but it scans in non color modes."
diff --git a/doc/descriptions/artec.desc b/doc/descriptions/artec.desc
new file mode 100644
index 0000000..62b2ec6
--- /dev/null
+++ b/doc/descriptions/artec.desc
@@ -0,0 +1,72 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "artec" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-artec" ; name of manpage (if it exists)
+:url "http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Artec/Ultima" ; name a manufacturer
+:url "http://www.artecusa.com/"
+;; name models for above-specified mfg.
+
+:model "AT3"
+:interface "SCSI"
+:status :complete
+:comment "all modes working"
+
+:model "A6000C"
+:interface "SCSI"
+:status :complete
+:comment "all modes working"
+
+:model "A6000C PLUS"
+:interface "SCSI"
+:status :complete
+:comment "f/w <= v1.92 basic, f/w >= v1.93 OK"
+
+:model "AT6"
+:status :good
+:interface "SCSI"
+:comment "Scan head needs to return home before another scan can be started."
+
+:model "AT12"
+:interface "SCSI"
+:status :complete
+:comment "all modes working"
+
+:model "AM12S"
+:interface "SCSI"
+:status :complete
+:comment "all modes working"
+
+:mfg "BlackWidow"
+:url "http://www.blackwidow.co.uk/"
+
+:model "BW4800SP"
+:interface "SCSI"
+:status :complete
+:comment "rebadged Artec AT3"
+
+:mfg "Plustek"
+:url "http://www.plustek.com/"
+
+:model "OpticPro 19200S"
+:interface "SCSI"
+:status :complete
+:comment "rebadged Artec AM12S"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/artec_eplus48u.desc b/doc/descriptions/artec_eplus48u.desc
new file mode 100644
index 0000000..674333a
--- /dev/null
+++ b/doc/descriptions/artec_eplus48u.desc
@@ -0,0 +1,106 @@
+;
+; SANE Backend specification file
+;
+
+:backend "artec_eplus48u"
+:version "unmaintained"
+:manpage "sane-artec_eplus48u"
+;:url "http://www.angelfire.com/linux/crapsite/"
+:devicetype :scanner
+
+:mfg "Artec/Ultima"
+:url "http://www.artecusa.com/"
+
+:model "E+ 48U"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4003"
+:comment "CIS scanner based on the GT6816 chip. Apparently all other devices are re-badged Artec scanners."
+
+:model "E+ Pro"
+:status :minimal
+:interface "USB"
+:usbid "0x05d8" "0x4004"
+:comment "Works up to 600dpi, but not 1200. Needs better calibration. See bug #310490"
+
+
+:mfg "Medion/Lifetec/Tevion/Cytron"
+:url "http://www.medion.com"
+:comment "Sold by Aldi and Tchibo."
+
+:model "MD9693"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4003"
+
+:model "MD9705"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4003"
+
+:model "MD4394"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4003"
+:comment "Only scanners with product id 0x4003 will work; try the gt68xx backend, if your scanner has product id 0x4002 "
+
+
+:mfg "Trust"
+:url "http://www.trust-site.com"
+
+:model "Easy Webscan 19200"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4006"
+
+:model "240H Easy Webscan Gold"
+:status :basic
+:interface "USB"
+:usbid "0x05d8" "0x4007"
+:comment "Works up to 600 dpi"
+
+
+:mfg "Memorex"
+:url "http://www.artecusa.com/"
+
+:model "MEM 48U"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4005"
+
+
+:mfg "Microstar"
+:url "http://www.microstar.de/"
+
+:model "MR 9791"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4003"
+
+
+:mfg "UMAX"
+:url "http://www.umax.com/"
+:url "http://www.umax.com.tw/"
+:url "http://www.umax.de/en"
+:url "http://www.umax-europe.com"
+:url "http://www.umaxjapan.co.jp"
+:url "http://www.umax.com.cn"
+
+:model "AstraSlim SE"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4009"
+
+:model "AstraSlim 1200 SE"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4010"
+
+
+:mfg "Yakumo"
+:url "http://www.yakumo.com/"
+
+:model "Scan50"
+:status :good
+:interface "USB"
+:usbid "0x05d8" "0x4011"
diff --git a/doc/descriptions/as6e.desc b/doc/descriptions/as6e.desc
new file mode 100644
index 0000000..5270a80
--- /dev/null
+++ b/doc/descriptions/as6e.desc
@@ -0,0 +1,44 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "as6e" ; name of backend
+:version "0.5" ; version of backend
+:manpage "sane-as6e" ; name of manpage (if it exists)
+:url "http://as6edriver.sourceforge.net/"
+
+:devicetype :scanner
+
+:mfg "Artec/Ultima" ; name a manufacturer
+:url "http://www.artecusa.com/"
+
+:model "AS6E"
+:interface "Parport"
+:status :basic
+:comment "Requires the program 'as6edriver' to run."
+
+:mfg "Trust" ; name a manufacturer
+:url "http://www.trust-site.com"
+:comment "Carefully check the model names. Trust uses similar names for completely different hardware."
+
+:model "Easy Scan 9600 Plus"
+:interface "Parport"
+:status :basic
+:comment "Requires the program 'as6edriver' to run."
+
+:mfg "Dexxa" ; name a manufacturer
+:url "http://www.dexxa.com"
+
+:model "4800"
+:interface "Parport"
+:status :basic
+:comment "Requires the program 'as6edriver' to run."
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/avision.desc b/doc/descriptions/avision.desc
new file mode 100644
index 0000000..708f5ea
--- /dev/null
+++ b/doc/descriptions/avision.desc
@@ -0,0 +1,851 @@
+; SANE Backend specification file
+;
+; THIS FILE IS GENERATED FROM THE "avision.c" FILE AUTOMATICALLY - DO NOT EDIT
+; THIS FILE MANUALLY !!!
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+
+; name of backend
+:backend "avision"
+
+; version of backend
+:version "Build: 296"
+;status: alpha, beta, stable, new
+;:status :stable
+
+; backend's web page
+:url "http://skull.piratehaven.org/~mike/sane/avision.html"
+
+; name of manpage (if it exists)
+:manpage "sane-avision"
+
+:devicetype :scanner
+
+:mfg "Avision"
+:url "http://www.avision.com"
+
+:model "AV100CS"
+:interface "SCSI"
+:status :untested
+
+:model "AV100IIICS"
+:interface "SCSI"
+:status :untested
+
+:model "AV100S"
+:interface "SCSI"
+:status :untested
+
+:model "AV120"
+:interface "USB"
+:usbid "0x0638" "0x0a27"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "AV121"
+:interface "USB"
+:usbid "0x0638" "0x0a3c"
+:comment "sheetfed scanner"
+:status :good
+
+:model "AV122"
+:interface "USB"
+:usbid "0x0638" "0x0a33"
+:comment "sheetfed duplex scanner"
+:status :good
+
+:model "AV122 C2"
+:interface "USB"
+:usbid "0x0638" "0x0a93"
+:comment "sheetfed duplex scanner"
+:status :good
+
+:model "AV210"
+:interface "USB"
+:usbid "0x0638" "0x0a24"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "AV210"
+:interface "USB"
+:usbid "0x0638" "0x0a25"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "AV210C2"
+:interface "USB"
+:usbid "0x0638" "0x0a3a"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "AV210C2-G"
+:interface "USB"
+:usbid "0x0638" "0x0a2f"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "AV210D2+"
+:interface "USB"
+:usbid "0x0638" "0x1a35"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "AV220"
+:interface "USB"
+:usbid "0x0638" "0x0a23"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV220C2"
+:interface "USB"
+:usbid "0x0638" "0x0a2a"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV220D2"
+:interface "USB"
+:usbid "0x0638" "0x0a2b"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV220+"
+:interface "USB"
+:usbid "0x0638" "0x0a2c"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV220C2-G"
+:interface "USB"
+:usbid "0x0638" "0x0a2d"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV220C2-B"
+:interface "USB"
+:usbid "0x0638" "0x0a2e"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV220-G"
+:interface "USB"
+:usbid "0x0638" "0x0a94"
+:comment "duplex! sheetfed scanner"
+:status :complete
+
+:model "AV240SC"
+:interface "SCSI"
+:status :untested
+
+:model "AV260CS"
+:interface "SCSI"
+:status :untested
+
+:model "AV360CS"
+:interface "SCSI"
+:status :untested
+
+:model "AV363CS"
+:interface "SCSI"
+:status :untested
+
+:model "AV420CS"
+:interface "SCSI"
+:status :untested
+
+:model "AV6120"
+:interface "SCSI"
+:status :untested
+
+:model "AV610"
+:interface "USB"
+:usbid "0x0638" "0x0a18"
+:status :good
+
+:model "AV600U Plus"
+:interface "USB"
+:usbid "0x0638" "0x0a18"
+:status :good
+
+:model "AV610C2"
+:interface "USB"
+:usbid "0x0638" "0x0a5e"
+:status :good
+
+:model "AM3000 Series"
+:interface "USB"
+:usbid "0x0638" "0x0a41"
+:comment "MFD"
+:status :basic
+
+:model "DS610CU Scancopier"
+:interface "USB"
+:usbid "0x0638" "0x0a16"
+:comment "1 pass, 600 dpi, A4"
+:status :good
+
+:model "AV620CS"
+:interface "SCSI"
+:comment "1 pass, 600 dpi"
+:status :complete
+
+:model "AV620CS Plus"
+:interface "SCSI"
+:comment "1 pass, 1200 dpi"
+:status :complete
+
+:model "AV630CS"
+:interface "SCSI"
+:comment "1 pass, 1200 dpi"
+:status :complete
+
+:model "AV630CSL"
+:interface "SCSI"
+:comment "1 pass, 1200 dpi"
+:status :untested
+
+:model "AV6240"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV600U"
+:interface "USB"
+:usbid "0x0638" "0x0a13"
+:comment "1 pass, 600 dpi"
+:status :good
+
+:model "AV660S"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV680S"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV690U"
+:interface "SCSI"
+:comment "1 pass, 2400 dpi"
+:status :untested
+
+:model "AV800S"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV810C"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV820"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV820C"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV820C Plus"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV830C"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV830C Plus"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV880"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV880C"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :untested
+
+:model "AV3200C"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV3200SU"
+:interface "USB"
+:usbid "0x0638" "0x0a4e"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV3730SU"
+:interface "USB"
+:usbid "0x0638" "0x0a4f"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV3750SU"
+:interface "USB"
+:usbid "0x0638" "0x0a65"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV3800C"
+:interface "SCSI"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "AV3850SU"
+:interface "USB"
+:usbid "0x0638" "0x0a66"
+:comment "1 pass, ??? dpi"
+:status :complete
+
+:model "FB6000E"
+:interface "SCSI"
+:comment "1 pass, 1200 dpi, A3 - duplex! - zero edge!"
+:status :complete
+
+:model "FB6080E"
+:interface "USB"
+:usbid "0x0638" "0x0a82"
+:comment "1 pass, 1200 dpi, A3 - duplex! - zero edge!"
+:status :complete
+
+:model "FB2080E"
+:interface "USB"
+:usbid "0x0638" "0x0a84"
+:comment "1 pass, 600 dpi, zero-edge" ASIC 7
+:status :basic
+
+:model "AV8000S"
+:interface "SCSI"
+:comment "1 pass, 1200 dpi, A3"
+:status :complete
+
+:model "AV8050U"
+:interface "USB"
+:usbid "0x0638" "0x0a4d"
+:comment "1 pass, 1200 dpi, A3 - duplex!"
+:status :complete
+
+:model "AV8300"
+:interface "USB"
+:usbid "0x0638" "0x0a40"
+:comment "1 pass, 1200 dpi, A3 - duplex!"
+:status :complete
+
+:model "AV8350"
+:interface "USB"
+:usbid "0x0638" "0x0a68"
+:comment "1 pass, 1200 dpi, A3 - duplex!"
+:status :complete
+
+:model "IT8300"
+:interface "USB"
+:usbid "0x0638" "0x0a61"
+:comment "1 pass, 1200 dpi, A3 - duplex!, LCD screen, paper sensors"
+:status :good
+
+:model "@V2500"
+:interface "USB"
+:usbid "0x0638" "0x0aa1"
+:status :untested
+
+:model "@V5100"
+:interface "USB"
+:usbid "0x0638" "0x0a45"
+:comment "1 pass, 1200 dpi, A3 - duplex!, LCD screen, paper sensors"
+:status :good
+
+:model "AVA3"
+:interface "SCSI"
+:comment "1 pass, 600 dpi, A3"
+:status :basic
+
+
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com"
+
+:model "ScanJet 5300C"
+:interface "USB"
+:usbid "0x03f0" "0x0701"
+:comment "1 pass, 2400 dpi - some FW revisions have x-axis image scaling problems over 1200 dpi"
+:status :complete
+
+:model "ScanJet 5370C"
+:interface "USB"
+:usbid "0x03f0" "0x0701"
+:comment "1 pass, 2400 dpi - some FW revisions have x-axis image scaling problems over 1200 dpi"
+:status :good
+
+:model "ScanJet 7400c"
+:interface "USB"
+:usbid "0x03f0" "0x0801"
+:comment "1 pass, 2400 dpi - dual USB/SCSI interface"
+:status :good
+
+:model "ScanJet 7450c"
+:interface "USB"
+:usbid "0x03f0" "0x0801"
+:comment "1 pass, 2400 dpi - dual USB/SCSI interface"
+:status :good
+
+:model "ScanJet 7490c"
+:interface "USB"
+:usbid "0x03f0" "0x0801"
+:comment "1 pass, 1200 dpi - dual USB/SCSI interface"
+:status :good
+
+:model "ScanJet 8200"
+:interface "USB"
+:usbid "0x03f0" "0x0b01"
+:comment "1 pass, 4800 (?) dpi - USB 2.0"
+:status :good
+
+:model "ScanJet 8250"
+:interface "USB"
+:usbid "0x03f0" "0x0b01"
+:comment "1 pass, 4800 (?) dpi - USB 2.0"
+:status :good
+
+:model "ScanJet 8270"
+:interface "USB"
+:usbid "0x03f0" "0x3905"
+:comment "1 pass, 4800 (?) dpi - USB 2.0"
+:status :good
+
+:model "ScanJet 8290"
+:interface "USB"
+:usbid "0x03f0" "0x0b01"
+:comment "1 pass, 4800 (?) dpi - USB 2.0 and SCSI - only SCSI tested so far"
+:status :good
+
+:model "ScanJet 8300"
+:interface "USB"
+:usbid "0x03f0" "0x3805"
+:comment "1 pass, 4800 (?) dpi - USB 2.0"
+:status :good
+
+:model "ScanJet 8350"
+:interface "USB"
+:usbid "0x03f0" "0x3805"
+:comment "1 pass, 4800 (?) dpi - USB 2.0"
+:status :good
+
+:model "ScanJet 8390"
+:interface "USB"
+:usbid "0x03f0" "0x3805"
+:comment "1 pass, 4800 (?) dpi - USB 2.0"
+:status :good
+
+
+:mfg "Minolta"
+:url "http://www.minolta.com"
+
+:model "Dimage Scan Dual I"
+:interface "SCSI"
+:status :basic
+
+:model "Scan Multi Pro"
+:interface "SCSI"
+:status :untested
+
+:model "Dimage Scan Dual II"
+:interface "USB"
+:usbid "0x0638" "0x026a"
+:comment "1 pass, film-scanner"
+:status :good
+
+:model "Elite II"
+:interface "USB"
+:usbid "0x0686" "0x4004"
+:comment "1 pass, film-scanner"
+:status :untested
+
+:model "Dimage Scan Dual III"
+:interface "USB"
+:usbid "0x0686" "0x400d"
+:comment "1 pass, film-scanner"
+:status :good
+
+:model "Dimage Scan Elite 5400"
+:interface "USB"
+:usbid "0x0686" "0x400e"
+:comment "1 pass, film-scanner"
+:status :good
+
+
+:mfg "Minolta-QMS"
+
+:model "SC-110"
+:interface "USB"
+:usbid "0x0638" "0x0a15"
+:status :untested
+
+:model "SC-215"
+:interface "USB"
+:usbid "0x0638" "0x0a16"
+:status :good
+
+
+:mfg "Mitsubishi"
+
+:model "MCA-ADFC"
+:interface "SCSI"
+:status :untested
+
+:model "S1200C"
+:interface "SCSI"
+:status :untested
+
+:model "S600C"
+:interface "SCSI"
+:status :untested
+
+:model "SS600"
+:interface "SCSI"
+:status :good
+
+
+:mfg "Fujitsu"
+:url "http://www.fujitsu.com"
+
+:model "ScanPartner"
+:interface "SCSI"
+:status :untested
+
+:model "ScanPartner 10"
+:interface "SCSI"
+:status :untested
+
+:model "ScanPartner 10C"
+:interface "SCSI"
+:status :untested
+
+:model "ScanPartner 15C"
+:interface "SCSI"
+:status :untested
+
+:model "ScanPartner 300C"
+:interface "SCSI"
+:status :untested
+
+:model "ScanPartner 600C"
+:interface "SCSI"
+:status :untested
+
+:model "ScanPartner 620C"
+:interface "SCSI"
+:status :good
+
+:model "ScanPartner Jr"
+:interface "SCSI"
+:status :untested
+
+:model "ScanStation"
+:interface "SCSI"
+:status :untested
+
+:model "fi-4010CU"
+:interface "USB"
+:usbid "0x04c5" "0x1029"
+:status :untested
+
+:model "fi-5015C"
+:interface "USB"
+:usbid "0x04c5" "0x10ef"
+:status :good
+
+
+:mfg "Kodak"
+:url "http://www.kodak.com"
+
+:model "i30"
+:interface "USB"
+:usbid "0x040a" "0x6001"
+:status :untested
+
+:model "i40"
+:interface "USB"
+:usbid "0x040a" "0x6002"
+:status :basic
+
+:model "i50"
+:interface "USB"
+:usbid "0x040a" "0x6003"
+:status :untested
+
+:model "i55"
+:interface "USB"
+:usbid "0x040a" "0x6003"
+:status :untested
+
+:model "i60"
+:interface "USB"
+:usbid "0x040a" "0x6004"
+:status :untested
+
+:model "i65"
+:interface "USB"
+:usbid "0x040a" "0x6004"
+:status :untested
+
+:model "i80"
+:interface "USB"
+:usbid "0x040a" "0x6005"
+:status :good
+
+
+:mfg "iVina"
+
+:model "1200U"
+:interface "USB"
+:usbid "0x0638" "0x0268"
+:status :untested
+
+
+:mfg "Visioneer"
+
+:model "Strobe XP 450"
+:interface "USB"
+:usbid "0x04a7" "0x0424"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Strobe XP 450-G"
+:interface "USB"
+:usbid "0x04a7" "0x0491"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Strobe XP 470"
+:interface "USB"
+:usbid "0x04a7" "0x0479"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Strobe XP 470-G"
+:interface "USB"
+:usbid "0x04a7" "0x048f"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9320"
+:interface "USB"
+:usbid "0x04a7" "0x0420"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9450"
+:interface "USB"
+:usbid "0x04a7" "0x0421"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9450-G"
+:interface "USB"
+:usbid "0x04a7" "0x047a"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9550"
+:interface "USB"
+:usbid "0x04a7" "0x0422"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9650"
+:interface "USB"
+:usbid "0x04a7" "0x0390"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9650-G"
+:interface "USB"
+:usbid "0x04a7" "0x047b"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9750"
+:interface "USB"
+:usbid "0x04a7" "0x0423"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "9750-G"
+:interface "USB"
+:usbid "0x04a7" "0x0493"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Patriot 430"
+:interface "USB"
+:usbid "0x04a7" "0x0497"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Patriot 470"
+:interface "USB"
+:usbid "0x04a7" "0x048f"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Patriot 680"
+:interface "USB"
+:usbid "0x04a7" "0x0498"
+:comment "sheetfed scanner"
+:status :complete
+
+:model "Patriot 780"
+:interface "USB"
+:usbid "0x04a7" "0x0499"
+:comment "sheetfed scanner"
+:status :complete
+
+
+:mfg "Xerox"
+
+:model "DocuMate150"
+:interface "USB"
+:usbid "0x04a7" "0x049c"
+:status :good
+
+:model "DocuMate152"
+:interface "USB"
+:usbid "0x04a7" "0x0477"
+:status :good
+
+:model "DocuMate162"
+:interface "USB"
+:usbid "0x04a7" "0x049d"
+:status :good
+
+:model "DocuMate250"
+:interface "USB"
+:usbid "0x04a7" "0x0448"
+:status :good
+
+:model "DocuMate250-G"
+:interface "USB"
+:usbid "0x04a7" "0x0490"
+:status :good
+
+:model "DocuMate252"
+:interface "USB"
+:usbid "0x04a7" "0x0449"
+:status :good
+
+:model "DocuMate252-G"
+:interface "USB"
+:usbid "0x04a7" "0x048c"
+:status :good
+
+:model "DocuMate232"
+:interface "USB"
+:usbid "0x04a7" "0x0476"
+:status :good
+
+:model "DocuMate262"
+:interface "USB"
+:usbid "0x04a7" "0x044c"
+:status :good
+
+:model "DocuMate262-G"
+:interface "USB"
+:usbid "0x04a7" "0x048d"
+:status :good
+
+:model "DocuMate262i"
+:interface "USB"
+:usbid "0x04a7" "0x04a7"
+:status :good
+
+:model "DocuMate272"
+:interface "USB"
+:usbid "0x04a7" "0x0475"
+:status :untested
+
+:model "DocuMate272-G"
+:interface "USB"
+:usbid "0x04a7" "0x048e"
+:status :untested
+
+:model "DocuMate510"
+:interface "USB"
+:usbid "0x04a7" "0x0446"
+:status :untested
+
+:model "DocuMate512"
+:interface "USB"
+:usbid "0x04a7" "0x0495"
+:status :untested
+
+:model "DocuMate510-G"
+:interface "USB"
+:usbid "0x04a7" "0x047c"
+:status :untested
+
+:model "DocuMate520"
+:interface "USB"
+:usbid "0x04a7" "0x0447"
+:status :untested
+
+:model "DocuMate520-G"
+:interface "USB"
+:usbid "0x04a7" "0x0492"
+:status :untested
+
+:model "DocuMate632"
+:interface "USB"
+:usbid "0x04a7" "0x0498"
+:status :untested
+
+:model "DocuMate752"
+:interface "USB"
+:usbid "0x04a7" "0x0478"
+:status :untested
+
+:model "DocuMate752"
+:interface "USB"
+:usbid "0x04a7" "0x049a"
+:status :untested
+
+
+:mfg "OKI"
+
+:model "S700 Scancopier"
+:interface "USB"
+:usbid "0x0638" "0x0a16"
+:comment "1 pass, 600 dpi, A4"
+:status :good
+
+
+:mfg "Bell+Howell"
+
+:model "2000F"
+:interface "SCSI"
+:comment "1 pass, ??? dpi, A4"
+:status :basic
+
+
+:mfg "Kyocera"
+
+:model "FS-1016MFP"
+:interface "USB"
+:usbid "0x0482" "0x0335"
+:comment "1 pass, ??? dpi, A4"
+:status :untested
+
diff --git a/doc/descriptions/bh.desc b/doc/descriptions/bh.desc
new file mode 100644
index 0000000..d20715e
--- /dev/null
+++ b/doc/descriptions/bh.desc
@@ -0,0 +1,56 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "bh" ; name of backend
+:version "1.0-4" ; version of backend
+:manpage "sane-bh" ; name of manpage (if it exists)
+:url "http://www.martoneconsulting.com/sane-bh.html" ; backend's web page
+:comment "Supports Copiscan II scanners with Remote SCSI Controller (RSC) interface"
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Bell and Howell" ; name a manufacturer
+:url "http://www.bhscanners.com/"
+
+:model "COPISCAN II 6338"
+:interface "SCSI"
+:status :good
+:comment "Duplex Scanner with ACE - development model"
+
+:model "COPISCAN II 2135"
+:status :untested
+:interface "SCSI"
+:comment "Simplex Scanner"
+
+:model "COPISCAN II 2137(A)"
+:interface "SCSI"
+:status :good
+:comment "Simplex Scanner (with ACE) - limited testing"
+
+:model "COPISCAN II 2138A"
+:status :untested
+:interface "SCSI"
+:comment "Simplex Scanner with ACE"
+
+:model "COPISCAN II 3238"
+:status :untested
+:interface "SCSI"
+:comment "Simplex Scanner"
+
+:model "COPISCAN II 3338(A)"
+:status :untested
+:interface "SCSI"
+:comment "Simplex Scanner (with ACE)"
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
diff --git a/doc/descriptions/canon.desc b/doc/descriptions/canon.desc
new file mode 100644
index 0000000..c6db616
--- /dev/null
+++ b/doc/descriptions/canon.desc
@@ -0,0 +1,65 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "canon" ; name of backend
+:manpage "sane-canon"
+:version "1.12" ; version of backend
+;:status :good ; :alpha, :beta, :stable, :new
+
+:url "http://www.rzg.mpg.de/~mpd/sane/" ; backend home page
+
+:devicetype :scanner
+
+:mfg "Canon" ; name a manufacturer
+:url "http://www.canon.com/"
+
+:model "CanoScan 300" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; flatbed scanner"
+:status :good
+
+:model "CanoScan 600" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; flatbed scanner"
+:status :good
+
+:model "CanoScan 620S" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; flatbed scanner"
+:status :good
+
+:model "CanoScan 1200S" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; flatbed scanner"
+:status :good
+
+:model "CanoScan 2700F" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; film scanner"
+:status :good
+
+:model "CanoScan 2710S" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; 36bit film scanner"
+:status :good
+
+:model "IX-4015" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "1 pass; flatbed scanner"
+:status :good
+
+:mfg "Apple" ; name a manufacturer
+:url "http://www.apple.com/"
+
+:model "Color OneScanner 600/27" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "Rebadged CanoScan 300"
+:status :good
+
diff --git a/doc/descriptions/canon630u.desc b/doc/descriptions/canon630u.desc
new file mode 100644
index 0000000..b4fa418
--- /dev/null
+++ b/doc/descriptions/canon630u.desc
@@ -0,0 +1,37 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "canon630u" ; name of backend
+:manpage "sane-canon630u"
+:version "0.1" ; version of backend
+;:status :beta
+:url "http://canon-fb630u.sourceforge.net/" ; backend home page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Canon" ; name a manufacturer
+:url "http://www.canon.com/"
+:model "CanoScan fb630u" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x04a9" "0x2204"
+:comment "OK"
+:status :good
+
+:model "CanoScan fb636u" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x04a9" "0x2204"
+:status :good
+:comment "OK"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/canon_dr.desc b/doc/descriptions/canon_dr.desc
new file mode 100644
index 0000000..b69bdcc
--- /dev/null
+++ b/doc/descriptions/canon_dr.desc
@@ -0,0 +1,320 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "canon_dr" ; name of backend
+:url "http://www.thebility.com/canon/"
+:version "41" ; version of backend
+:manpage "sane-canon_dr" ; name of manpage (if it exists)
+:comment "Backend updated for SANE release 1.0.24, see sane-canon_dr manpage"
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Canon" ; name a manufacturer
+:url "http://www.canon.com/"
+
+;==================================================
+:model "CR-25"
+:interface "USB"
+:usbid "0x1083" "0x161a"
+:status :untested
+:comment "Please test!"
+
+:model "CR-50"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+:comment "Please test!"
+
+:model "CR-55"
+:interface "USB"
+:usbid "0x1083" "0x160c"
+:status :untested
+:comment "Please test!"
+
+:model "CR-80"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+:comment "Please test!"
+
+:model "CR-135i"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1639"
+:status :untested
+:comment "Please test!"
+
+:model "CR-180"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1602"
+:status :untested
+:comment "Please test!"
+
+:model "CR-180II"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1602"
+:status :untested
+:comment "Same as CR-180? Please test!"
+
+:model "CR-190i"
+:interface "USB SCSI"
+:usbid "0x1083" "0x162b"
+:status :untested
+:comment "Please test!"
+
+:model "DR-1210C"
+:interface "USB"
+:usbid "0x04a9" "0x2222"
+:status :untested
+:comment "Older version? Please test!"
+
+:model "DR-1210C"
+:interface "USB"
+:usbid "0x1083" "0x160f"
+:status :untested
+:comment "Later version? Please test!"
+
+:model "DR-2010C"
+:interface "USB"
+:usbid "0x1083" "0x161b"
+:status :complete
+:comment "Hardware provides: Gray/Color, Simplex/Duplex, Full-width, 300/600dpi horizontal. Driver provides: Binary, Despeckle, Deskew, Cropping, Calibration, other resolutions."
+
+:model "DR-2010M"
+:interface "USB"
+:status :untested
+:comment "Mac version of DR-2010C? Please test!"
+
+:model "DR-2050C"
+:interface "USB"
+:usbid "0x04a9" "0x160a"
+:status :complete
+:comment "Hardware provides: Gray/Color, Simplex/Duplex, Full-width. Driver provides: Binary, Despeckle, Deskew, Cropping, Calibration."
+
+:model "DR-2050SP"
+:interface "USB"
+:usbid "0x04a9" "0x160a"
+:status :untested
+:comment "Same as DR-2050C? Please test!"
+
+:model "DR-2080C"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1601"
+:status :complete
+:comment "Hardware provides: Gray/Color, Simplex/Duplex, Full-width. Driver provides: Binary, Despeckle, Deskew, Cropping, Calibration"
+
+:model "DR-2510C"
+:interface "USB"
+:usbid "0x1083" "0x1617"
+:status :complete
+:comment "Hardware provides: Gray/Color, Simplex/Duplex, Full-width, 300/600dpi horizontal. Driver provides: Binary, Despeckle, Deskew, Cropping, Calibration, other resolutions"
+
+:model "DR-2510M"
+:interface "USB"
+:status :untested
+:comment "Mac version of DR-2510C? Please test!"
+
+:model "DR-2580C"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1608"
+:status :complete
+:comment "Hardware provides: Gray/Color, Simplex/Duplex, Full-width. Driver provides: Binary, Despeckle, Deskew, Cropping, Calibration"
+
+:model "DR-3010C"
+:interface "USB"
+:usbid "0x1083" "0x161d"
+:status :good
+:comment "Minimal testing, settings copied from DR-2510C"
+
+:model "DR3020"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "DR-3020C"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "DR-3060"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "DR-3080C"
+:interface "SCSI"
+:status :untested
+:comment "Almost works, need to investigate traces from windows driver"
+
+:model "DR-3080CII"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1609"
+:status :untested
+:comment "Almost works, need to investigate traces from windows driver"
+
+:model "DR-4010C"
+:interface "USB"
+:usbid "0x1083" "0x1614"
+:status :good
+:comment "Binary/HT/Gray/Color, Simplex/Duplex working. Multistream unsupported."
+
+:model "DR4080U"
+:interface "USB"
+;:usbid "0x1083" "0x1614"
+:status :untested
+:comment "Please test!"
+
+:model "DR-4580U"
+:interface "USB"
+;:usbid "0x1083" "0x1614"
+:status :untested
+:comment "Please test!"
+
+:model "DR-5010C"
+:interface "USB"
+:usbid "0x04a9" "0x1606"
+:status :untested
+:comment "Please test!"
+
+:model "DR-5020"
+:interface "SCSI"
+:status :good
+:comment "LineArt, Duplex working, cannot read buttons or screen?"
+
+:model "DR-5060F"
+:interface "SCSI"
+:status :basic
+:comment "Grayscale works, LineArt might"
+
+:model "DR-5080C"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "DR-6010C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1626"
+:status :untested
+:comment "Please test!"
+
+:model "DR-6030C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1638"
+:status :untested
+:comment "Please test!"
+
+:model "DR-6050C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1624"
+:status :good
+:comment "Simplex, duplex, all resolutions, binary/ht/gray working. Can't wake from stand-by mode"
+
+:model "DR-6080"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1607"
+:status :good
+:comment "Simplex, duplex, all resolutions, binary/ht/gray, async mode, dropout-color, multifeed/staple detection, deskew, buttons and JPEG working. Imprinter, barcode, custom gamma and multistream unsupported"
+
+:model "DR-7080C"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1604"
+:status :untested
+:comment "Please test!"
+
+:model "DR-7090C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1620"
+:status :good
+:comment "ADF and flatbed work"
+
+:model "DR-7550C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1623"
+:status :untested
+:comment "Assumed compatible with DR-6050C"
+
+:model "DR-7580"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x160b"
+:status :good
+:comment "Simplex, duplex, all resolutions, binary/ht/gray, async mode, dropout-color, multifeed/staple detection, deskew, buttons and JPEG working. Imprinter, barcode, custom gamma and multistream unsupported"
+
+:model "DR-9050C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1622"
+:status :good
+:comment "Simplex, duplex, all resolutions, binary/ht/gray working. Can't wake from stand-by mode"
+
+:model "DR-9080C"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x1603"
+:status :good
+:comment "Simplex, duplex, all resolutions, binary/ht/gray/color, async mode, dropout-color, multifeed/staple detection, deskew, buttons and JPEG working. Imprinter, barcode, custom gamma and multistream unsupported"
+
+:model "DR-X10C"
+:interface "USB SCSI"
+:usbid "0x1083" "0x1618"
+:status :untested
+:comment "Please test!"
+
+:model "DR-C125"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+:comment "Similar protocol to other canon_dr machines, but unsupported image format."
+
+:model "DR-C130"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "DR-G1100"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "DR-G1130"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "DR-M140"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "DR-M160"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "P-150"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "P-150M"
+:interface "USB"
+;:usbid "0x1083" "0x"
+:status :untested
+
+:model "P-208"
+:interface "USB"
+:usbid "0x1083" "0x164c"
+:status :basic
+:comment "All modes and resolutions working, but calibration is poor."
+
+:model "P-215"
+:interface "USB"
+:usbid "0x1083" "0x1646"
+:status :basic
+:comment "All modes and resolutions working, but calibration is poor. Card reader slot not working."
+
diff --git a/doc/descriptions/canon_pp.desc b/doc/descriptions/canon_pp.desc
new file mode 100644
index 0000000..ddd7a46
--- /dev/null
+++ b/doc/descriptions/canon_pp.desc
@@ -0,0 +1,62 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "canon_pp" ; name of backend
+:manpage "sane-canon_pp"
+:version "0.33" ; version of backend
+
+:url "http://canon-fb330p.sourceforge.net" ; backend home page
+
+:devicetype :scanner
+
+:mfg "Canon" ; name a manufacturer
+:url "http://www.canon.com/"
+
+:model "CanoScan FB310P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :unsupported
+:comment "Rebadged Avision, different command set"
+
+:model "CanoScan FB610P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :unsupported
+:comment "Rebadged Avision, different command set"
+
+:model "CanoScan FB320P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :basic
+:comment "Newly added support"
+
+:model "CanoScan FB620P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :basic
+:comment "Newly added support"
+
+:model "CanoScan FB330P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :good
+
+:model "CanoScan FB630P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :good
+
+:model "CanoScan N340P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :good
+
+:model "CanoScan N640P" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :good
+
+:model "CanoScan N640P ex" ; name models for above-specified mfg.
+:interface "Parport (ECP)"
+:status :good
+:comment "Just an N640P in a different box?"
+
diff --git a/doc/descriptions/cardscan.desc b/doc/descriptions/cardscan.desc
new file mode 100644
index 0000000..a0a87db
--- /dev/null
+++ b/doc/descriptions/cardscan.desc
@@ -0,0 +1,35 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "cardscan" ; name of backend
+:url "http://www.thebility.com/cardscan/"
+:version "2" ; version of backend
+:manpage "sane-cardscan" ; name of manpage (if it exists)
+:comment "Backend updated for SANE release 1.0.21, see sane-cardscan manpage"
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Corex" ; name a manufacturer
+:url "http://www.cardscan.com/"
+
+:model "800c"
+:interface "USB"
+:usbid "0x08f0" "0x0005"
+:status :good
+:comment "4 inch wide 8bit Gray or 24bit Color simplex card/receipt scanner"
+
+:model "600c"
+:interface "USB"
+:usbid "0x08f0" "0x0002"
+:status :basic
+:comment "4 inch wide 8bit Gray or 24bit Color simplex card/receipt scanner"
+
diff --git a/doc/descriptions/coolscan.desc b/doc/descriptions/coolscan.desc
new file mode 100644
index 0000000..8d7b060
--- /dev/null
+++ b/doc/descriptions/coolscan.desc
@@ -0,0 +1,43 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "coolscan" ; name of backend
+:version "0.4.3" ; version of backend
+:url "http://andreas.rick.free.fr/sane/" ; backend's web page
+:manpage "sane-coolscan"
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Nikon" ; name a manufacturer
+:url "http://www.nikon.com/"
+:model "LS-20" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "The LS-20 has been replaced by the LS-30"
+:status :basic
+
+:model "LS-30" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "alpha: only 24/30 bit RGB + 32/40 bit RGBI"
+:status :basic
+
+:model "LS-2000" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "alpha: only 24/36 bit + RGB 32/48 bit RGBI"
+:status :basic
+
+:model "LS-1000"
+:interface "SCSI"
+:comment "Doesn't support gamma correction"
+:status :basic
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/coolscan2.desc b/doc/descriptions/coolscan2.desc
new file mode 100644
index 0000000..e6c7359
--- /dev/null
+++ b/doc/descriptions/coolscan2.desc
@@ -0,0 +1,65 @@
+;
+; SANE Backend specification file for coolscan2
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "coolscan2"
+:version "0.1.8"
+:manpage "sane-coolscan2"
+:url "http://coolscan2.sourceforge.net/"
+
+:devicetype :scanner
+:mfg "Nikon"
+:url "http://www.nikon.com/"
+
+:model "LS 30"
+:interface "SCSI"
+:comment "working -- model available to developer"
+:status :complete
+
+:model "LS 2000"
+:interface "SCSI"
+:status :good
+
+:model "LS 40 ED"
+:interface "USB"
+:usbid "0x04b0" "0x4000"
+:status :complete
+
+:model "LS 4000 ED"
+:interface "IEEE-1394"
+:status :good
+:comment "needs linux kernel 2.4.19 or later"
+
+:model "LS 50 ED"
+;:url "/unsupported/nikon-ls50-ed.html"
+:interface "USB"
+:usbid "0x04b0" "0x4001"
+:status :minimal
+
+:model "Coolscan V ED"
+:url "/unsupported/nikon-ls50-ed.html"
+:interface "USB"
+:usbid "0x04b0" "0x4001"
+:status :minimal
+
+:model "Super Coolscan LS-5000 ED"
+:url "/unsupported/nikon-ls5000-ed.html"
+:interface "USB"
+:usbid "0x04b0" "0x4002"
+:status :untested
+:comment "May work, similar to LS 50 ED, but untested. Please tell us if it works."
+
+:model "LS 8000 ED"
+:interface "IEEE-1394"
+:status :good
+:comment "needs linux kernel 2.4.19 or later"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/coolscan3.desc b/doc/descriptions/coolscan3.desc
new file mode 100644
index 0000000..d8359bd
--- /dev/null
+++ b/doc/descriptions/coolscan3.desc
@@ -0,0 +1,75 @@
+;
+; SANE Backend specification file for coolscan2
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "coolscan3"
+:version "1.0.0"
+:manpage "sane-coolscan3"
+
+:devicetype :scanner
+:mfg "Nikon"
+:url "http://www.nikon.com/"
+
+:model "LS 30"
+:interface "SCSI"
+:status :complete
+
+:model "Coolscan III"
+:interface "SCSI"
+:status :complete
+:comment "Rebadged LS 30?"
+
+:model "LS 40 ED"
+:interface "USB"
+:usbid "0x04b0" "0x4000"
+:status :complete
+
+:model "Coolspan IV"
+:interface "USB"
+:usbid "0x04b0" "0x4000"
+:status :complete
+:comment "Rebadged LS 40?"
+
+:model "LS 50 ED"
+:url "/unsupported/nikon-ls50-ed.html"
+:interface "USB"
+:usbid "0x04b0" "0x4001"
+:status :minimal
+
+:model "Coolscan V ED"
+:url "/unsupported/nikon-ls50-ed.html"
+:interface "USB"
+:usbid "0x04b0" "0x4001"
+:status :minimal
+:comment "Rebadged LS 50?"
+
+:model "LS 2000"
+:interface "SCSI"
+:status :good
+
+:model "LS 4000 ED"
+:interface "IEEE-1394"
+:status :good
+:comment "needs linux kernel 2.4.19 or later"
+
+:model "Super Coolscan LS-5000 ED"
+:url "/unsupported/nikon-ls5000-ed.html"
+:interface "USB"
+:usbid "0x04b0" "0x4002"
+:status :untested
+:comment "May work, similar to LS 50 ED, but untested. Please tell us if it works."
+
+:model "LS 8000 ED"
+:interface "IEEE-1394"
+:status :good
+:comment "needs linux kernel 2.4.19 or later"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/dc210.desc b/doc/descriptions/dc210.desc
new file mode 100644
index 0000000..e7dbced
--- /dev/null
+++ b/doc/descriptions/dc210.desc
@@ -0,0 +1,14 @@
+;Kodak DC210 backend .desc file by Brian J. Murrell
+
+:backend "dc210" ; name of backend
+:version "0.0" ; version of backend
+:manpage "sane-dc210" ; name of manpage (if it exists)
+:url "mailto:peter@fales-lorenz.net" ; backend's web page
+
+:devicetype :stillcam ; start of a list of devices....
+
+:mfg "Kodak"
+:url "http://www.kodak.com/global/en/service/digCam/dc210/dc210.shtml"
+:model "DC210"
+:interface "Serial port"
+:status :basic
diff --git a/doc/descriptions/dc240.desc b/doc/descriptions/dc240.desc
new file mode 100644
index 0000000..5a0b52c
--- /dev/null
+++ b/doc/descriptions/dc240.desc
@@ -0,0 +1,15 @@
+;Kodak DC240 backend .desc file by Peter S. Fales
+
+:backend "dc240" ; name of backend
+:version "0.0" ; version of backend
+:manpage "sane-dc240" ; name of manpage (if it exists)
+:url "mailto:peter@fales-lorenz.net" ; backend's web page
+
+:devicetype :stillcam ; start of a list of devices....
+
+:mfg "Kodak"
+:url "http://www.kodak.com/global/en/service/products/ekn006568.jhtml"
+:model "DC240"
+:status :good ; minimal, basic, good, complete
+:interface "Serial port"
+:comment "Use gphoto2 backend to get USB support"
diff --git a/doc/descriptions/dc25.desc b/doc/descriptions/dc25.desc
new file mode 100644
index 0000000..c6996ad
--- /dev/null
+++ b/doc/descriptions/dc25.desc
@@ -0,0 +1,16 @@
+;Kodak DC25 backend .desc file by Peter Fales
+
+:backend "dc25" ; name of backend
+:version "1.2" ; version of backend
+:manpage "sane-dc25" ; name of manpage (if it exists)
+:url "mailto:peter@fales-lorenz.net";
+:devicetype :stillcam ; start of a list of devices....
+:mfg "Kodak" ; Manufacturer
+:url "http://www.kodak.com/global/en/service/digCam/dc25/dc25.shtml";
+:model "DC25" ;
+:status :complete ; untested, minimal, basic, complete
+:interface "Serial port"
+:model "DC20" ;
+:status :basic ; untested, minimal, basic, complete
+:interface "Serial port"
+:comment "DC-20 untested by author but reported to work"
diff --git a/doc/descriptions/dell1600n_net.desc b/doc/descriptions/dell1600n_net.desc
new file mode 100644
index 0000000..6aacf18
--- /dev/null
+++ b/doc/descriptions/dell1600n_net.desc
@@ -0,0 +1,17 @@
+;
+; dell1600n_net backend
+; Jon Chambers <jon@jon.demon.co.uk>, 2006-05-29
+;
+:backend "dell1600n_net"
+
+:devicetype :scanner
+
+:mfg "Dell"
+:url "http://www.dell.com/"
+
+:model "1600n"
+:interface "Ethernet USB"
+:usbid "0x413c" "0x5250"
+:status :basic
+:comment "Supports colour and monochrome scans over ethernet (USB not supported)"
+
diff --git a/doc/descriptions/dll.desc b/doc/descriptions/dll.desc
new file mode 100644
index 0000000..4995873
--- /dev/null
+++ b/doc/descriptions/dll.desc
@@ -0,0 +1,7 @@
+:backend "dll" ; name of backend
+:version "1.0.13"
+:manpage "sane-dll"
+:url "mailto:henning@meier-geinitz.de"
+
+:devicetype :meta
+:desc "Dynamic loading of shared-library backends."
diff --git a/doc/descriptions/dmc.desc b/doc/descriptions/dmc.desc
new file mode 100644
index 0000000..348d737
--- /dev/null
+++ b/doc/descriptions/dmc.desc
@@ -0,0 +1,29 @@
+; $Id$
+;
+; SANE Backend specification file (Matto Marjanovic's format)
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "dmc" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-dmc" ; name of manpage (if it exists)
+:devicetype :stillcam ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Polaroid" ; name a manufacturer
+:url "http://www.polaroid.com/"
+
+:model "DMC" ; name models for above-specified mfg.
+:interface "SCSI"
+;:url "http://digitalimage.polaroid.com/products/digital_imaging/digital_cameras/dmcsuite/dmc/"
+:status :good
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
diff --git a/doc/descriptions/epjitsu.desc b/doc/descriptions/epjitsu.desc
new file mode 100644
index 0000000..7c453df
--- /dev/null
+++ b/doc/descriptions/epjitsu.desc
@@ -0,0 +1,54 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "epjitsu" ; name of backend
+:url "http://www.thebility.com/epjitsu/"
+:version "20" ; version of backend
+:manpage "sane-epjitsu" ; name of manpage (if it exists)
+:comment "Backend updated for SANE release 1.0.21, see sane-epjitsu manpage"
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Fujitsu" ; name a manufacturer
+:url "http://www.fujitsu.com/"
+
+;==================================================
+:model "fi-60F"
+:interface "USB"
+:status :basic
+:usbid "0x04c5" "0x10c7"
+:comment "A6-size flatbed, 300/600 dpi, color/gray/binary"
+
+:model "ScanSnap S300"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x1156"
+:comment "Duplex, 150/225/300/600 dpi, color/gray/binary, AC/USB power, buttons/sensors all supported. Scanner always scans in _triplex_ color, fast USB required."
+
+:model "ScanSnap S300M"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x117f"
+:comment "Same as S300, with different usb id"
+
+:model "ScanSnap S1100"
+:interface "USB"
+:status :unsupported
+:usbid "0x04c5" "0x1200"
+:comment "Beta version of backend source available, which works well, but breaks support for other epjitsu scanners. See http://ubuntuforums.org/showthread.php?t=1678335"
+
+:model "ScanSnap S1300"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x11ed"
+:comment "Same as S300, with different usb id"
+
diff --git a/doc/descriptions/epson.desc b/doc/descriptions/epson.desc
new file mode 100644
index 0000000..a31fc84
--- /dev/null
+++ b/doc/descriptions/epson.desc
@@ -0,0 +1,355 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "epson" ; name of backend
+;:version "0.2.42" ; version of backend
+:version "unmaintained" ; version of backend
+:new :no
+:manpage "sane-epson" ; name of manpage (if it exists)
+:url "http://www.khk.net/sane" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Epson" ; name a manufacturer
+:url "http://www.epson.com/"
+
+:model "GT-5000" ; name models for above-specified mfg.
+:interface "SCSI Parport"
+:status :good
+
+:model "Actionscanner II"
+:comment "US version of GT-5000"
+:interface "SCSI Parport"
+:status :good
+
+:model "GT-6000"
+:interface "SCSI Parport"
+:status :good
+
+:model "ES-300C"
+:comment "US version of GT-6000"
+:interface "SCSI Parport"
+:status :good
+
+:model "ES-300GS"
+:interface "SCSI"
+:status :good
+
+:model "GT-5500"
+:interface "SCSI"
+:status :good
+
+:model "GT-6500"
+:interface "Parport"
+:status :good
+
+:model "ES-600C"
+:comment "US version of GT-6500"
+:interface "Parport"
+:status :good
+
+:model "ES-1200C"
+:comment "US version of GT-9000"
+:interface "Parport"
+:status :good
+
+:model "GT-7000"
+:interface "SCSI"
+:scsi "EPSON" "SCANNER GT-7000" "processor"
+:status :good
+
+:model "GT-8000"
+:interface "SCSI"
+:status :good
+
+:model "ES-8500"
+:interface "SCSI"
+:status :good
+
+:model "Perfection 636S"
+:comment "US version of GT-7000"
+:interface "SCSI"
+:scsi "EPSON" "Perfection1200" "processor"
+:status :complete
+
+:model "Perfection 636"
+:interface "SCSI"
+:scsi "EPSON" "Perfection636" "processor"
+:status :complete
+
+:model "Perfection 636U"
+:interface "USB"
+:usbid "0x04b8" "0x0101"
+:status :complete
+
+:model "Perfection 610"
+:interface "USB"
+:usbid "0x04b8" "0x0103"
+:status :complete
+
+:model "Perfection 640"
+:interface "USB"
+:usbid "0x04b8" "0x010c"
+:status :complete
+
+:model "Perfection 1200S"
+:interface "SCSI"
+:scsi "EPSON" "Perfection1200" "processor"
+:status :complete
+
+:model "Perfection 1200U"
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+
+:model "Perfection 1200Photo"
+:comment "with TPU"
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+
+:model "Perfection 1240"
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010b"
+:status :complete
+
+:model "Perfection 1640"
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :complete
+
+:model "Perfection 1650"
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :complete
+
+:model "Perfection 1660"
+:interface "USB"
+:usbid "0x04b8" "0x011e"
+:status :complete
+
+:model "Perfection 2400"
+:interface "USB"
+:usbid "0x04b8" "0x011b"
+:status :complete
+
+:model "Perfection 2450"
+:interface "USB IEEE-1394"
+:usbid "0x04b8" "0x0112"
+:scsi "EPSON" "GT-9700" "processor"
+:status :complete
+
+:model "Perfection 3200"
+:comment "US version of the GT-9800"
+:interface "USB IEEE-1394"
+:usbid "0x04b8" "0x011c"
+:scsi "EPSON" "GT-9800" "processor"
+:status :complete
+
+:model "Perfection 4870"
+:comment "US version of the GT-X700"
+:interface "USB"
+:usbid "0x04b8" "0x0128"
+:status :complete
+
+:model "Perfection 4990"
+:comment "US version of the GT-X800"
+:interface "USB"
+:usbid "0x04b8" "0x012a"
+:status :complete
+
+:model "Expression 636"
+:comment "US version of GT-9500"
+:interface "SCSI"
+:status :complete
+
+:model "Expression 800"
+:interface "SCSI"
+:status :complete
+
+:model "Expression 1600"
+:interface "SCSI USB IEEE-1394"
+:usbid "0x04b8" "0x0107"
+:status :complete
+
+:model "Expression 1680"
+:interface "SCSI USB IEEE-1394"
+:usbid "0x04b8" "0x010e"
+:status :complete
+
+:model "FilmScan 200"
+:interface "SCSI"
+:comment "A better backend for the FilmScan 200 can be found at <A HREF=\"http://www.vjet.demon.co.uk/scanner/\">http://www.vjet.demon.co.uk/scanner/</A>"
+:status :unsupported
+:url "http://www.vjet.demon.co.uk/scanner/"
+
+:model "CX-3200"
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+
+:model "CX-3600"
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+
+:model "CX-3650"
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+
+:model "CX-4600"
+:interface "USB"
+:usbid "0x04b8" "0x080d"
+:status :good
+
+:model "CX-4800"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+
+:model "CX-5000"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+
+:model "CX-5200"
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+
+:model "CX-5400"
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+
+:model "CX-5400"
+:interface "USB"
+:usbid "0x04b8" "0x0808"
+:status :good
+
+:model "CX-6300"
+:interface "USB"
+:usbid "0x04b8" "0x0805"
+:status :good
+
+:model "CX-6400"
+:interface "USB"
+:usbid "0x04b8" "0x0805"
+:status :good
+
+:model "CX-6500"
+:interface "USB"
+:usbid "0x04b8" "0x0813"
+:status :good
+
+:model "CX-6600"
+:interface "USB"
+:usbid "0x04b8" "0x0813"
+:status :good
+
+:model "RX-500"
+:interface "USB"
+:usbid "0x04b8" "0x0807"
+:status :good
+
+:model "RX-600"
+:interface "USB"
+:usbid "0x04b8" "0x0806"
+:status :good
+
+:model "RX-425"
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+
+:model "RX-700"
+:interface "USB"
+:usbid "0x04b8" "0x0810"
+:status :good
+
+:model "RX-620"
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+
+:model "DX-3850"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+
+:model "CX-3700"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+
+:model "CX-3800"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+
+:model "CX-4200"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+
+:model "DX-3800"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+
+:model "DX-5000"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+
+:model "DX-5050"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+
+:model "DX-6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+
+:model "DX-7400"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+
+:model "DX-4050"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+
+:model "AcuLaser CX11"
+:interface "USB"
+:usbid "0x04b8" "0x0815"
+:status :good
+
+:model "AcuLaser CX11NF"
+:interface "USB"
+:usbid "0x04b8" "0x0815"
+:status :good
+
+:model "V700"
+:interface "USB IEEE-1394"
+:usbid "0x04b8" "0x012c"
+:status :good
+
+:model "V750"
+:interface "USB IEEE-1394"
+:usbid "0x04b8" "0x012c"
+:status :good
+
diff --git a/doc/descriptions/epson2.desc b/doc/descriptions/epson2.desc
new file mode 100644
index 0000000..9d9461d
--- /dev/null
+++ b/doc/descriptions/epson2.desc
@@ -0,0 +1,2027 @@
+;
+; SANE Backend specification file for the epson2 backend
+;
+; Copyright (C) 2009-10 Alessandro Zummo
+; Released under GPLv2
+;
+; This file is derived from epkowa.desc, Copyright (C) Olaf Meeuwissen,
+; distributed with "Image Scan!" and released under GPL.
+;
+; DO NOT EDIT - It's automatically generated.
+
+:backend "epson2"
+:version "1.0.124"
+:new :no
+:manpage "sane-epson2"
+
+:devicetype :scanner
+
+:mfg "Epson"
+:url "http://www.epson.com/"
+
+:model "Actionscanner II"
+:interface "parallel SCSI"
+:status :good
+:comment "overseas version of the GT-5000"
+:url "http://www.epson.com/"
+
+:model "AcuLaser CX11"
+:interface "USB"
+:usbid "0x04b8" "0x0815"
+:status :good
+:comment "overseas version of the LP-A500"
+
+:model "AcuLaser CX11NF"
+:interface "USB Network"
+:usbid "0x04b8" "0x0815"
+:status :good
+:comment "network interface supported<br>AcuLaser CX11 with network interface and fax"
+
+:model "AcuLaser CX21"
+:interface "USB"
+:usbid "0x04b8" "0x0835"
+:status :good
+:comment "network interface probably supported"
+
+:model "Artisan 700"
+:interface "USB Network"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface supported<br>all-in-one<br>overseas version of the EP-801A"
+
+:model "Artisan 710 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Artisan 800"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the EP-901A"
+
+:model "Artisan 810 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0853"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "CC-500L" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010d"
+:status :unsupported
+:comment "all-in-one"
+
+:model "CC-550L" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011a"
+:status :unsupported
+:comment "all-in-one"
+
+:model "CC-570L" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+:comment "all-in-one"
+
+:model "CC-600PX" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+:comment "all-in-one"
+
+:model "CC-700" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0108"
+:status :unsupported
+:comment "all-in-one"
+
+:model "EP-702A"
+:interface "USB"
+:usbid "0x04b8" "0x0850"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "EP-801A"
+:interface "USB Network"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface supported<br>all-in-one"
+
+:model "EP-802A"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "EP-901A"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "EP-901F"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "EP-902A"
+:interface "USB"
+:usbid "0x04b8" "0x0853"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "ES-300C"
+:interface "SCSI parallel"
+:status :good
+:comment "overseas version of the GT-6000"
+
+:model "ES-300GS"
+:interface "SCSI"
+:status :good
+
+:model "ES-600C"
+:interface "parallel"
+:status :good
+:comment "overseas version of the GT-5400"
+
+:model "ES-800C"
+:interface "SCSI"
+:status :good
+:comment "overseas version of the GT-8000"
+
+:model "ES-1000C"
+:status :unsupported
+:comment "overseas version of the GT-8500"
+
+:model "ES-1200C"
+:interface "parallel"
+:status :good
+:comment "overseas version of the GT-9000"
+
+:model "ES-2000" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0107"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "ES-2200" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010e"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "ES-6000" ; product spec (JP)
+:interface "SCSI"
+:status :good
+
+:model "ES-6000H" ; product spec (JP)
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-6000HS" ; product spec (JP)
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-7000H" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0126"
+:status :good
+:comment "network interface unsupported<br>IEEE1394 untested"
+
+:model "ES-8000"
+:interface "SCSI"
+:status :untested
+
+:model "ES-8500" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0109"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-9000H" ; product spec (JP)
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "ES-10000G" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0129"
+:status :good
+:comment "network interface unsupported<br>IEEE1394 untested"
+
+:model "ES-D400"
+:interface "USB"
+:usbid "0x04b8" "0x0136"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "ES-H300"
+:interface "USB"
+:usbid "0x04b8" "0x012b"
+:status :good
+:comment "network interface probably supported"
+
+:model "ES-H7200"
+:interface "USB Ethernet"
+:usbid "0x04b8" "0x0138"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Expression 636"
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-9500"
+
+:model "Expression 800" ; command spec
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-9600"
+
+:model "Expression 836XL" ; command spec
+:interface "SCSI"
+:status :untested
+:comment "overseas version of the ES-8000"
+
+:model "Expression 1600" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0107"
+:status :complete
+:comment "IEEE1394 untested<br>overseas version of the ES-2000"
+
+:model "Expression 1640XL" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0109"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-8500"
+
+:model "Expression 1680" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010e"
+:status :complete
+:comment "IEEE1394 untested<br>overseas version of the ES-2200"
+
+:model "Expression 1680 Pro"
+:interface "SCSI USB"
+:status :untested
+:comment "IEEE1394 option"
+
+:model "Expression 1680XL Pro"
+:interface "SCSI USB"
+:status :untested
+
+:model "Expression 10000XL" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0129"
+:status :good
+:comment "network interface probably supported<br>IEEE1394 untested<br>overseas version of the ES-10000G"
+
+:model "Expression 10000XL Graphic Arts"
+:interface "USB IEEE1394"
+:status :untested
+:comment "network interface probably supported"
+
+:model "Expression 10000XL Photo"
+:interface "USB IEEE1394"
+:status :untested
+:comment "network interface probably supported"
+
+:model "F-3200" ; product spec (JP)
+:interface "USB IEEE1394"
+:usbid "0x04b8" "0x080a"
+:status :unsupported
+:comment "Film scanner"
+
+:model "F-3200 Photo"
+:interface "USB IEEE1394"
+:status :unsupported
+
+:model "FilmScan 200"
+:interface "SCSI"
+:status :minimal
+:comment "will be supported"
+
+:model "GT-1500"
+:interface "USB"
+:usbid "0x04b8" "0x0133"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-2200"
+:interface "USB"
+:usbid "0x04b8" "0x0102"
+:status :unsupported
+
+:model "GT-2500"
+:interface "USB"
+:usbid "0x04b8" "0x012b"
+:status :good
+:comment "network interface probably supported<br>overseas version of the ES-H300"
+
+:model "GT-4000"
+:status :untested
+
+:model "GT-5000"
+:interface "parallel SCSI"
+:status :good
+
+:model "GT-5400"
+:interface "parallel"
+:status :good
+
+:model "GT-5500"
+:interface "SCSI"
+:status :good
+
+:model "GT-6000"
+:interface "SCSI Parport"
+:status :good
+
+:model "GT-6500"
+:interface "parallel"
+:status :good
+:comment "overseas version of the GT-5400"
+
+:model "GT-6600U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0103"
+:status :complete
+
+:model "GT-6700U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010c"
+:status :complete
+
+:model "GT-7000S"
+:interface "SCSI"
+:status :complete
+
+:model "GT-7000U"
+:interface "USB"
+:usbid "0x04b8" "0x0101"
+:status :complete
+
+:model "GT-7200U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-7300U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-7400U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0120"
+:status :unsupported
+:comment "supported by the snapscan backend"
+
+:model "GT-7600S" ; product spec (JP)
+:interface "SCSI"
+:status :complete
+:comment "SCSI version of the GT-7600U"
+
+:model "GT-7600U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "USB version of the GT-7600S"
+
+:model "GT-7600UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "GT-7600U with TPU option bundled"
+
+:model "GT-7700U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x010b"
+:status :complete
+
+:model "GT-8000"
+:interface "SCSI"
+:status :good
+
+:model "GT-8200U" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :complete
+
+:model "GT-8200UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :good
+
+:model "GT-8300UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011e"
+:status :complete
+
+:model "GT-8400UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :unsupported
+
+:model "GT-8500"
+:status :untested
+
+:model "GT-8700" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :complete
+
+:model "GT-8700F" ; product spec (JP)
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :good
+:comment "GT-8700U with TPU option bundled"
+
+:model "GT-9000"
+:interface "parallel"
+:status :good
+
+:model "GT-9300UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011b"
+:status :complete
+
+:model "GT-9400UF" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0116"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-9500"
+:interface "SCSI"
+:status :complete
+
+:model "GT-9600"
+:interface "SCSI"
+:status :complete
+
+:model "GT-9700F" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0112"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "GT-9800F" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x011c"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "GT-10000"
+:interface "SCSI"
+:status :good
+:comment "overseas version of the ES-6000"
+
+:model "GT-10000+" ; command spec
+:interface "SCSI"
+:scsi "EPSON" "SCANNER GT-10000" "processor"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-6000H"
+
+:model "GT-12000"
+:interface "SCSI"
+:status :untested
+:comment "overseas version of the ES-8000"
+
+:model "GT-15000" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x0126"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-7000H"
+
+:model "GT-20000"
+:interface "USB Ethernet"
+:usbid "0x04b8" "0x0138"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "GT-30000" ; command spec
+:interface "SCSI"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the ES-9000H"
+
+:model "GT-D1000"
+:interface "USB"
+:usbid "0x04b8" "0x0133"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F500" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F520"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F550" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F570"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F600" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0118"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F650"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F670"
+:interface "USB"
+:usbid "0x04b8" "0x012e"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F700"
+:interface "USB"
+:usbid "0x04b8" "0x012f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-F720"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-S50"
+:interface "USB"
+:usbid "0x04b8" "0x0137"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-S80"
+:interface "USB"
+:usbid "0x04b8" "0x0136"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-S600"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-S620"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-X700" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0128"
+:status :complete
+:comment "IEEE1394 untested"
+
+:model "GT-X750"
+:interface "USB"
+:usbid "0x04b8" "0x0119"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-X770"
+:interface "USB"
+:usbid "0x04b8" "0x0130"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-X800" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x012a"
+:status :complete
+:comment "film area guide mode not supported<br>IEEE1394 untested"
+
+:model "GT-X820"
+:interface "USB"
+:usbid "0x04b8" "0x013a"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "GT-X900"
+:interface "USB"
+:usbid "0x04b8" "0x012c"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "GT-X970"
+:interface "USB"
+:usbid "0x04b8" "0x0135"
+:status :good
+:comment "IEEE1394 untested"
+
+:model "LP-7900CS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9000CCH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9000CCS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9000CFH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9500CCS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9500CFH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9500CH2"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9800CCH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-9800CCS"
+:status :untested
+:comment "business all-in-one; scanner is a ES-7000H"
+
+:model "LP-9800CFH"
+:status :untested
+:comment "business all-in-one; scanner is a ES-9000H"
+
+:model "LP-A500"
+:interface "USB Network"
+:usbid "0x04b8" "0x0815"
+:status :good
+:comment "network interface supported<br>business all-in-one"
+
+:model "LP-M5000"
+:interface "USB"
+:usbid "0x04b8" "0x0843"
+:status :good
+:comment "network interface probably supported<br>business all-in-one"
+
+:model "LP-M5500"
+:interface "USB"
+:usbid "0x04b8" "0x0817"
+:status :good
+:comment "network interface probably supported<br>business all-in-one"
+
+:model "LP-M5500F"
+:interface "USB"
+:usbid "0x04b8" "0x0817"
+:status :good
+:comment "network interface probably supported<br>business all-in-one<br>LP-M5500 with the fax option bundled"
+
+:model "LP-M5600"
+:interface "USB"
+:usbid "0x04b8" "0x0833"
+:status :good
+:comment "network interface probably supported<br>business all-in-one"
+
+:model "LP-M6000"
+:interface "USB"
+:usbid "0x04b8" "0x0834"
+:status :good
+:comment "network interface probably supported<br>business all-in-one"
+
+:model "ME 200"
+:interface "USB"
+:usbid "0x04b8" "0x0830"
+:status :good
+:comment "all-in-one"
+
+:model "ME 300"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "ME OFFICE 510"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "ME Office 600F"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "all-in-one"
+
+:model "ME OFFICE 650FN Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "ME Office 700FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "PM-A700" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0814"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A750"
+:interface "USB"
+:usbid "0x04b8" "0x081a"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A820"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A840"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A840S"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "PM-A850" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0806"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A870" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A890"
+:interface "USB"
+:usbid "0x04b8" "0x081c"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A900" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x0810"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A920"
+:interface "USB"
+:usbid "0x04b8" "0x082a"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A940"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A950"
+:interface "USB"
+:usbid "0x04b8" "0x081d"
+:status :good
+:comment "all-in-one"
+
+:model "PM-A970"
+:interface "USB"
+:usbid "0x04b8" "0x0828"
+:status :good
+:comment "all-in-one"
+
+:model "PM-T960"
+:interface "USB"
+:usbid "0x04b8" "0x0836"
+:status :good
+:comment "all-in-one"
+
+:model "PM-T990"
+:interface "USB"
+:usbid "0x04b8" "0x0829"
+:status :good
+:comment "all-in-one<br>PM-A970 with network interface"
+
+:model "PX-401A"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one"
+
+:model "PX-402A"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one"
+
+:model "PX-501A"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "PX-502A"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one"
+
+:model "PX-601F"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface probably supported"
+
+:model "PX-A550" ; product spec (JP)
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A620"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A640"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A650"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A720"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one"
+
+:model "PX-A740"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one"
+
+:model "PX-FA700"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one"
+
+:model "Perfection 600"
+:interface "SCSI"
+:status :unsupported
+:comment "supported by the umax backend<br>rebadged UMAX Astra 1200S"
+
+:model "Perfection 610" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0103"
+:status :complete
+:comment "overseas version of the GT-6600U"
+
+:model "Perfection 636S"
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-7000S"
+
+:model "Perfection 636U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0101"
+:status :complete
+:comment "overseas version of the GT-7000U"
+
+:model "Perfection 640U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x010c"
+:status :complete
+:comment "overseas version of the GT-6700U"
+
+:model "Perfection 660"
+:interface "USB"
+:usbid "0x04b8" "0x0114"
+:status :unsupported
+:comment "supported by the snapscan backend"
+
+:model "Perfection 1200S" ; command spec
+:interface "SCSI"
+:status :complete
+:comment "overseas version of the GT-7600S"
+
+:model "Perfection 1200U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "overseas version of the GT-7600U"
+
+:model "Perfection 1200U PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0104"
+:status :complete
+:comment "Perfection 1200U with TPU option bundled<br>overseas version of the GT-7600UF"
+
+:model "Perfection 1240U" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x010b"
+:status :complete
+:comment "overseas version of the GT-7700U"
+
+:model "Perfection 1250"
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 1250 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 1260"
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 1260 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 1270"
+:interface "USB"
+:usbid "0x04b8" "0x0120"
+:status :unsupported
+:comment "supported by the snapscan backend<br>overseas version of the GT-7400"
+
+:model "Perfection 1600"
+:interface "SCSI"
+:status :unsupported
+
+:model "Perfection 1640SU" ; command spec
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :complete
+:comment "overseas version of the GT-8700"
+
+:model "Perfection 1640SU PHOTO"
+:interface "SCSI USB"
+:usbid "0x04b8" "0x010a"
+:status :good
+:comment "overseas version of the GT-8700F"
+
+:model "Perfection 1650" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :complete
+:comment "overseas version of the GT-8200U"
+
+:model "Perfection 1650 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0110"
+:status :good
+:comment "overseas version of the GT-8200UF"
+
+:model "Perfection 1660 PHOTO" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x011e"
+:status :complete
+:comment "overseas version of the GT-8300UF"
+
+:model "Perfection 1670"
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :unsupported
+:comment "supported by the snapscan backend"
+
+:model "Perfection 1670 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :unsupported
+:comment "supported by the snapscan backend<br>overseas version of the GT-8400UF"
+
+:model "Perfection 2400 PHOTO" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x011b"
+:status :complete
+:comment "overseas version of the GT-9300UF"
+
+:model "Perfection 2450 PHOTO" ; command spec
+:interface "USB IEEE-1394"
+:usbid "0x04b8" "0x0112"
+:scsi "EPSON" "GT-9700" "processor"
+:status :complete
+:comment "overseas version of the GT-9700F"
+
+:model "Perfection 2480 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 2580 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 3170 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0116"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 3200 PHOTO" ; command spec
+:interface "USB IEEE-1394"
+:usbid "0x04b8" "0x011c"
+:scsi "EPSON" "GT-9800" "processor"
+:status :complete
+:comment "overseas version of the GT-9800F"
+
+:model "Perfection 3490 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 3590 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 4180 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0118"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 4490 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x0119"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection 4870 PHOTO" ; command spec
+:interface "USB"
+:usbid "0x04b8" "0x0128"
+:status :complete
+:comment "IEEE1394 untested<br>overseas version of the GT-X700"
+
+:model "Perfection 4990 PHOTO"
+:interface "USB"
+:usbid "0x04b8" "0x012a"
+:status :good
+:comment "film area guide mode not supported<br>IEEE1394 untested<br>overseas version of the GT-X800"
+
+:model "Perfection 4990 Pro"
+:interface "USB IEEE1394"
+:status :untested
+:comment "seems to be a 4990 PHOTO with additional software"
+
+:model "Perfection V10"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V30"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V100 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012d"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V200 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012e"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V300 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x0131"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V350 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V500 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x0130"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V600 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x013a"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Perfection V700 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012c"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the GT-X900"
+
+:model "Perfection V750 Photo"
+:interface "USB"
+:usbid "0x04b8" "0x012c"
+:status :good
+:comment "IEEE1394 untested<br>overseas version of the GT-X900"
+
+:model "Stylus CX1500" ; Australia
+:interface "USB"
+:usbid "0x04b8" "0x080c"
+:status :unsupported
+:comment "supported by the snapscan backend<br>all-in-one"
+
+:model "Stylus CX2800"
+:interface "USB"
+:usbid "0x04b8" "0x0830"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX2900"
+:interface "USB"
+:usbid "0x04b8" "0x0830"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3100"
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-570L"
+
+:model "Stylus CX3200"
+:interface "USB"
+:usbid "0x04b8" "0x0802"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-570L"
+
+:model "Stylus CX3500" ; Australia
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A550"
+
+:model "Stylus CX3600" ; UK
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A550"
+
+:model "Stylus CX3650" ; France
+:interface "USB"
+:usbid "0x04b8" "0x080e"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3700"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3800"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX3810"
+:interface "USB"
+:status :untested
+:comment "all-in-one"
+
+:model "Stylus CX3900"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A620"
+
+:model "Stylus CX4100"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4200"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4300"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Stylus CX4400"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Stylus CX4500"
+:interface "USB"
+:usbid "0x04b8" "0x080d"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4600"
+:interface "USB"
+:usbid "0x04b8" "0x080d"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX4700"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A650"
+
+:model "Stylus CX4800"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A650"
+
+:model "Stylus CX4900"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5000"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5100"
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-600PX"
+
+:model "Stylus CX5200"
+:interface "USB"
+:usbid "0x04b8" "0x0801"
+:status :good
+:comment "all-in-one<br>overseas version of the CC-600PX"
+
+:model "Stylus CX5300"
+:interface "USB"
+:usbid "0x04b8" "0x0808"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5400"
+:interface "USB"
+:usbid "0x04b8" "0x0808"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX5500"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Stylus CX5600"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Stylus CX5700F"
+:interface "USB"
+:usbid "0x04b8" "0x0821"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX5800F"
+:interface "USB"
+:usbid "0x04b8" "0x0821"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX5900"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A720"
+
+:model "Stylus CX6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A720"
+
+:model "Stylus CX6300"
+:interface "USB"
+:usbid "0x04b8" "0x0805"
+:status :good
+:comment "all-in-one<br>mistakenly thinks its a PX-A650"
+
+:model "Stylus CX6400"
+:interface "USB"
+:usbid "0x04b8" "0x0805"
+:status :good
+:comment "all-in-one<br>mistakenly thinks its a PX-A650"
+
+:model "Stylus CX6500"
+:interface "USB"
+:usbid "0x04b8" "0x0813"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX6600"
+:interface "USB"
+:usbid "0x04b8" "0x0813"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX6900F"
+:interface "USB"
+:usbid "0x04b8" "0x0831"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX7000F"
+:interface "USB"
+:usbid "0x04b8" "0x0831"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus CX7300"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A640"
+
+:model "Stylus CX7400"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A640"
+
+:model "Stylus CX7700"
+:interface "USB"
+:usbid "0x04b8" "0x081f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX7800"
+:interface "USB"
+:usbid "0x04b8" "0x081f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus CX8300"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A740"
+
+:model "Stylus CX8400"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A740"
+
+:model "Stylus CX9300F"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-FA700"
+
+:model "Stylus CX9400Fax"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-FA700"
+
+:model "Stylus DX3800"
+:interface "USB"
+:usbid "0x04b8" "0x0818"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX3850"
+:interface "USB"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX4000"
+:interface "USB"
+:usbid "0x04b8" "0x082f"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A620"
+
+:model "Stylus DX4200"
+:interface "USB"
+:usbid "0x04b8" "0x0820"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX4400"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+:url "http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
+
+:model "Stylus DX4800"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A650"
+
+:model "Stylus DX4850"
+:interface "USB"
+:usbid "0x04b8" "0x0819"
+:status :good
+:comment "all-in-one<br>DX4800 + card reader"
+
+:model "Stylus DX5000"
+:interface "USB"
+:usbid "0x04b8" "0x082b"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus DX6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A720"
+
+:model "Stylus DX7000F"
+:interface "USB"
+:usbid "0x04b8" "0x0831"
+:status :unsupported
+:comment "may work with the snapscan backend<br>all-in-one with FAX"
+
+:model "Stylus DX7400"
+:interface "USB"
+:usbid "0x04b8" "0x0838"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A640"
+
+:model "Stylus DX8400"
+:interface "USB"
+:usbid "0x04b8" "0x0839"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-A740"
+
+:model "Stylus DX9400F"
+:interface "USB"
+:usbid "0x04b8" "0x083a"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-FA700"
+
+:model "Stylus Office BX300F"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Office BX310FN Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Office BX600FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "Stylus Office BX610FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Office TX300F"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Office TX510FN Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Office TX600FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "Stylus Office TX610FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Photo PX650 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0850"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Photo PX700W"
+:interface "USB Network"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface supported<br>all-in-one<br>overseas version of the EP-801A"
+
+:model "Stylus Photo PX710W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Photo PX800FW"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the EP-901A"
+
+:model "Stylus Photo PX810FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0853"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Photo RX420"
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX425" ; France
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX430" ; Australia
+:interface "USB"
+:usbid "0x04b8" "0x080f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX500"
+:interface "USB"
+:usbid "0x04b8" "0x0807"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX510"
+:interface "USB"
+:usbid "0x04b8" "0x0807"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus Photo RX520"
+:interface "USB"
+:usbid "0x04b8" "0x081a"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A750"
+
+:model "Stylus Photo RX530"
+:interface "USB"
+:usbid "0x04b8" "0x081a"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A750"
+
+:model "Stylus Photo RX560"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A820"
+
+:model "Stylus Photo RX585"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A840"
+
+:model "Stylus Photo RX580"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A820"
+
+:model "Stylus Photo RX595"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A840"
+
+:model "Stylus Photo RX590"
+:interface "USB"
+:usbid "0x04b8" "0x0827"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A820"
+
+:model "Stylus Photo RX600"
+:interface "USB"
+:usbid "0x04b8" "0x0806"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A850"
+
+:model "Stylus Photo RX610"
+:interface "USB"
+:usbid "0x04b8" "0x083c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A840"
+
+:model "Stylus Photo RX620"
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A870"
+
+:model "Stylus Photo RX630"
+:interface "USB"
+:usbid "0x04b8" "0x0811"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A870"
+
+:model "Stylus Photo RX640"
+:interface "USB"
+:usbid "0x04b8" "0x081c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A890"
+
+:model "Stylus Photo RX650"
+:interface "USB"
+:usbid "0x04b8" "0x081c"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A890"
+
+:model "Stylus Photo RX680"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A940"
+
+:model "Stylus Photo RX685"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A940"
+
+:model "Stylus Photo RX690"
+:interface "USB"
+:usbid "0x04b8" "0x0837"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A940"
+
+:model "Stylus Photo RX700"
+:interface "USB"
+:usbid "0x04b8" "0x0810"
+:status :good
+:comment "all-in-one<br>overseas version of the PM-A900"
+
+:model "Stylus Photo TX650 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0850"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Photo TX700W"
+:interface "USB"
+:usbid "0x04b8" "0x0846"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the EP-801A"
+
+:model "Stylus Photo TX710W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0852"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Photo TX800FW"
+:interface "USB"
+:usbid "0x04b8" "0x0844"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the EP-901A"
+
+:model "Stylus NX100"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "Stylus NX110 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-402A"
+
+:model "Stylus NX200"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus NX210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus NX300"
+:interface "USB"
+:usbid "0x04b8" "0x0848"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus NX400"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-501A"
+
+:model "Stylus NX410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0851"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "Stylus NX510 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-502A"
+
+:model "Stylus SX100"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "Stylus SX110 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-402A"
+
+:model "Stylus SX125"
+:interface "USB"
+:usbid "0x04b8" "0x085c"
+:status :untested
+:comment "all-in-one"
+
+:model "Stylus SX200"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX205"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX400"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-501A"
+
+:model "Stylus SX405"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus SX410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0851"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "Stylus SX510W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-502A"
+
+:model "Stylus SX600FW"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "Stylus SX610FW Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
+:model "Stylus Scan 2000"
+:interface "USB"
+:usbid "0x04b8" "0x0105"
+:status :untested
+:comment "apparently mostly the same as the Stylus Scan 2500"
+
+:model "Stylus Scan 2500"
+:interface "USB"
+:usbid "0x04b8" "0x0106"
+:status :untested
+:comment "scanner is apparently a GT-7000"
+
+:model "Stylus TX100"
+:interface "USB"
+:usbid "0x04b8" "0x0841"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-401A"
+
+:model "Stylus TX110 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084d"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-402A"
+
+:model "Stylus TX200"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX203"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX209"
+:interface "USB"
+:usbid "0x04b8" "0x0849"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX210 Series"
+:interface "USB"
+:usbid "0x04b8" "0x084f"
+:status :good
+:comment "all-in-one"
+
+:model "Stylus TX400"
+:interface "USB"
+:usbid "0x04b8" "0x084a"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-501A"
+
+:model "Stylus TX410 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0851"
+:status :good
+:comment "network interface probably supported<br>all-in-one"
+
+:model "Stylus TX550W Series"
+:interface "USB"
+:usbid "0x04b8" "0x0856"
+:status :good
+:comment "all-in-one<br>overseas version of the PX-502A"
+
+:model "WorkForce 310 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0854"
+:status :good
+:comment "all-in-one"
+
+:model "WorkForce 500"
+:interface "USB"
+:usbid "0x04b8" "0x084c"
+:status :good
+:comment "all-in-one"
+
+:model "WorkForce 600"
+:interface "USB"
+:usbid "0x04b8" "0x0847"
+:status :good
+:comment "network interface probably supported<br>all-in-one<br>overseas version of the PX-601F"
+
+:model "WorkForce 610 Series"
+:interface "USB"
+:usbid "0x04b8" "0x0855"
+:status :unsupported
+:comment "supported by the epkowa backend plus non-free interpreter"
+
diff --git a/doc/descriptions/fujitsu.desc b/doc/descriptions/fujitsu.desc
new file mode 100644
index 0000000..1691ad5
--- /dev/null
+++ b/doc/descriptions/fujitsu.desc
@@ -0,0 +1,444 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+
+:backend "fujitsu" ; name of backend
+:url "http://www.thebility.com/fujitsu/"
+:version "117" ; version of backend
+:manpage "sane-fujitsu" ; name of manpage (if it exists)
+:comment "Backend updated for SANE release 1.0.24, see sane-fujitsu manpage"
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Fujitsu" ; name a manufacturer
+:url "http://www.fujitsu.com/"
+
+;==================================================
+; DISCONTINUED OLDER MODELS, SMALL
+:model "M3091DC"
+:interface "SCSI"
+:url "http://www.remote.org/frederik/projects/software/sane/"
+:status :complete
+:comment "small, old, discontinued"
+
+:model "M3092DC"
+:interface "SCSI"
+:status :complete
+:comment "small, old, discontinued"
+
+;==================================================
+; DISCONTINUED NEWER MODELS, SMALL
+:model "fi-4120C"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x1041"
+:status :complete
+:comment "small, recent, discontinued, usb 1.1"
+
+:model "fi-4120C2"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x10ae"
+:status :complete
+:comment "small, recent, discontinued, usb 2.0"
+
+:model "fi-4220C"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x1042"
+:status :complete
+:comment "small, recent, discontinued, usb 1.1"
+
+:model "fi-4220C2"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x10af"
+:status :complete
+:comment "small, recent, discontinued, usb 2.0"
+
+:model "fi-5110C"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x1097"
+:comment "small, recent, discontinued"
+
+:model "fi-5110EOX/2"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x1096"
+:comment "small, recent, discontinued"
+
+:model "fi-5110EOX3"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x10e6"
+:comment "small, recent, discontinued"
+
+:model "fi-5110EOXM"
+:interface "USB"
+:usbid "0x04c5" "0x10f2"
+:status :complete
+:comment "small, recent, discontinued"
+
+:model "fi-5120C"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x10e0"
+:comment "small, recent, discontinued"
+
+:model "fi-5220C"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x10e1"
+:comment "small, recent, discontinued"
+
+:model "fi-5000N"
+:interface "Ethernet"
+:status :untested
+:comment "Not a scanner, rather a scanner to ethernet interface"
+
+:model "fi-6000NS"
+:interface "Ethernet"
+:status :untested
+:comment "small, recent, discontinued, integrated touchscreen and keyboard"
+
+:model "ScanSnap S500"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x10fe"
+:comment "small, recent, discontinued"
+
+:model "ScanSnap S500M"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x1135"
+:comment "small, recent, discontinued"
+
+:model "ScanSnap S510"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x1155"
+:comment "small, recent, discontinued"
+
+:model "ScanSnap S510M"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x116f"
+:comment "small, recent, discontinued"
+
+:model "fi-6130"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x114f"
+:comment "small, recent, discontinued"
+
+:model "fi-6230"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x1150"
+:comment "small, recent, discontinued"
+
+:model "ScanSnap S1500"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x11a2"
+:comment "small, discontinued"
+
+:model "ScanSnap S1500M"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x11a2"
+:comment "small, discontinued, same as S1500"
+
+;==================================================
+; CURRENT MODELS, SMALL
+:model "ScanSnap N1800"
+:interface "Ethernet"
+:status :untested
+:comment "small, current, integrated touchscreen and keyboard"
+
+:model "ScanSnap fi-6010N"
+:interface "Ethernet"
+:status :untested
+:comment "small, current, integrated touchscreen and keyboard"
+
+:model "fi-6110"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x11fc"
+:comment "small, current"
+
+:model "fi-6130Z"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x11f3"
+:comment "small, current"
+
+:model "fi-6230Z"
+:interface "USB"
+:status :complete
+:usbid "0x04c5" "0x11f4"
+:comment "small, current"
+
+:model "ScanSnap iX500"
+:interface "USB WiFi"
+:status :good
+:usbid "0x04c5" "0x132b"
+:comment "small, current, WiFi not supported. Hardware only scans in color. Backend generates binary and grayscale modes."
+
+;==================================================
+; DISCONTINUED OLDER MODELS, MEDIUM
+:model "M3093E"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "medium, old, discontinued"
+
+:model "M3093DE"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "medium, old, discontinued"
+
+:model "M3093DG"
+:interface "SCSI"
+:status :complete
+:comment "medium, old, discontinued"
+
+:model "M3093EX"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "medium, old, discontinued"
+
+:model "M3093GX"
+:interface "SCSI"
+:status :complete
+:comment "medium, old, discontinued"
+
+:model "M3096EX"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "medium, old, discontinued"
+
+:model "M3096GX"
+:interface "SCSI"
+:status :complete
+:comment "medium, old, discontinued"
+
+:model "M3097E+"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "medium, old, discontinued"
+
+:model "M3097G+"
+:interface "SCSI"
+:status :complete
+:comment "medium, old, discontinued"
+
+:model "M3097DE"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "medium, old, discontinued"
+
+:model "M3097DG"
+:interface "SCSI"
+:status :complete
+:comment "medium, old, discontinued"
+
+;==================================================
+; DISCONTINUED NEWER MODELS, MEDIUM
+:model "fi-4340C"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x10cf"
+:status :complete
+:comment "medium, current"
+
+:model "fi-4530C"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x1078"
+:comment "medium, recent, discontinued"
+
+:model "fi-4640S"
+:interface "SCSI"
+:status :complete
+:comment "medium, recent, discontinued"
+
+:model "fi-4750C"
+:interface "SCSI"
+:status :complete
+:comment "medium, recent, discontinued"
+
+:model "fi-5530C"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x10e2"
+:comment "medium, recent, discontinued"
+
+:model "fi-6140"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x114d"
+:comment "medium, recent, discontinued"
+
+:model "fi-6240"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x114e"
+:comment "medium, recent, discontinued"
+
+;==================================================
+; CURRENT MODELS, MEDIUM
+
+:model "fi-5530C2"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x114a"
+:comment "medium, current"
+
+:model "fi-6140Z"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x11f1"
+:comment "medium, current"
+
+:model "fi-6240Z"
+:interface "SCSI USB"
+:status :complete
+:usbid "0x04c5" "0x11f2"
+:comment "medium, current"
+
+;==================================================
+; DISCONTINUED OLDER MODELS, BIG
+:model "M3099A"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "big, old, discontinued"
+
+:model "M3099G"
+:interface "SCSI"
+:status :complete
+:comment "big, old, discontinued"
+
+:model "M3099EH"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "big, old, discontinued"
+
+:model "M3099GH"
+:interface "SCSI"
+:status :complete
+:comment "big, old, discontinued"
+
+:model "M3099EX"
+:interface "RS232C/Video"
+:status :unsupported
+:comment "big, old, discontinued"
+
+:model "M3099GX"
+:interface "SCSI"
+:status :complete
+:comment "big, old, discontinued"
+
+:model "M4097D"
+:interface "SCSI"
+:status :complete
+:comment "big, old, discontinued"
+
+:model "M4099D"
+:interface "SCSI"
+:status :complete
+:comment "big, old, discontinued"
+
+;==================================================
+; DISCONTINUED NEWER MODELS, BIG
+:model "fi-4750L"
+:interface "SCSI"
+:status :complete
+:comment "big, recent, discontinued"
+
+:model "fi-4860C"
+:interface "SCSI"
+:status :complete
+:comment "big, recent, discontinued"
+
+:model "fi-4860C2"
+:interface "SCSI"
+:status :complete
+:comment "big, recent, discontinued"
+
+:model "fi-4990C"
+:interface "SCSI"
+:status :complete
+:comment "big, recent, discontinued"
+
+:model "fi-5650C"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x10ad"
+:status :complete
+:comment "big, recent, discontinued"
+
+:model "fi-5750C"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x1095"
+:status :complete
+:comment "big, recent, discontinued"
+
+:model "fi-5900C"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x10e7"
+:status :good
+:comment "big, recent, discontinued. Independent ultrasonic control and multistream unsupported"
+
+:model "fi-6750S"
+:interface "USB"
+:status :untested
+:usbid "0x04c5" "0x1178"
+:comment "Simplex, USB only version of fi-6770, won't wakeup via software, discontinued"
+
+;==================================================
+; CURRENT MODELS, BIG
+:model "fi-5950"
+:interface "SCSI USB"
+:usbid "0x04c5" "0x1213"
+:status :untested
+:comment "big, current. Faster version of fi-5900?"
+
+:model "fi-6670"
+:interface "SCSI USB"
+:status :good
+:usbid "0x04c5" "0x1176"
+:comment "big, current, won't wakeup via software"
+
+:model "fi-6670A"
+:interface "SCSI USB"
+:status :good
+:usbid "0x04c5" "0x1177"
+:comment "big, current, VRS CGA board unsupported, won't wakeup via software"
+
+:model "fi-6770"
+:interface "SCSI USB"
+:status :good
+:usbid "0x04c5" "0x1174"
+:comment "big, current, won't wakeup via software"
+
+:model "fi-6770A"
+:interface "SCSI USB"
+:status :good
+:usbid "0x04c5" "0x1175"
+:comment "big, current, VRS CGA board unsupported, won't wakeup via software"
+
+:model "fi-6800"
+:interface "SCSI USB"
+:status :untested
+:usbid "0x04c5" "0x119d"
+:comment "big, current. Independent ultrasonic control and multistream unsupported"
+
+:model "fi-6800-CGA"
+:interface "SCSI USB"
+:status :untested
+:usbid "0x04c5" "0x119e"
+:comment "big, current. VRS CGA board unsupported, Independent ultrasonic control and multistream unsupported"
diff --git a/doc/descriptions/genesys.desc b/doc/descriptions/genesys.desc
new file mode 100644
index 0000000..4cb2fc0
--- /dev/null
+++ b/doc/descriptions/genesys.desc
@@ -0,0 +1,295 @@
+:backend "genesys"
+:version "1.0-63"
+:manpage "sane-genesys"
+:comment "Only the USB scanners mentioned below are currently supported."
+:url "http://www.meier-geinitz.de/sane/genesys-backend/"
+:devicetype :scanner
+
+; -----------------------------------------------------------------------------
+
+:mfg "Plustek"
+:url "http://www.plustek.de/"
+:url "http://www.plustek.com/"
+
+:model "OpticBook 3600"
+:interface "USB"
+:usbid "0x07b3" "0x0900"
+:status :basic
+:comment "Has a Primax USB ID"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Medion/Lifetec/Tevion/Cytron"
+:url "http://www.medion.com/"
+:url "http://www.medion.de/"
+
+:model "MD5345"
+:interface "USB"
+:usbid "0x0461" "0x0377"
+:status :good
+:comment "Has a Primax USB ID"
+
+:model "MD6228"
+:interface "USB"
+:usbid "0x0461" "0x0377"
+:status :good
+:comment "Has a Primax USB ID. Same as MD5345"
+
+:model "MD6471"
+:interface "USB"
+:usbid "0x0461" "0x0377"
+:status :complete
+:comment "Has a Primax USB ID. Same as MD5345"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com/"
+
+:model "ScanJet 2300C"
+:interface "USB"
+:usbid "0x03f0" "0x0901"
+:status :complete
+:comment "600x1200 dpi max"
+
+:model "ScanJet 2400C"
+:interface "USB"
+:usbid "0x03f0" "0x0a01"
+:status :complete
+:comment "1200x1200 dpi max"
+
+:model "ScanJet G2410"
+:interface "USB"
+:usbid "0x03f0" "0x0a01"
+:status :basic
+:comment "clone of the HP 2400C"
+
+:model "ScanJet 3670C"
+:interface "USB"
+:usbid "0x03f0" "0x1405"
+:status :complete
+:comment "1200x1200 dpi max, complete transparency adaptor support"
+
+:model "ScanJet 3690C"
+:interface "USB"
+:usbid "0x03f0" "0x1405"
+:status :complete
+:comment "1200x1200 dpi max, same as HP 3670C"
+
+:model "ScanJet 4850C"
+:interface "USB"
+:usbid "0x03f0" "0x1b05"
+:status :untested
+:comment "resolution from 100 to 2400 supported, UTA not supported yet"
+
+:model "ScanJet G4010"
+:interface "USB"
+:usbid "0x03f0" "0x4505"
+:status :good
+:comment "resolution from 100 to 2400 supported, UTA not supported yet"
+
+:model "ScanJet G4050"
+:interface "USB"
+:usbid "0x03f0" "0x4605"
+:status :good
+:comment "resolution from 100 to 2400 supported, UTA not supported yet"
+
+:model "ScanJet N6310"
+:interface "USB"
+:usbid "0x03f0" "0x4705"
+:status :untested
+:comment "Not supported yet"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Canon"
+:url "http://www.canon.com/"
+
+:model "CanoScan LiDE 35"
+:interface "USB"
+:usbid "0x04a9" "0x2213"
+:status :good
+:comment "Same ids as LiDE 50."
+
+:model "CanoScan LiDE 40"
+:interface "USB"
+:usbid "0x04a9" "0x2213"
+:status :good
+:comment "Same ids as LiDE 50."
+
+:model "CanoScan LiDE 50"
+:interface "USB"
+:usbid "0x04a9" "0x2213"
+:status :good
+
+:model "CanoScan LiDE 60"
+:interface "USB"
+:usbid "0x04a9" "0x221c"
+:status :good
+
+:model "CanoScan LiDE 100"
+:interface "USB"
+:usbid "0x04a9" "0x1904"
+:status :complete
+:comment "GL847 based, resolution from 75 to 2400 dpi"
+
+:model "CanoScan LiDE 110"
+:interface "USB"
+:usbid "0x04a9" "0x1909"
+:status :complete
+:comment "GL124 based, resolution from 75 to 2400 dpi"
+
+:model "CanoScan LiDE 200"
+:interface "USB"
+:usbid "0x04a9" "0x1905"
+:status :complete
+:comment "GL847 based, resolution from 75 to 4800 dpi"
+
+:model "CanoScan LiDE 210"
+:interface "USB"
+:usbid "0x04a9" "0x190a"
+:status :complete
+:comment "GL124 based, resolution from 75 to 2400 dpi"
+
+:model "CanoScan 4400f"
+:interface "USB"
+:usbid "0x04a9" "0x2228"
+:status :unsupported
+:comment "GL843 based, to be added to the genesys backend"
+
+:model "CanoScan 5600F"
+:interface "USB"
+:usbid "0x04a9" "0x1906"
+:status :unsupported
+:comment "GL847 based, to be added to the genesys backend"
+
+:model "CanoScan 700F"
+:interface "USB"
+:usbid "0x04a9" "0x1907"
+:status :good
+:comment "GL847 based, resolution from 75 to 4800 dpi"
+
+:model "Canon Image Formula 101"
+:interface "USB"
+:usbid "0x1083" "0x162e"
+:status :unsupported
+:comment "GL846 based, work in progress"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Visioneer"
+:url "http://www.visioneer.com/"
+
+:model "Strobe XP 100,r3"
+:interface "USB"
+:usbid "0x04a7" "0x049b"
+:status :good
+:comment "All resolution and mode supported, calibration is available"
+
+:model "Strobe XP 200"
+:interface "USB"
+:usbid "0x04a7" "0x0426"
+:status :good
+:comment "All resolution and mode supported, calibration is available"
+
+:model "Strobe XP 300"
+:interface "USB"
+:usbid "0x04a7" "0x0474"
+:status :good
+:comment "All resolution and mode supported, calibration is available, front- and backside side-by-side, with backside mirrored horizontally."
+
+:model "Roadwarrior"
+:interface "USB"
+:usbid "0x04a7" "0x0494"
+:status :basic
+:comment "All resolution and mode supported, calibration is available"
+
+:model "Visioneer OneTouch 7100"
+:interface "USB"
+:usbid "0x04a7" "0x0229"
+:status :complete
+:comment "Same as MD5345"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Pentax"
+:url "http://www.pentaxtech.com/"
+:url "http://mobilesolutions.brother-usa.com/"
+
+:model "DSmobile 600"
+:interface "USB"
+:usbid "0x0a17" "0x3210"
+:status :good
+:comment "All resolution and mode supported, calibration is available"
+
+:model "DSmobile 600"
+:interface "USB"
+:usbid "0x04f9" "0x2038"
+:status :good
+:comment "All resolution and mode supported, calibration is available"
+
+; -----------------------------------------------------------------------------
+
+:mfg "DCT"
+:url "http://www.docucap.com/"
+:comment "Successor of Syscan in the USA"
+
+:model "DocketPort 487"
+:interface "USB"
+:usbid "0x1dcc" "0x4810"
+:status :basic
+:comment "All resolution and mode supported, calibration is available, front- and backside side-by-side, with backside mirrored horizontally."
+
+; -----------------------------------------------------------------------------
+
+:mfg "Syscan"
+
+:model "DocketPort 485"
+:interface "USB"
+:usbid "0x0a82" "0x4810"
+:status :basic
+:comment "All resolution and mode supported, front- and backside side-by-side, with backside mirrored horizontally."
+
+:model "DocketPort 465"
+:interface "USB"
+:usbid "0x0a82" "0x4802"
+:status :untested
+:comment "All resolution and mode should be supported, but uncorrected scans"
+
+:model "DocketPort 665"
+:interface "USB"
+:usbid "0x0a82" "0x4803"
+:status :basic
+:comment "All resolution and mode supported, calibration is available"
+
+:model "DocketPort 685/ Ambir DS685"
+:interface "USB"
+:usbid "0x0a82" "0x480c"
+:status :good
+:comment "All resolution and mode supported, calibration is available, front- and backside side-by-side, with backside mirrored horizontally."
+
+:mfg "Xerox"
+:url "http://www.xerox.com/"
+
+:model "Travel Scanner 100"
+:interface "USB"
+:usbid "0x04a7" "0x04ac"
+:status :good
+:comment "All resolution and mode supported, calibration is available"
+
+:model "2400 Onetouch"
+:interface "USB"
+:usbid "0x0461" "0x038b"
+:status :complete
+:comment "GL646 based, resolution from 75 to 2400 dpi"
+
+
+; -----------------------------------------------------------------------------
+
+:mfg "Panasonic"
+
+:model "KV-SS080"
+:interface "USB"
+:usbid "0x04da" "0x100f"
+:status :complete
+:comment "All resolution and mode supported, calibration is available. Support sponsored by cncsolutions (http://www.cncsolutions.com.br)"
diff --git a/doc/descriptions/gphoto2.desc b/doc/descriptions/gphoto2.desc
new file mode 100644
index 0000000..48dd8ee
--- /dev/null
+++ b/doc/descriptions/gphoto2.desc
@@ -0,0 +1,13 @@
+;gphoto2 backend .desc file by Peter S. Fales
+
+:backend "gphoto2" ; name of backend
+:version "0.0" ; version of backend
+:manpage "sane-gphoto2" ; name of manpage (if it exists)
+:url "mailto:peter@fales-lorenz.net" ; backend's web page
+
+:devicetype :api ; start of a list of devices....
+
+:desc "Multiple cameras supported by the gphoto2 libraries"
+:url "http://www.gphoto.org"
+;:interface "USB, serial port"
+:comment "The long-term plan is to support all the cameras supported by the gphoto2 libraries (currently over 140 models). However, at this stage, only a handful of cameras are definitely known to work with SANE. Other cameras will probably work if the native file format is EXIF or JPEG. Testers welcome!"
diff --git a/doc/descriptions/gt68xx.desc b/doc/descriptions/gt68xx.desc
new file mode 100644
index 0000000..5bc8f0e
--- /dev/null
+++ b/doc/descriptions/gt68xx.desc
@@ -0,0 +1,472 @@
+:backend "gt68xx"
+:version "1.0-84"
+:manpage "sane-gt68xx"
+:url "http://www.meier-geinitz.de/sane/gt68xx-backend/"
+:comment "Only the USB scanners mentioned below are supported. For other Mustek BearPaws, look at the Plustek and the MA-1509 backend."
+:devicetype :scanner
+
+; -----------------------------------------------------------------------------
+
+:mfg "Artec/Ultima"
+:url "http://www.artecusa.com/"
+
+:model "Ultima 2000"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Works, only product id 0x4002 is supported"
+
+:model "Ultima 2000 e+"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Works, however 12 bit mode doesn't seem to be supported"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Boeder"
+:model "Sm@rtScan Slim Edition"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Similar to Artec Ultima 2000"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Fujitsu"
+:url "http://www.fujitsu.com/"
+
+:model "1200CUS"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :basic
+:comment "Works, but is slow. Probably a Mustek BearPaw 2400 CU clone."
+
+; -----------------------------------------------------------------------------
+
+:mfg "Genius"
+:url "http://www.genius-kye.com/"
+
+:model "ColorPage Slim 1200"
+;:url "/unsupported/genius-colorpage-slim-1200.html"
+:interface "USB"
+:usbid "0x0458" "0x201e"
+:status :untested
+:comment "Untested but should work."
+
+:model "Colorpage SF600"
+:interface "USB"
+:usbid "0x0458" "0x2021"
+:status :basic
+
+:model "Colorpage Vivid3x"
+:interface "USB"
+:usbid "0x0458" "0x2011"
+:status :good
+
+:model "Colorpage Vivid3 V2"
+:interface "USB"
+:usbid "0x0458" "0x2011"
+:status :good
+:comment "Same as Colorpage Vivid3x"
+
+:model "Colorpage Vivid3xe"
+:interface "USB"
+:usbid "0x0458" "0x2017"
+:status :good
+
+:model "Colorpage Vivid4"
+:usbid "0x0458" "0x2014"
+:interface "USB"
+:status :good
+
+:model "Colorpage Vivid4x"
+:usbid "0x0458" "0x201b"
+:interface "USB"
+:status :good
+
+:model "Colorpage Vivid4xe"
+:usbid "0x0458" "0x201a"
+:interface "USB"
+:status :good
+
+:model "Colorpage Vivid 1200 X"
+:interface "USB"
+:usbid "0x0458" "0x201d"
+:status :good
+
+:model "Colorpage Vivid 1200 XE"
+:interface "USB"
+:usbid "0x0458" "0x201f"
+:status :good
+
+; -----------------------------------------------------------------------------
+
+:mfg "Googlegear"
+:model "2000"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Same as Artec Ultima 2000."
+
+; -----------------------------------------------------------------------------
+
+:mfg "Lexmark"
+:url "http://www.lexmark.com/"
+:model "X70"
+:interface "USB"
+:usbid "0x043d" "0x002d"
+:status :good
+:comment "Works, some resolutions fail at 16 bit"
+
+:model "X73"
+:interface "USB"
+:usbid "0x043d" "0x002d"
+:status :good
+:comment "Works, some resolutions fail at 16 bit, same as X70"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Medion/Lifetec/Tevion/Cytron"
+:url "http://www.medion.com"
+:comment "Sold by Aldi and Tchibo."
+
+:model "MD 4394"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Product id 0x4002. If you have 0x4003, use artec_eplus48u backend."
+
+:model "MD/LT 9375"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :untested
+:comment "Untested, but is reported to have the same ids as the Artec Ultima 2000. Please test."
+
+:model "MD/LT 9385"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Similar to Artec Ultima 2000"
+
+:model "LT 9452"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Similar to Mustek ScanExpress 1200 UB Plus"
+
+:model "MD 9458"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Similar to Artec Ultima 2000 (e+?)"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Mustek"
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "BearPaw 1200 CS"
+:interface "USB"
+:usbid "0x055f" "0x021e"
+:status :good
+
+:model "BearPaw 1200 CU"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+
+:model "BearPaw 1200 CU Plus"
+:interface "USB"
+:usbid "0x055f" "0x021b"
+:status :good
+
+:model "BearPaw 1200 CU Plus"
+:interface "USB"
+:usbid "0x055f" "0x021c"
+:status :good
+
+:model "BearPaw 1200 TA"
+:interface "USB"
+:usbid "0x055f" "0x021e"
+:status :good
+:comment "Transparency adapter supported"
+
+:model "BearPaw 1248 CU"
+:interface "USB"
+:usbid "0x055f" "0x021c"
+:status :good
+:comment "Seems to use the same ids as BearPaw 1200 CU Plus."
+
+:model "BearPaw 2400 CS"
+:interface "USB"
+:usbid "0x055f" "0x0218"
+:status :untested
+:comment "Probably works, reports are welcome"
+
+:model "BearPaw 2400 CS Plus"
+:interface "USB"
+:usbid "0x055f" "0x0219"
+:status :good
+:comment "Works, problems with 12/16 bit modes?"
+
+:model "BearPaw 2400 CU"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :basic
+:comment "Works, but is slow"
+
+:model "BearPaw 2400 CU Plus"
+:interface "USB"
+:usbid "0x055f" "0x021d"
+:status :good
+
+:model "BearPaw 2400 TA"
+:interface "USB"
+:usbid "0x055f" "0x0218"
+:status :good
+:comment "Transparency adapter supported"
+
+:model "BearPaw 2400 TA Plus"
+:interface "USB"
+:usbid "0x055f" "0x0219"
+:status :good
+:comment "Transparency adapter supported"
+
+:model "BearPaw 2448 CS Plus"
+:interface "USB"
+:usbid "0x055f" "0x021a"
+:status :basic
+:comment "Slow. Same as 2448 TA Plus, but without TA."
+
+:model "BearPaw 2448 TA Plus"
+:interface "USB"
+:usbid "0x055f" "0x021a"
+:status :basic
+:comment "Slow. Transparency adapter supported. Slow. Brightness depends on resolution?"
+
+:model "Plug-n-Scan 2400 MT"
+:interface "USB"
+:usbid "0x055f" "0x0219"
+:status :good
+:comment "Works but is slow in high resolutions. Same as BearPaw 2400 TA Plus."
+
+:model "Plug-n-Scan 2400 M"
+:interface "USB"
+:usbid "0x055f" "0x0219"
+:status :good
+:comment "Works but is slow in high resolutions. Same as BearPaw 2400 CS Plus."
+
+:model "ScanExpress 1200 UB Plus"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+
+:model "ScanExpress 1248 UB"
+:interface "USB"
+:usbid "0x055f" "0x021f"
+:status :complete
+
+:model "ScanExpress 2400 USB"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :minimal
+:comment "Should be detected but may need some more work in the code. Testers welcome. Please contact me if you own this scanner."
+
+:model "ScanExpress A3 USB"
+:interface "USB"
+:usbid "0x055f" "0x0210"
+:status :basic
+:comment "Still some vertical stripes."
+
+:model "ScanMagic 1200 UB Plus"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Same as ScanExpress 1200 UB Plus"
+
+; -----------------------------------------------------------------------------
+
+:mfg "NeatReceipts"
+
+:model "Scanalizer Professional 2.5"
+:interface "USB"
+:usbid "0x07b3" "0x0412"
+:status :untested
+:comment "Similar to Plustek OpticSlim M12. Please tell us if this scanner works."
+
+:model "Mobile Scanner"
+:interface "USB"
+:usbid "0x07b3" "0x0462"
+:status :basic
+:comment "Similar to Plustek OpticSlim M12."
+; -----------------------------------------------------------------------------
+
+
+:mfg "Nortek"
+
+:model "MyScan 1200"
+:interface "USB"
+:usbid "0x07b3" "0x040b"
+:status :untested
+:comment "Untested. Please test. Similar to Plustek OpticPro S12?"
+; -----------------------------------------------------------------------------
+
+:mfg "Packard Bell"
+
+:model "Diamond 1200"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Similar to Mustek BearPaw 1200 (Plus)"
+
+:model "Diamond 1200 Plus"
+:interface "USB"
+:usbid "0x055f" "0x021c"
+:status :good
+:comment "Similar to Mustek BearPaw 1200 Plus"
+
+:model "Diamond 1200 Plus"
+:interface "USB"
+:usbid "0x055f" "0x021b"
+:status :good
+:comment "Similar to Mustek BearPaw 1200 Plus"
+
+:model "Diamond 2450"
+:interface "USB"
+:usbid "0x055f" "0x0219"
+:status :good
+
+; -----------------------------------------------------------------------------
+
+:mfg "Plustek"
+:url "http://www.plustek.de/"
+:url "http://www.plustek.com/"
+
+:model "OpticPro 1248U"
+:interface "USB"
+:usbid "0x07b3" "0x0400"
+:status :good
+
+:model "OpticPro 1248U"
+:interface "USB"
+:usbid "0x07b3" "0x0401"
+:status :good
+
+:model "OpticPro U16B"
+:interface "USB"
+:usbid "0x07b3" "0x0402"
+:status :good
+
+:model "OpticPro U16B+"
+:interface "USB"
+:usbid "0x07b3" "0x0403"
+:status :good
+
+:model "OpticPro UT16B"
+:interface "USB"
+:usbid "0x07b3" "0x0403"
+:status :untested
+:comment "Probably works. Transparency adapter not supported yet. Please contact me if you own such a device. "
+
+:model "OpticPro S12"
+:interface "USB"
+:usbid "0x07b3" "0x040b"
+:status :good
+:comment "Product ID 0x040b only."
+
+:model "OpticPro S24"
+:interface "USB"
+:usbid "0x07b3" "0x040e"
+:status :good
+:comment "Product ID 0x040e only. Is reported to work."
+
+:model "OpticPro ST12"
+:interface "USB"
+:usbid "0x07b3" "0x040b"
+:status :untested
+:comment "Product ID 0x040b only. Needs testing. Transparency adapter completely untested. Please contact me if you own such a scanner."
+
+:model "OpticSlim 1200"
+:interface "USB"
+:usbid "0x07b3" "0x0413"
+:status :good
+
+:model "OpticSlim 2400"
+:interface "USB"
+:usbid "0x07b3" "0x0422"
+:status :good
+:comment "Works up to 1200 dpi."
+
+:model "OpticSlim 2400 plus"
+:interface "USB"
+:usbid "0x07b3" "0x0454"
+:status :good
+:comment "Same as OpticSlim 2400."
+
+:model "Iriscan Express 2"
+:interface "USB"
+:usbid "0x07b3" "0x045f"
+:status :complete
+:comment "Works up to 1200 dpi. Calibration with external calibration sheet supported"
+; -----------------------------------------------------------------------------
+
+:model "OpticSlim M12"
+:interface "USB"
+:usbid "0x07b3" "0x0412"
+:status :complete
+:comment "Works up to 1200 dpi. Calibration with external calibration sheet supported"
+; -----------------------------------------------------------------------------
+
+:mfg "RevScan"
+;:url ""
+
+:model "19200i"
+:interface "USB"
+:usbid "0x07b3" "0x0400"
+:status :good
+:comment "Similar to Plustek OpticPro 1248U"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Trust"
+:url "http://www.trust-site.com"
+
+:model "240TH Easy Webscan Gold"
+:interface "USB"
+:usbid "0x055f" "0x0218"
+:status :good
+:comment "Same as Mustek Bearpaw 2400 TA plus."
+
+:model "Compact Scan USB 19200"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Works, if you have vendor id 0x055f and product id 0x0006, use the mustek_usb backend instead, similar to Mustek ScanExpress 1200 UB (Plus)"
+
+:model "Direct WebScan 19200"
+:interface "USB"
+:usbid "0x055f" "0x021c"
+:status :good
+:comment "Same as Mustek BearPaw 1200 CU Plus (0x021c)."
+
+:model "Flat Scan USB 19200"
+:interface "USB"
+:usbid "0x05d8" "0x4002"
+:status :good
+:comment "Similar to Artec Ultima 2000"
+
+; -----------------------------------------------------------------------------
+
+:mfg "Visioneer"
+:url "http://www.visioneer.com/"
+
+:model "OneTouch 7300"
+:interface "USB"
+:usbid "0x04a7" "0x0444"
+:status :good
+:comment "Works upto 1200 dpi and 12 bits/color."
+
+; -----------------------------------------------------------------------------
diff --git a/doc/descriptions/hp.desc b/doc/descriptions/hp.desc
new file mode 100644
index 0000000..8a662c5
--- /dev/null
+++ b/doc/descriptions/hp.desc
@@ -0,0 +1,120 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "hp" ; name of backend
+:version "1.06" ; version of backend
+:manpage "sane-hp" ; name of manpage (if it exists)
+:url "http://www.kirchgessner.net/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/"
+
+:model "ScanJet Plus" ; name models for above-specified mfg.
+:interface "Propietary"
+:status :complete
+:comment "Driver for HP parallel interface card required"
+
+:model "ScanJet IIc"
+:interface "SCSI"
+:status :complete
+:scsi "HP" "C1750A" "processor"
+
+:model "ScanJet IIp"
+:interface "SCSI"
+:status :complete
+:scsi "HP" "C1790A" "processor"
+
+:model "ScanJet IIcx"
+:interface "SCSI"
+:status :complete
+:scsi "HP" "C2500A" "processor"
+
+:model "ScanJet 3c"
+:interface "SCSI"
+:status :complete
+
+:model "ScanJet 3p"
+:interface "SCSI"
+:status :complete
+
+:model "ScanJet 4c"
+:interface "SCSI"
+:status :complete
+:scsi "HP" "C2520A" "processor"
+
+:model "ScanJet 4p"
+:interface "SCSI"
+:status :complete
+:scsi "HP" "C1130A" "processor"
+
+:model "ScanJet 4100C"
+:interface "USB"
+:usbid "0x03f0" "0x0101"
+:status :complete
+
+:model "ScanJet 5p"
+:interface "SCSI"
+:status :complete
+:scsi "HP" "C5110A" "processor"
+
+:model "ScanJet 5100C"
+:interface "Parport"
+:status :complete
+:comment "Requires ppscsi driver and epst module"
+
+:model "ScanJet 5200C"
+:interface "Parport USB"
+:usbid "0x03f0" "0x0401"
+:status :complete
+:comment "Parallel interface requires ppscsi driver and epst module"
+
+:model "ScanJet 6100C"
+:interface "SCSI"
+:status :complete
+
+:model "ScanJet 6200C"
+:interface "SCSI USB"
+:scsi "HP" "C6270A" "processor"
+:usbid "0x03f0" "0x0201"
+:status :complete
+
+:model "ScanJet 6250C"
+:interface "SCSI USB"
+:usbid "0x03f0" "0x0201"
+:status :complete
+
+:model "ScanJet 6300C"
+:interface "SCSI USB"
+:scsi "HP" "C7670A" "processor"
+:usbid "0x03f0" "0x0601"
+:status :complete
+
+:model "ScanJet 6350C"
+:interface "SCSI USB"
+:usbid "0x03f0" "0x0601"
+:status :complete
+
+:model "ScanJet 6390C"
+:interface "SCSI USB"
+:usbid "0x03f0" "0x0601"
+:status :complete
+
+:model "PhotoSmart PhotoScanner"
+:interface "SCSI"
+:status :complete
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
diff --git a/doc/descriptions/hp3500.desc b/doc/descriptions/hp3500.desc
new file mode 100644
index 0000000..b67c01f
--- /dev/null
+++ b/doc/descriptions/hp3500.desc
@@ -0,0 +1,47 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "hp3500" ; name of backend
+:version "1.1" ; version of backend
+:manpage "sane-hp3500" ; name of manpage (if it exists)
+:url "http://projects.troy.rollo.name/rt-scanners/" ; backend's web page
+:comment "HP3500 series scanners."
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com"
+
+:model "ScanJet 3500C" ; name models for above-specified mfg.
+:interface "USB" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port" or "Propretiary".
+:usbid "0x03f0" "0x2205"
+:status :good
+
+:model "ScanJet 3530C" ; name models for above-specified mfg.
+:interface "USB" ; interface type of the device:
+:usbid "0x03f0" "0x2005"
+:status :good
+
+:model "ScanJet 3570C" ; name models for above-specified mfg.
+:interface "USB" ; interface type of the device:
+:usbid "0x03f0" "0x2005"
+:status :good
+
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+
+
diff --git a/doc/descriptions/hp3900.desc b/doc/descriptions/hp3900.desc
new file mode 100644
index 0000000..f2abaad
--- /dev/null
+++ b/doc/descriptions/hp3900.desc
@@ -0,0 +1,82 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "hp3900"
+:version "0.12"
+:manpage "sane-hp3900"
+:url "http://sourceforge.net/projects/hp3900-series/"
+:comment "Still Beta"
+:devicetype :scanner
+
+; -----------------------------------------------------
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com"
+
+:model "ScanJet 3800"
+:interface "USB"
+:status :basic
+:usbid "0x03f0" "0x2605"
+:comment "Works with resolutions equal and less than 600dpi"
+
+:model "ScanJet 3970c"
+:interface "USB"
+:status :good
+:usbid "0x03f0" "0x2305"
+
+:model "ScanJet 4070 Photosmart"
+:interface "USB"
+:status :good
+:usbid "0x03f0" "0x2405"
+
+:model "ScanJet 4370"
+:interface "USB"
+:usbid "0x03f0" "0x4105"
+:status :basic
+:comment "Works with resolutions lower than 1200dpi"
+
+:model "ScanJet G2710"
+:interface "USB"
+:usbid "0x03f0" "0x2805"
+:status :basic
+:comment "Similar to hp scanjet 3800"
+
+:model "ScanJet G3010"
+:interface "USB"
+:usbid "0x03f0" "0x4205"
+:status :basic
+:comment "Similar to hp scanjet 4370"
+
+:model "ScanJet G3110"
+:interface "USB"
+:usbid "0x03f0" "0x4305"
+:status :basic
+:comment "Similar to hp scanjet 4370"
+
+; -----------------------------------------------------
+:mfg "UMAX"
+:url "http://www.umax.com"
+
+:model "Astra 4900"
+:interface "USB"
+:usbid "0x06dc" "0x0020"
+:status :minimal
+:comment "developing yet"
+
+; -----------------------------------------------------
+:mfg "BenQ"
+:url "http://www.benq.com/"
+
+:model "5550"
+:interface "USB"
+:usbid "0x04a5" "0x2211"
+:status :minimal
+:comment "developing yet"
+
diff --git a/doc/descriptions/hp4200.desc b/doc/descriptions/hp4200.desc
new file mode 100644
index 0000000..69f7e1d
--- /dev/null
+++ b/doc/descriptions/hp4200.desc
@@ -0,0 +1,43 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+
+
+:backend "hp4200" ; name of backend
+:version "1.0-2" ; version of backend
+:manpage "sane-hp4200" ; name of manpage (if it exists)
+:url "http://hp4200-backend.sourceforge.net" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/"
+
+:model "ScanJet 4200C" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x03f0" "0x0105"
+:status :basic
+:comment "8bpp color, 75/150/300/600 dpi only"
+
+:model "ScanJet 4200Cxi" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x03f0" "0x0105"
+:status :basic
+:comment "8bpp color, 75/150/300/600 dpi only"
+
+:model "ScanJet 4200Cse" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x03f0" "0x0105"
+:status :basic
+:comment "8bpp color, 75/150/300/600 dpi only"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/hp5400.desc b/doc/descriptions/hp5400.desc
new file mode 100644
index 0000000..c4cb528
--- /dev/null
+++ b/doc/descriptions/hp5400.desc
@@ -0,0 +1,47 @@
+; Copied from hp3300 testtools - Martijn van Oosterhout 22/02/2003
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "hp5400" ; name of backend
+:version "1.0-2" ; version of backend
+:manpage "sane-hp5400" ; name of manpage (if it exists)
+:url "http://sourceforge.net/projects/hp5400backend" ; backend's web page
+:comment "HP5400 and HP5470 scanners. Prototype backend available"
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com"
+
+:model "ScanJet 5400c" ; name models for above-specified mfg.
+:interface "USB" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port" or "Propretiary".
+:usbid "0x03f0" "0x1005""
+:status :basic
+
+:model "ScanJet 5470c" ; name models for above-specified mfg.
+:interface "USB" ; interface type of the device:
+:usbid "0x03f0" "0x1105"
+:status :basic
+
+:model "ScanJet 5490c" ; name models for above-specified mfg.
+:interface "USB" ; interface type of the device:
+:status :basic
+
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+
+
diff --git a/doc/descriptions/hp5590.desc b/doc/descriptions/hp5590.desc
new file mode 100644
index 0000000..6bb9ff5
--- /dev/null
+++ b/doc/descriptions/hp5590.desc
@@ -0,0 +1,55 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+
+:backend "hp5590"
+:version "1.0.5"
+:manpage "sane-hp5590"
+
+:devicetype :scanner
+
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com"
+
+:model "ScanJet 4500C"
+:interface "USB"
+:usbid "0x03f0" "0x1205"
+:status :complete
+:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives"
+
+:model "ScanJet 4570C"
+:interface "USB"
+:usbid "0x03f0" "0x1305"
+:status :complete
+:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/TMA slides/TMA negatives"
+
+:model "ScanJet 5500C"
+:interface "USB"
+:usbid "0x03f0" "0x1305"
+:status :untested
+:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/TMA slides/TMA negatives"
+
+:model "ScanJet 5550C"
+:interface "USB"
+:usbid "0x03f0" "0x1205"
+:status :complete
+:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives"
+
+:model "ScanJet 5590"
+:interface "USB"
+:usbid "0x03f0" "0x1705"
+:status :complete
+:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives"
+
+:model "ScanJet 7650"
+:interface "USB"
+:usbid "0x03f0" "0x1805"
+:status :complete
+:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives"
+
diff --git a/doc/descriptions/hpljm1005.desc b/doc/descriptions/hpljm1005.desc
new file mode 100644
index 0000000..12876e4
--- /dev/null
+++ b/doc/descriptions/hpljm1005.desc
@@ -0,0 +1,36 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+
+:backend "hpljm1005"
+:version "0"
+:manpage "sane-hpljm1005"
+
+:devicetype :scanner
+
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com"
+
+:model "LaserJet M1005 MFP"
+:interface "USB"
+:usbid "0x03f0" "0x3b17"
+:status :good
+:comment "grayscale/color (24 bit), 75/100/150/200/300/600/1200 DPI"
+
+:model "LaserJet M1120 MFP"
+:interface "USB"
+:usbid "0x03f0" "0x5617"
+:status :good
+:comment "grayscale/color (24 bit), 75/100/150/200/300/600/1200 DPI"
+
+:model "LaserJet M1120n MFP"
+:interface "USB"
+:usbid "0x03f0" "0x5717"
+:status :good
+:comment "grayscale/color (24 bit), 75/100/150/200/300/600/1200 DPI"
diff --git a/doc/descriptions/hpsj5s.desc b/doc/descriptions/hpsj5s.desc
new file mode 100644
index 0000000..87057e6
--- /dev/null
+++ b/doc/descriptions/hpsj5s.desc
@@ -0,0 +1,32 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "hpsj5s" ; name of backend
+:version "0.03" ; version of backend
+;:status :alpha ; :alpha, :beta, :stable, :new
+:manpage "sane-hpsj5s" ; name of manpage (if it exists)
+:url "http://hpsj5s.sourceforge.net/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/"
+
+:model "ScanJet 5s" ; name models for above-specified mfg.
+:interface "Parport (EPP)"
+:comment "Requires libieee1284 library. Only gray mode."
+:status :minimal
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
diff --git a/doc/descriptions/hs2p.desc b/doc/descriptions/hs2p.desc
new file mode 100644
index 0000000..d02df83
--- /dev/null
+++ b/doc/descriptions/hs2p.desc
@@ -0,0 +1,41 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "hs2p" ; name of backend
+:url "http://www.acjlaw.net:8080/~jeremy/Ricoh/"
+:version "1.00" ; version of backend
+;
+:manpage "sane-hs2p" ; name of manpage (if it exists)
+:comment "This backend has been tested with the IS450DE (Duplex/Endorser). All major functions necessary for scanning are supported. This backend should work with all Ricoh scanners in the IS450 family as well as the IS420 series, but the IS420 has not yet been tested. Features provided by the optional Image Processing Unit (IPU) are not yet integrated into the backend, as my scanner lacks the IPU."
+
+:devicetype :scanner
+
+:mfg "Ricoh" ; name a manufacturer
+:url "http://www.ricoh.com/"
+
+:model "IS450" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :complete
+:comment "All major scanning-related features are supported (except for IPU). Certain non-scanning features, such as those related to scanner maintenance, are not supported. Such features would be better implemented in a separate stand-alone tool. For instance, if you replace the ADF Unit, you must recalibrate the scanner optics using a Ricoh Test Sheet and reset the E^2PROM registers. Reports are welcome."
+
+:model "IS-410"
+:interface "SCSI"
+:status :untested
+:comment "Untested, please report!"
+
+:model "IS-420"
+:interface "SCSI"
+:status :untested
+:comment "Untested, please report!"
+
+:model "IS-430"
+:interface "SCSI"
+:status :untested
+:comment "Untested, please report!"
diff --git a/doc/descriptions/ibm.desc b/doc/descriptions/ibm.desc
new file mode 100644
index 0000000..d3d5b06
--- /dev/null
+++ b/doc/descriptions/ibm.desc
@@ -0,0 +1,42 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "ibm" ; name of backend
+:url "http://www.meier-geinitz.de/sane/ibm-backend/"
+:version "1.0-4" ; version of backend
+;
+:manpage "sane-ibm" ; name of manpage (if it exists)
+:comment "This backend has had only limited testing. It needs more work especially for the Ricoh scanners. Patches are welcome."
+
+:devicetype :scanner
+
+:mfg "IBM" ; name a manufacturer
+:url "http://www.ibm.com/"
+
+:model "2456" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :basic
+:comment "Was reported to work long time ago. Reports are welcome."
+
+:mfg "Ricoh" ; name a manufacturer
+:model "IS-410"
+:interface "SCSI"
+:status :untested
+:comment "Untested, please report!"
+
+:model "IS-420"
+:interface "SCSI"
+:status :basic
+:comment "Works at least in flatbed mode."
+
+:model "IS-430"
+:interface "SCSI"
+:status :untested
+:comment "Untested, please report!"
diff --git a/doc/descriptions/kodak.desc b/doc/descriptions/kodak.desc
new file mode 100644
index 0000000..7f0108a
--- /dev/null
+++ b/doc/descriptions/kodak.desc
@@ -0,0 +1,190 @@
+:backend "kodak"
+:url "http://www.thebility.com/kodak/"
+:version "7"
+:manpage "sane-kodak"
+:comment "New backend for SANE release 1.0.21, see sane-kodak manpage"
+:devicetype :scanner
+
+:mfg "Kodak"
+:url "http://www.kodak.com/"
+
+;======================================
+; workgroup machines, old
+
+:model "Scanner 1500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+;======================================
+; departmental machines, old
+
+:model "Scanner 2500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 3500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 3510"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 3520"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Color Scanner 3590C"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Color Scanner 4500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+;======================================
+; departmental machines, recent
+
+:model "i150 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i160 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i250 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i260 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i280 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+;======================================
+; production machines, old
+
+:model "Scanner 900"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 923"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 5500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 7500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 7520"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 9500"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "Scanner 9520"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+;======================================
+; production machines, recent
+
+:model "i610 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i620 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i640 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i660 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i730 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i750 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i780 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i810 Scanner"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "i820 Scanner"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "i830 Scanner"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "i840 Scanner"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
+:model "i1840 Scanner"
+:interface "IEEE-1394"
+:status :untested
+:comment "Please test!"
+
+:model "i1860 Scanner"
+:interface "IEEE-1394"
+:status :basic
+:comment "Uncompressed B&W, Gray and Color, some automatic features supported"
+
+:model "s1740"
+:interface "SCSI"
+:status :untested
+:comment "Please test!"
+
diff --git a/doc/descriptions/kodakaio.desc b/doc/descriptions/kodakaio.desc
new file mode 100644
index 0000000..7882513
--- /dev/null
+++ b/doc/descriptions/kodakaio.desc
@@ -0,0 +1,186 @@
+:backend "kodakaio"
+:url "http://sourceforge.net/projects/cupsdriverkodak/"
+:version "2.4.6"
+:manpage "sane-kodakaio"
+:comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10"
+:devicetype :scanner
+:new :no
+
+:mfg "Kodak"
+:url "http://www.kodak.com/"
+
+;======================================
+; ESP series
+
+:model "ESP 2150"
+:interface "USB"
+:usbid "0x040a" "0x4059"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 2170"
+:interface "USB"
+:usbid "0x040a" "0x4066"
+:status :basic
+:comment "Tested with network"
+
+:model "ESP 3200"
+:interface "USB"
+:usbid "0x040a" "0x4043"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 3300"
+:interface "USB"
+:usbid "0x040a" "0x4031"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 4100"
+:interface "USB"
+:usbid "0x040a" "0x4053"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 5000"
+:interface "USB"
+:usbid "0x040a" "0x4028"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 5100"
+:interface "USB"
+:usbid "0x040a" "0x4025"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 5200"
+:interface "USB Ethernet"
+:usbid "0x040a" "0x4041"
+:status :basic
+:comment "USB good, Network good"
+
+:model "ESP 5300"
+:interface "USB"
+:usbid "0x040a" "0x4026"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 5500"
+:interface "USB"
+:usbid "0x040a" "0x4027"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 6100"
+:interface "USB"
+:usbid "0x040a" "0x4054"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 7200"
+:interface "USB"
+:usbid "0x040a" "0x4056"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 9200"
+:interface "USB"
+:usbid "0x040a" "0x4065"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 5"
+:interface "USB"
+:usbid "0x040a" "0x4032"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 7"
+:interface "USB"
+:usbid "0x040a" "0x403e"
+:status :untested
+:comment "Please test!"
+
+:model "ESP 9"
+:interface "USB"
+:usbid "0x040a" "0x403f"
+:status :untested
+:comment "Please test!"
+
+:model "ESP C110"
+:interface "USB"
+:usbid "0x040a" "0x4057"
+:status :untested
+:comment "Please test!"
+
+:model "ESP C115"
+:interface "USB"
+:usbid "0x040a" "0x4058"
+:status :untested
+:comment "Please test!"
+
+:model "ESP C310"
+:interface "USB"
+:usbid "0x040a" "0x405d"
+:status :untested
+:comment "Please test!"
+
+:model "ESP C315"
+:interface "USB"
+:usbid "0x040a" "0x405e"
+:status :untested
+:comment "Please test!"
+
+;======================================
+; Hero series
+
+:model "Hero 3.1"
+:interface "USB"
+:usbid "0x040a" "0x406d"
+:status :untested
+:comment "Please test!"
+
+:model "Hero 4.1"
+:interface "USB"
+:usbid "0x040a" "0x4069"
+:status :untested
+:comment "Please test!"
+
+:model "Hero 5.1"
+:interface "USB"
+:usbid "0x040a" "0x4064"
+:status :untested
+:comment "Please test!"
+
+:model "Hero Office 6.1"
+:interface "USB"
+:usbid "0x040a" "0x4062"
+:status :untested
+:comment "Please test!"
+
+:model "Hero 7.1"
+:interface "USB"
+:usbid "0x040a" "0x4063"
+:status :untested
+:comment "Please test!"
+
+:model "Hero 9.1"
+:interface "USB Ethernet"
+:usbid "0x040a" "0x4067"
+:status :basic
+:comment "USB good, Network good"
+
+;===================================
+
+:mfg "Advent"
+:url "http://www.adventcomputers.co.uk"
+
+:model "AW10"
+:interface "USB"
+:usbid "0x040a" "0x4060"
+:status :untested
+:comment "Please test!"
+
+
+
diff --git a/doc/descriptions/kvs1025.desc b/doc/descriptions/kvs1025.desc
new file mode 100644
index 0000000..898fbc1
--- /dev/null
+++ b/doc/descriptions/kvs1025.desc
@@ -0,0 +1,34 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "kvs1025" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-kvs1025" ; name of manpage (if it exists)
+:comment "New backend for SANE release 1.0.21, see sane-kvs1025 manpage"
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Panasonic" ; name a manufacturer
+:url "http://www.panasonic.com/"
+
+:model "KV-S1020C"
+:interface "USB"
+:usbid "0x04da" "0x1007"
+:status :good
+
+:model "KV-S1025C"
+:interface "USB"
+:usbid "0x04da" "0x1006"
+:status :good
+
+:model "KV-S1045C"
+:interface "USB"
+:usbid "0x04da" "0x1010"
+:status :good
diff --git a/doc/descriptions/kvs20xx.desc b/doc/descriptions/kvs20xx.desc
new file mode 100644
index 0000000..35178e1
--- /dev/null
+++ b/doc/descriptions/kvs20xx.desc
@@ -0,0 +1,48 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "kvs20xx" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-kvs20xx" ; name of manpage (if it exists)
+:comment "New backend for SANE release 1.0.22, see sane-kvs20xx manpage"
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Panasonic" ; name a manufacturer
+:url "http://www.panasonic.com/"
+
+:model "KV-S2025C"
+:interface "SCSI"
+:status :untested
+
+:model "KV-S2026C"
+:interface "USB SCSI"
+:usbid "0x04da" "0x1000"
+:status :untested
+
+:model "KV-S2028C"
+:interface "USB"
+:usbid "0x04da" "0x100a"
+:status :untested
+
+:model "KV-S2045C"
+:interface "SCSI"
+:status :untested
+
+:model "KV-S2046C"
+:interface "USB SCSI"
+:usbid "0x04da" "0x1001"
+:status :untested
+
+:model "KV-S2048C"
+:interface "USB"
+:usbid "0x04da" "0x1009"
+:status :untested
+
diff --git a/doc/descriptions/kvs40xx.desc b/doc/descriptions/kvs40xx.desc
new file mode 100644
index 0000000..2b16930
--- /dev/null
+++ b/doc/descriptions/kvs40xx.desc
@@ -0,0 +1,36 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "kvs40xx" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-kvs40xx" ; name of manpage (if it exists)
+:comment "New backend for SANE release 1.0.23, see sane-kvs40xx manpage"
+:devicetype :scanner ; start of a list of devices....
+:new :no
+
+:mfg "Panasonic" ; name a manufacturer
+:url "http://www.panasonic.com/"
+
+:model "KV-S4065C"
+:interface "USB"
+:usbid "0x04da" "0x100d"
+:status :untested
+
+:model "KV-S4085C"
+:interface "USB"
+:usbid "0x04da" "0x100c"
+:status :untested
+
+:model "KV-S7075C"
+:interface "USB"
+:usbid "0x04da" "0x100e"
+:status :untested
+
diff --git a/doc/descriptions/leo.desc b/doc/descriptions/leo.desc
new file mode 100644
index 0000000..279300c
--- /dev/null
+++ b/doc/descriptions/leo.desc
@@ -0,0 +1,36 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "leo" ; name of backend
+:version "1.0-10" ; version of backend
+:manpage "sane-leo" ; name of manpage (if it exists)
+:url "http://www.zago.net/sane/#leo" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "LEO"
+:model "LEOScan S3"
+:interface "SCSI"
+:comment "FCC ID LUZFS1130"
+:status :good
+
+:mfg "Across Technologies"
+:model "FS-1130"
+:interface "SCSI"
+:comment "FCC ID LUZFS1130"
+:status :good
+
+:mfg "Genius"
+:model "FS-1130 Colorpage Scanner"
+:interface "SCSI"
+:status :good
+
+
diff --git a/doc/descriptions/lexmark.desc b/doc/descriptions/lexmark.desc
new file mode 100644
index 0000000..2cc4de1
--- /dev/null
+++ b/doc/descriptions/lexmark.desc
@@ -0,0 +1,89 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+
+
+:backend "lexmark" ; name of backend
+:version "1.0-0" ; version of backend (or "unmaintained")
+:manpage "sane-lexmark" ; name of manpage (if it exists)
+:url "http://stef.dev.free.fr/sane/lexmark"
+ ; backend's web page
+
+:comment "This backend supports lexmark x1100 series scanners."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Lexmark" ; name a manufacturer
+:url "http://www.lexmark.com/" ; manufacturer's URL
+
+:model "X1110"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :untested
+
+:model "X1130"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :good
+:comment "Supports 75, 150, 300, 600 dpi"
+
+:model "X1140"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :untested
+
+:model "X1150"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :good
+:comment "Supports 75, 150, 300, 600 dpi"
+
+:model "X1170"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :good
+:comment "Supports 75, 150, 300, 600 dpi"
+
+:model "X1180"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :good
+
+:model "X1185"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :good
+:comment "Tested with xscanimage. Supports 75, 150, 300, 600, 1200(600x1200) dpi resolutions. Does grayscale or colour scans in the following sizes: wallet, 3x5, 4x6, 5x7, 8x10, letter."
+
+:model "X1195"
+:interface "USB"
+:usbid "0x043d" "0x007c"
+:status :untested
+
+:model "X74"
+:interface "USB"
+:usbid "0x043d" "0x0060"
+:status :good
+:comment "Supports 75, 150, 300, 600 dpi"
+
+:model "X12xx"
+:interface "USB"
+:usbid "0x043d" "0x007d"
+:status :good
+:comment "USB1.1 is OK, USB2.0 needs testing"
+
+:mfg "Dell" ; name a manufacturer
+:model "A920"
+:interface "USB"
+:usbid "0x413c" "0x5105"
+:status :good
+:comment "Relabelled X11xx model"
diff --git a/doc/descriptions/ma1509.desc b/doc/descriptions/ma1509.desc
new file mode 100644
index 0000000..db78a55
--- /dev/null
+++ b/doc/descriptions/ma1509.desc
@@ -0,0 +1,38 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "ma1509" ; name of backend
+:version "1.0-3" ; version of backend
+:manpage "sane-ma1509" ; name of manpage (if it exists)
+:url "http://www.meier-geinitz.de/sane/ma1509-backend/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Mustek" ; name a manufacturer
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "BearPaw 1200 F"
+:interface "USB"
+:usbid "0x055f" "0x0010"
+:status :good
+:comment "Works upto 600 dpi. No support for TA and ADF yet."
+:mfg "Fujitsu" ; name a manufacturer
+:url "http://www.fujitsu.com/"
+
+:model "fi-4110EOX/2/3"
+:interface "USB"
+:usbid "0x04c5" "0x1040"
+:status :unsupported
+:comment "Uses ma1509 chip, but very different from other scanners supported by the ma1509 backend"
+
diff --git a/doc/descriptions/magicolor.desc b/doc/descriptions/magicolor.desc
new file mode 100644
index 0000000..3a7d9b0
--- /dev/null
+++ b/doc/descriptions/magicolor.desc
@@ -0,0 +1,36 @@
+;
+; SANE Backend specification file for the magicolor backend
+;
+; Copyright (C) 2010-11 Reinhold Kainhofer
+; Released under GPLv2
+;
+
+:backend "magicolor"
+:version "1.0.0"
+:manpage "sane-magicolor"
+:url "http://wiki.kainhofer.com/hardware/magicolor_scan"
+
+:devicetype :scanner
+
+:mfg "KONICA MINOLTA"
+:url "http://www.konicaminolta.com/"
+
+:model "magicolor 1690MF"
+:interface "USB Network"
+:usbid "0x132b" "0x2089"
+:status :good
+:comment "Multi-function color laser printer with fax, scanner and network interface"
+:url "http://www.konicaminolta.eu/business-solutions/products/laser-printers/all-in-one/magicolor-1690mf/key-features.html"
+
+:model "BizHub 162/132"
+:interface "USB Network"
+:usbid "ignore"
+:status :unsupported
+:comment "Uses a similar protocol as the magicolor 1690MF, according to Ilia Sotnikov."
+
+:model "DiMage 1611"
+:interface "USB Network"
+:usbid "ignore"
+:status :unsupported
+:comment "Uses a similar protocol as the magicolor 1690MF, according to Ilia Sotnikov."
+
diff --git a/doc/descriptions/matsushita.desc b/doc/descriptions/matsushita.desc
new file mode 100644
index 0000000..e7822f8
--- /dev/null
+++ b/doc/descriptions/matsushita.desc
@@ -0,0 +1,74 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "matsushita" ; name of backend
+:version "1.0-7" ; version of backend
+:manpage "sane-matsushita" ; name of manpage
+:url "http://www.zago.net/sane" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Panasonic" ; name a manufacturer
+:url "http://www.panasonic.com/"
+
+:model "KV-SS25"
+:interface "SCSI"
+:status :complete
+
+:model "KV-SS25D"
+:interface "SCSI"
+:status :complete
+
+:model "KV-SS50"
+:interface "SCSI"
+:status :untested
+
+:model "KV-SS55"
+:interface "SCSI"
+:status :untested
+
+:model "KV-SS50EX"
+:interface "SCSI"
+:status :untested
+
+:model "KV-SS55EX"
+:interface "SCSI"
+:status :minimal
+:comment "no color, no high resolution, no automatic cropping"
+
+:model "KV-SS850"
+:interface "SCSI"
+:status :untested
+
+:model "KV-SS855"
+:interface "SCSI"
+:status :untested
+
+:model "KV-S2025C"
+:interface "SCSI"
+:status :minimal
+:comment "no color, no high resolution, no automatic cropping"
+
+:model "KV-S2045C"
+:interface "SCSI"
+:status :minimal
+:comment "no color, no high resolution, no automatic cropping"
+
+:model "KV-S2065L"
+:interface "SCSI"
+:status :minimal
+:comment "no color, no high resolution, no automatic cropping"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+
+
diff --git a/doc/descriptions/microtek.desc b/doc/descriptions/microtek.desc
new file mode 100644
index 0000000..214bb9a
--- /dev/null
+++ b/doc/descriptions/microtek.desc
@@ -0,0 +1,96 @@
+:backend "microtek"
+:version "0.13.1"
+:manpage "sane-microtek"
+:url "http://www.mir.com/mtek/"
+
+:devicetype :scanner
+
+:mfg "Microtek"
+:url "http://www.microtek.com/"
+ :model "Scanmaker E6"
+ :interface "SCSI"
+ :status :good
+ :model "Scanmaker E3"
+ :interface "SCSI"
+ :status :good
+ :model "Scanmaker E2"
+ :interface "SCSI"
+ :comment "3-pass"
+ :status :good
+ :model "Scanmaker 35t+"
+ :interface "SCSI"
+ :comment "slide-scanner"
+ :status :good
+ :model "Scanmaker 45t"
+ :interface "SCSI"
+ :comment "slide-scanner"
+ :status :good
+ :model "Scanmaker 35"
+ :interface "SCSI"
+ :comment "slide-scanner"
+ :status :good
+ :model "Scanmaker III"
+ :interface "SCSI"
+ :status :good
+ :model "Scanmaker IISP"
+ :interface "SCSI"
+ :status :good
+ :model "Scanmaker IIHR"
+ :interface "SCSI"
+ :comment "3-pass"
+ :status :good
+ :model "Scanmaker IIG"
+ :interface "SCSI"
+ :comment "gray only"
+ :status :good
+ :model "Scanmaker II"
+ :interface "SCSI"
+ :comment "3-pass"
+ :status :good
+ :model "Scanmaker 600Z(S)"
+ :interface "SCSI"
+ :status :untested
+ :model "Scanmaker 600G(S)"
+ :interface "SCSI"
+ :comment "gray only (see manpage)"
+ :status :basic
+ :model "Color PageWiz"
+ :interface "SCSI (Parport)"
+ :comment "sheet-fed (preliminary, see mapage)"
+ :status :basic
+
+:mfg "Agfa"
+:url "http://www.agfa.com/"
+ :model "Arcus II"
+ :interface "SCSI"
+ :comment "Arcus *II*, not Arcus!"
+ :status :good
+ :model "StudioScan"
+ :interface "SCSI"
+ :status :good
+ :model "StudioScan II"
+ :interface "SCSI"
+ :status :good
+ :model "StudioScan IIsi"
+ :interface "SCSI"
+ :status :good
+ :model "Studiostar"
+ :interface "SCSI"
+ :status :minimal
+ :comment "Is detected but scans are very dark"
+ :model "DuoScan"
+ :interface "SCSI"
+ :status :basic
+
+:mfg "Vobis"
+:url "http://www.vobis.de/"
+ :model "Highscreen Realscan"
+ :interface "SCSI"
+ :status :good
+
+:mfg "Genius"
+:url "http://www.genius-kye.com/"
+ :model "Colorpage-SP2"
+ :interface "SCSI"
+ :comment "Same as Microtek Scanmaker E3"
+ :status :good
diff --git a/doc/descriptions/microtek2.desc b/doc/descriptions/microtek2.desc
new file mode 100644
index 0000000..ae2b78d
--- /dev/null
+++ b/doc/descriptions/microtek2.desc
@@ -0,0 +1,167 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "microtek2" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-microtek2" ; name of manpage (if it exists)
+:url "http://karstenfestag.gmxhome.de/linux.html"
+
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Microtek" ; name a manufacturer
+:url "http://www.microtek.com/"
+
+:model "ScanMaker E3plus"
+:interface "Parport"
+:status :complete
+
+:model "ScanMaker E3plus" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :complete
+
+:model "ScanMaker X6"
+:interface "SCSI"
+:status :complete
+
+:model "ScanMaker X6EL"
+:interface "SCSI"
+:status :basic
+
+:model "ScanMaker X6USB"
+:interface "USB"
+:usbid "0x05da" "0x0099"
+:status :good
+
+:model "ScanMaker V300"
+:interface "SCSI"
+:status :good
+
+:model "ScanMaker V300"
+:interface "Parport"
+:status :good
+
+:model "ScanMaker V310"
+:interface "SCSI"
+:status :basic
+
+:model "ScanMaker V310"
+:interface "Parport"
+:status :basic
+
+:model "ScanMaker V600"
+:interface "SCSI"
+:status :basic
+
+:model "ScanMaker V600"
+:interface "Parport"
+:status :basic
+
+:model "ScanMaker 330"
+:interface "SCSI"
+:status :basic
+
+:model "ScanMaker 630"
+:interface "SCSI"
+:status :basic
+
+:model "ScanMaker 636"
+:interface "SCSI"
+:status :complete
+
+:model "ScanMaker 6400XL"
+:interface "SCSI"
+:status :complete
+
+:model "ScanMaker 9600XL"
+:interface "SCSI"
+:comment "only flatbed mode ?"
+:status :good
+
+:model "ScanMaker 9800XL"
+:url "/unsupported/microtek-scanmaker-9800.html"
+:interface "IEEE-1394"
+:status :minimal
+:comment "IEEE-1394 seems to work. See link. More reports welcome."
+
+:model "Phantom 330CX"
+:interface "Parport"
+:status :complete
+
+:model "SlimScan C3"
+:interface "Parport"
+:status :complete
+
+:model "Phantom 636"
+:interface "SCSI"
+:status :complete
+
+:model "Phantom 636CX"
+:interface "Parport"
+:status :complete
+
+:model "SlimScan C6"
+:interface "USB"
+:usbid "0x05da" "0x009a"
+:status :complete
+
+:model "ScanMaker V6UPL"
+:interface "USB"
+:usbid "0x05da" "0x00b6"
+:status :basic
+:comment "Sometimes scan speed goes to fast and results look badly smudged."
+
+:model "ScanMaker V6USL"
+:interface "SCSI"
+:status :complete
+
+:model "ScanMaker V6USL"
+:interface "USB"
+:usbid "0x05da" "0x00a3"
+:status :complete
+
+:model "ScanMaker V6USL"
+:interface "USB"
+:usbid "0x05da" "0x80a3"
+:status :complete
+
+:model "ScanMaker X12USL"
+:interface "SCSI"
+:comment "only Flatbed mode ?"
+:status :good
+
+:mfg "Vobis"
+:url "http://www.vobis.de/"
+
+:model "HighScan" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "only E3plus based models"
+:status :complete
+
+:mfg "Scanport"
+:url "http://www.scanport.com/"
+:model "SQ300"
+:interface "Parport?"
+:status :basic
+
+:model "SQ2030"
+:interface "Parport"
+:status :basic
+
+:model "SQ4836"
+:interface "SCSI"
+:status :basic
+
+:mfg "Genius"
+:url "http://www.geniusmouse.co.uk/"
+:model "ColorPage-EP"
+:interface "Parport"
+:status :good
+
diff --git a/doc/descriptions/mustek.desc b/doc/descriptions/mustek.desc
new file mode 100644
index 0000000..cefea83
--- /dev/null
+++ b/doc/descriptions/mustek.desc
@@ -0,0 +1,174 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "mustek" ; name of backend
+:version "1.0-138" ; version of backend
+:manpage "sane-mustek" ; name of manpage (if it exists)
+:url "http://www.meier-geinitz.de/sane/mustek-backend/"
+:comment "Most Mustek SCSI scanners are supported by this backend. For USB scanners, look at the mustek_usb backend."
+
+:devicetype :scanner
+
+:mfg "Mustek" ; name a manufacturer
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "Paragon MFS-6000CX"
+:interface "SCSI"
+:comment "3-pass"
+:status :good
+
+:model "Paragon MFS-12000CX"
+:interface "SCSI"
+:comment "3-pass"
+:status :good
+
+:model "Paragon MFC-600S"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon 600 II CD"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon 600 II ED"
+:interface "Parport"
+:status :untested
+:comment "Completely untested. If it's the same as the 600 II EP, it may work. Please contact me if you own such a device."
+
+:model "Paragon 600 II EP"
+:interface "Parport"
+:status :minimal
+:comment "Works, however only low resolutions and quality in color mode is bad."
+
+:model "ScanMagic 600 II SP"
+:interface "SCSI"
+:status :complete
+
+:model "TwainScan II SP"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon MFC-800S"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon 800 II SP"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon MFS-6000SP"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon MFS-8000SP"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon MFS-1200SP"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon MFS-12000SP"
+:interface "SCSI"
+:status :complete
+
+:model "ScanExpress 6000SP"
+:interface "SCSI"
+:status :complete
+
+:model "ScanExpress 12000SP"
+:interface "SCSI"
+:status :complete
+
+:model "ScanExpress 1200 FS"
+:interface "SCSI"
+:status :untested
+:comment "One report that it crashes the computer. SCSI driver issue? Please contact me if you own such a device."
+
+:model "ScanExpress 12000SP Plus"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon 1200 III SP"
+:interface "SCSI"
+:status :complete
+
+:model "Paragon 1200 LS"
+:interface "SCSI"
+:status :complete
+
+:model "ScanMagic 9636S"
+:interface "SCSI"
+:status :complete
+
+:model "ScanMagic 9636S Plus"
+:interface "SCSI"
+:status :complete
+
+:model "ScanExpress A3 SP"
+:interface "SCSI"
+:comment "Please test!"
+:status :basic
+
+:model "Paragon 1200 SP Pro"
+:interface "SCSI"
+:status :good
+
+:model "Paragon 1200 A3 Pro"
+:interface "SCSI"
+:status :complete
+:comment "ADF and TA untested. Please contact me if you own such equipment."
+
+:model "Paragon 600 II N"
+:interface "Proprietary"
+:status :basic
+:comment "Resolutions above 300 dpi may cause trouble."
+
+:mfg "Trust" ; name a manufacturer
+:url "http://www.trust-site.com"
+:comment "Carefully check the model names. Trust uses similar names for completely different hardware."
+
+:model "Imagery 1200"
+:interface "SCSI"
+:status :good
+:comment "3-pass, Mustek Paragon MFS-6000CX compatible"
+
+:model "Imagery 1200 SP"
+:interface "SCSI"
+:status :complete
+:comment "Mustek Paragon MFS-6000SP compatible"
+
+:model "Imagery 4800 SP"
+:interface "SCSI"
+:status :complete
+:comment "Mustek Paragon 600 II CD compatible"
+
+:model "SCSI Connect 19200"
+:interface "SCSI"
+:status :complete
+:comment "Mustek ScanExpress 12000SP compatible"
+
+:model "SCSI excellence series 19200"
+:interface "SCSI"
+:status :complete
+:comment "Mustek ScanExpress 12000SP compatible"
+
+
+:mfg "Primax" ; name a manufacturer
+:url "http://www.primax.nl/"
+:model "Compact 4800 SCSI"
+:interface "SCSI"
+:status :complete
+:comment "Mustek 600 II CD compatible"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/mustek_pp.desc b/doc/descriptions/mustek_pp.desc
new file mode 100644
index 0000000..4a32988
--- /dev/null
+++ b/doc/descriptions/mustek_pp.desc
@@ -0,0 +1,163 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "mustek_pp" ; name of backend
+:version "13" ; version of backend
+:manpage "sane-mustek_pp" ; name of manpage (if it exists)
+ ; backend's web page
+:url "http://penguin-breeder.org/sane/mustek_pp/"
+:comment "Supports CIS and CCD type parallel port scanners from Mustek."
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Mustek" ; name a manufacturer
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "ScanExpress 6000 P"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:model "ScanExpress 600 SEP"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:model "ScanMagic 4800 P"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:model "600 III EP Plus"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:model "96 CP"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+:model "ScanExpress 600 CP"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+:model "ScanMagic 600 CP"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+:model "ScanExpress 1200 CP"
+:interface "Parport (EPP)"
+:status :good
+:comment "600x1200 dpi CIS scanner"
+
+:model "ScanExpress 1200 CP+"
+:interface "Parport (EPP)"
+:status :good
+:comment "600x1200 dpi CIS scanner"
+
+:mfg "Medion/Lifetec/Tevion/Cytron"
+:url "http://www.medion.de/"
+:comment "Those scanners are also known as \"Aldi Scanner\" or \"Tchibo Scanners\""
+
+:model "MD 9848"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:model "MD 9806"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:model "MD/LT 935x"
+:interface "Parport (EPP)"
+:status :good
+:comment "600x1200 dpi CIS scanner"
+
+:model "MD/LT 985x"
+:interface "Parport (EPP)"
+:status :good
+:comment "600x1200 dpi CIS scanner"
+
+:model "MD/LT 9890"
+:interface "Parport (EPP)"
+:status :good
+:comment "600x1200 dpi CIS scanner"
+
+:mfg "Targa"
+
+:model "Funline TS12 EP"
+:interface "Parport (EPP)"
+:status :good
+:comment "600x1200 dpi CIS scanner"
+
+:model "Funline TS6 EP"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+:mfg "Trust"
+:url "http://www.trust-site.com/home/"
+
+:model "Easy Connect 9600+"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+:model "Easy Connect 19200+"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+:mfg "Viviscan"
+
+:model "Compact II"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:mfg "Cybercom"
+
+:model "9352"
+:interface "Parport (EPP)"
+:status :good
+:comment "CIS scanner"
+
+:mfg "Gallery"
+
+:model "4800"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:mfg "Network"
+
+:model "Easy Plus 30 Bit"
+:interface "Parport (EPP)"
+:status :good
+:comment "300 dpi CCD scanner"
+
+:mfg "Micromaxx"
+
+:model "MM-9851"
+:interface "Parport (EPP)"
+:status :good
+:comment "300x600 dpi CIS scanner"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/mustek_usb.desc b/doc/descriptions/mustek_usb.desc
new file mode 100644
index 0000000..5cee3d2
--- /dev/null
+++ b/doc/descriptions/mustek_usb.desc
@@ -0,0 +1,41 @@
+:backend "mustek_usb"
+:version "1.0-18"
+:manpage "sane-mustek_usb"
+:url "http://www.meier-geinitz.de/sane/mustek_usb-backend/"
+:comment "Only the USB scanners mentioned below are supported. For BearPaws, look at the Plustek, MA-1509, and gt68xx backends."
+:devicetype :scanner
+
+:mfg "Mustek"
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "ScanExpress 600 CU"
+:interface "USB"
+:usbid "0x055f" "0x0002"
+:status :complete
+
+:model "ScanExpress 1200 CU"
+:interface "USB"
+:usbid "0x055f" "0x0001"
+:status :complete
+
+:model "ScanExpress 1200 CU Plus"
+:interface "USB"
+:usbid "0x055f" "0x0008"
+:status :complete
+
+:model "ScanExpress 1200 UB"
+:interface "USB"
+:usbid "0x055f" "0x0006"
+:status :complete
+:comment "For the UB Plus, see gt68xx backend"
+
+:mfg "Trust"
+:url "http://www.trust-site.com"
+
+:model "Compact Scan USB 19200"
+:interface "USB"
+:usbid "0x055f" "0x0006"
+:status :complete
+:comment "Mustek 1200 UB compatible"
diff --git a/doc/descriptions/mustek_usb2.desc b/doc/descriptions/mustek_usb2.desc
new file mode 100755
index 0000000..011cef9
--- /dev/null
+++ b/doc/descriptions/mustek_usb2.desc
@@ -0,0 +1,16 @@
+:backend "mustek_usb2"
+:version "1.0-10"
+:manpage "sane-mustek_usb2"
+:url "http://www.meier-geinitz.de/sane/mustek_usb2-backend/"
+:comment "Only BearPaw 2448TA Pro is supported at the moment"
+:devicetype :scanner
+
+:mfg "Mustek"
+:url "http://www.mustek.com/"
+:url "http://www.mustek.com.tw/"
+:url "http://www.mustek.de/"
+
+:model "BearPaw 2448TA Pro"
+:interface "USB"
+:usbid "0x055f" "0x0409"
+:status :good
diff --git a/doc/descriptions/nec.desc b/doc/descriptions/nec.desc
new file mode 100644
index 0000000..e8ce961
--- /dev/null
+++ b/doc/descriptions/nec.desc
@@ -0,0 +1,14 @@
+:backend "nec" ; name of backend
+:version "0.12" ; version of backend
+:url "http://www5a.biglobe.ne.jp/~saetaka/"
+ ; backend's homepage
+:manpage "sane-nec"
+:devicetype :scanner
+
+:mfg "NEC" ; name a manufacturer
+:url "http://www.nevt.co.jp/"
+
+:model "PC-IN500/4C" ; name models for above-specified mfg.
+:interface "SCSI"
+:comment "PC-IN500/4C was sold only in JAPAN"
+:status :good
diff --git a/doc/descriptions/net.desc b/doc/descriptions/net.desc
new file mode 100644
index 0000000..1807c49
--- /dev/null
+++ b/doc/descriptions/net.desc
@@ -0,0 +1,8 @@
+:backend "net" ; name of backend
+:version "1.0.14"
+:manpage "sane-net"
+:url "http://www.penguin-breeder.org/?page=sane-net"
+
+:devicetype :meta
+:desc "Network access to saned servers"
+:comment "Can be used to access any scanner supported by SANE over the net. Supports IPv4 and IPv6."
diff --git a/doc/descriptions/niash.desc b/doc/descriptions/niash.desc
new file mode 100644
index 0000000..960468c
--- /dev/null
+++ b/doc/descriptions/niash.desc
@@ -0,0 +1,63 @@
+; $Id$
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "niash"
+:version "0.3"
+:manpage "sane-niash"
+:url "http://sourceforge.net/projects/hp3300backend"
+
+:devicetype :scanner
+
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com"
+
+:model "ScanJet 3300c"
+:interface "USB"
+:usbid "0x03f0" "0x0205"
+:status :complete
+
+:model "ScanJet 3400c"
+:interface "USB"
+:usbid "0x03f0" "0x0405"
+:comment "If you use Linux 2.6, version 2.6.8 or newer is necessary."
+:status :complete
+
+:model "ScanJet 4300c"
+:interface "USB"
+:usbid "0x03f0" "0x0305"
+:comment "If you use Linux 2.6, version 2.6.8 or newer is necessary."
+:status :complete
+
+:model "ScanJet 4300c/Silitek"
+:interface "USB"
+:usbid "0x047b" "0x1002"
+:comment "If you use Linux 2.6, version 2.6.8 or newer is necessary."
+:status :complete
+
+:mfg "Agfa"
+:url "http://www.agfa.com"
+
+:model "Snapscan Touch"
+:interface "USB"
+:usbid "0x06bd" "0x0100"
+:status :complete
+
+:mfg "Trust"
+:url "http://www.trust.com"
+
+:model "Office Scan USB 19200"
+:interface "USB"
+:usbid "0x047b" "0x1000"
+:status :complete
+
+
+
+
diff --git a/doc/descriptions/p5.desc b/doc/descriptions/p5.desc
new file mode 100644
index 0000000..70adf16
--- /dev/null
+++ b/doc/descriptions/p5.desc
@@ -0,0 +1,31 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "p5" ; name of backend
+:version "1" ; version of backend
+:manpage "sane-p5" ; name of manpage (if it exists)
+:comment "New backend for SANE release 1.0.21, see sane-p5 manpage"
+:url "http://www.sane-project.org/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "PRIMAX" ; name a manufacturer
+:url "http://www.primax.com.tw"
+
+:model "PagePartner"
+:interface "Parport (EPP/ECP)"
+:status :basic
+:comment "Sheetfed scanner, work in gray and color, but uncalibrated scans"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/pie.desc b/doc/descriptions/pie.desc
new file mode 100644
index 0000000..45abb8e
--- /dev/null
+++ b/doc/descriptions/pie.desc
@@ -0,0 +1,98 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "pie" ; name of backend
+:version "1.0" ; version of backend
+:manpage "sane-pie" ; name of manpage (if it exists)
+:url "http://www.munton.demon.co.uk/sane" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Devcom"
+:url "http://www.blackwidow.co.uk/"
+
+:model "9636PRO"
+:interface "SCSI"
+:status :good
+
+:model "9636S"
+:interface "SCSI"
+:status :untested
+
+:model "9630S"
+:interface "SCSI"
+:status :untested
+
+:mfg "PIE" ; name a manufacturer
+:url "http://www.scanace.com/"
+
+:model "ScanAce 1236S"
+:interface "SCSI"
+:status :good
+
+:model "ScanAce 1230S"
+:interface "SCSI"
+:status :good
+
+:model "ScanAce II"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce III"
+:interface "SCSI"
+:status :good
+
+:model "ScanAce Plus"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce II Plus"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce III Plus"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce V"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce ScanMedia"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce ScanMedia II"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce 630S"
+:interface "SCSI"
+:status :untested
+
+:model "ScanAce 636S"
+:interface "SCSI"
+:status :untested
+
+:mfg "Adlib"
+
+:model "JetScan630"
+:interface "SCSI"
+:status :good
+
+:model "JetScan636PRO"
+:interface "SCSI"
+:status :untested
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/pint.desc b/doc/descriptions/pint.desc
new file mode 100644
index 0000000..a8858e6
--- /dev/null
+++ b/doc/descriptions/pint.desc
@@ -0,0 +1,10 @@
+:backend "pint" ; name of backend
+:version "unmaintained" ; version of backend
+; :url "" ; backend's homepage
+:manpage "sane-pint"
+
+:devicetype :api
+
+; name models for above-specified mfg.
+:desc "Scanners with the machine-independent PINT interface"
+:comment "Haven't been tested for a long time. Handle with care."
diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc
new file mode 100644
index 0000000..5983b0a
--- /dev/null
+++ b/doc/descriptions/pixma.desc
@@ -0,0 +1,908 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "pixma" ; name of backend
+:version "0.17.4" ; version of backend (or "unmaintained")
+:manpage "sane-pixma" ; name of manpage (if it exists)
+:url "http://home.arcor.de/wittawat/pixma/" ; 0.13.2 backend's web page
+:url "http://mp610.blogspot.com/" ; the pixma backend blog
+;:comment "Devices marked as experimantal are disabled by default. See the manual page for how to enable them."
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Canon" ; name a manufacturer
+:url "http://www.canon.com/"
+
+:model "PIXMA E500"
+:interface "USB"
+:usbid "0x04a9" "0x1758"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA E510"
+:interface "USB"
+:usbid "0x04a9" "0x1761"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA E600"
+:interface "USB"
+:usbid "0x04a9" "0x175a"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA E610"
+:interface "USB"
+:usbid "0x04a9" "0x1767"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG2100 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1751"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MG2200 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1760"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG2400 Series"
+:interface "USB"
+:usbid "0x04a9" "0x176c"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG2500 Series"
+:interface "USB"
+:usbid "0x04a9" "0x176d"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG3100 Series"
+:interface "USB WLAN"
+:usbid "0x04a9" "0x1752"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MG3200 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1762"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG3500 Series"
+:interface "USB"
+:usbid "0x04a9" "0x176e"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG4100 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1753"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG4200 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1763"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MG5100 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1748"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MG5200 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1749"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MG5300 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1754"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)."
+
+:model "PIXMA MG5400 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1764"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG5500 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1771"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG6100 Series"
+:interface "USB"
+:usbid "0x04a9" "0x174a"
+:status :complete
+:comment "All resolutions supported (up to 2400 DPI)"
+
+:model "PIXMA MG6200 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1755"
+:status :complete
+:comment "All resolutions supported (up to 4800 DPI)"
+
+:model "PIXMA MG6300 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1765"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)."
+
+:model "PIXMA MG6400 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1770"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG6500 Series"
+:interface "USB"
+:usbid "0x04a9" "0x176f"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG7100 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1772"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG8100 Series"
+:interface "USB"
+:usbid "0x04a9" "0x174b"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MG8200 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1756"
+:status :complete
+:comment "All resolutions supported (up to 4800DPI)."
+
+:model "PIXMA MP140"
+:interface "USB"
+:usbid "0x04a9" "0x172b"
+:status :complete
+:comment "All resolutions supported (up to 600 DPI)"
+
+:model "PIXMA MP150"
+:interface "USB"
+:usbid "0x04a9" "0x1709"
+:status :good
+
+:model "PIXMA MP160"
+:interface "USB"
+:usbid "0x04a9" "0x1714"
+:status :basic
+
+:model "PIXMA MP170"
+:interface "USB"
+:usbid "0x04a9" "0x170a"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP180"
+:interface "USB"
+:usbid "0x04a9" "0x1715"
+:status :basic
+
+:model "PIXMA MP190"
+:interface "USB"
+:usbid "0x04a9" "0x1734"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "PIXMA MP210"
+:interface "USB"
+:usbid "0x04a9" "0x1721"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "PIXMA MP220"
+:interface "USB"
+:usbid "0x04a9" "0x1722"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP230"
+:interface "USB"
+:usbid "0x04a9" "0x175f"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)."
+
+:model "PIXMA MP240"
+:interface "USB"
+:usbid "0x04a9" "0x1732"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MP250"
+:interface "USB"
+:usbid "0x04a9" "0x173a"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "PIXMA MP260"
+:interface "USB"
+:usbid "0x04a9" "0x1733"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MP270"
+:interface "USB"
+:usbid "0x04a9" "0x173b"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MP280"
+:interface "USB"
+:usbid "0x04a9" "0x1746"
+:status :good
+:comment "All resolutions supported (up to 600DPI)."
+
+:model "PIXMA MP360"
+:interface "USB"
+:usbid "0x04a9" "0x263c"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP370"
+:interface "USB"
+:usbid "0x04a9" "0x263d"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP375R"
+:interface "USB"
+:usbid "0x04a9" "0x263f"
+:status :untested
+:comment "Same protocol as Pixma MP360/370/390? Testers needed!"
+
+:model "PIXMA MP390"
+:interface "USB"
+:usbid "0x04a9" "0x263e"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP450"
+:interface "USB"
+:usbid "0x04a9" "0x170b"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP460"
+:interface "USB"
+:usbid "0x04a9" "0x1716"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP470"
+:interface "USB"
+:usbid "0x04a9" "0x1723"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)."
+
+:model "PIXMA MP480"
+:interface "USB"
+:usbid "0x04a9" "0x1731"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP490"
+:interface "USB"
+:usbid "0x04a9" "0x173c"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MP493"
+:interface "USB"
+:usbid "0x04a9" "0x1757"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MP495"
+:interface "USB"
+:usbid "0x04a9" "0x1747"
+:status :untested
+:comment "Same protocol as Pixma MP280? Testers needed!"
+
+:model "PIXMA MP500"
+:interface "USB"
+:usbid "0x04a9" "0x170c"
+:status :good
+
+:model "PIXMA MP510"
+:interface "USB"
+:usbid "0x04a9" "0x1717"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MP520"
+:interface "USB"
+:usbid "0x04a9" "0x1724"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP530"
+:interface "USB"
+:usbid "0x04a9" "0x1712"
+:status :good
+
+:model "PIXMA MP540"
+:interface "USB"
+:usbid "0x04a9" "0x1730"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP550"
+:interface "USB"
+:usbid "0x04a9" "0x173d"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP560"
+:interface "USB"
+:usbid "0x04a9" "0x173e"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP600"
+:interface "USB"
+:usbid "0x04a9" "0x1718"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP600R"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1719"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP610"
+:interface "USB"
+:usbid "0x04a9" "0x1725"
+:status :complete
+:comment "All resolutions supported (up to 4800DPI)"
+
+:model "PIXMA MP620"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x172f"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MP630"
+:interface "USB"
+:usbid "0x04a9" "0x172e"
+:status :complete
+:comment "All resolutions supported (up to 4800DPI)"
+
+:model "PIXMA MP640"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x173f"
+:status :complete
+:comment "All resolutions supported (up to 4800DPI)"
+
+:model "PIXMA MP700"
+:interface "USB"
+:usbid "0x04a9" "0x2630"
+:status :complete
+:comment "All resolutions supported (flatbed color up to 1200DPI, grayscale up to 600DPI)."
+
+:model "PIXMA MP710"
+:interface "USB"
+:usbid "0x04a9" "0x264d"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MP730"
+:interface "USB"
+:usbid "0x04a9" "0x262f"
+:status :good
+:comment "Flatbed color up to 1200DPI, grayscale up to 600DPI. ADF scan to be confirmed."
+
+:model "PIXMA MP740"
+:interface "USB"
+:usbid "0x04a9" "0x264c"
+:status :untested
+:comment "Same protocol as Pixma MP710? Testers needed!"
+
+:model "PIXMA MP750"
+:interface "USB"
+:usbid "0x04a9" "0x1706"
+:status :minimal
+:comment "No grayscale. Canceling scan in ADF mode doesn't eject the paper!"
+
+:model "PIXMA MP760"
+:interface "USB"
+:usbid "0x04a9" "0x1708"
+:status :minimal
+:comment "No grayscale. The scanner sometimes hangs!"
+
+:model "PIXMA MP770"
+:interface "USB"
+:usbid "0x04a9" "0x1708"
+:status :minimal
+:comment "No grayscale. The scanner sometimes hangs!"
+
+:model "PIXMA MP780"
+:interface "USB"
+:usbid "0x04a9" "0x1707"
+:status :minimal
+:comment "No grayscale. The scanner sometimes hangs!"
+
+:model "PIXMA MP790"
+:interface "USB"
+:usbid "0x04a9" "0x1707"
+:status :minimal
+:comment "No grayscale. The scanner sometimes hangs!"
+
+:model "PIXMA MP800"
+:interface "USB"
+:usbid "0x04a9" "0x170d"
+:status :complete
+:comment "All resolutions supported up to 2400DPI. Full TPU support up to 2400DPI."
+
+:model "PIXMA MP800R"
+:interface "USB"
+:usbid "0x04a9" "0x170e"
+:status :complete
+:comment "All resolutions supported up to 2400DPI. Full TPU support up to 2400DPI."
+
+:model "PIXMA MP810"
+:interface "USB"
+:usbid "0x04a9" "0x171a"
+:status :complete
+:comment "All resolutions supported up to 4800DPI. Full TPU support (negative and slides) up to 4800DPI."
+
+:model "PIXMA MP830"
+:interface "USB"
+:usbid "0x04a9" "0x1713"
+:status :complete
+:comment "All resolutions supported up to 2400DPI. Flatbed, ADF simplex and Duplex supported."
+
+:model "PIXMA MP960"
+:interface "USB"
+:usbid "0x04a9" "0x171b"
+:status :complete
+:comment "All resolutions supported up to 4800DPI. Full TPU support (negative and slides) up to 4800DPI."
+
+:model "PIXMA MP970"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1726"
+:status :complete
+:comment "All resolutions supported (up to 4800DPI). Full TPU support (negative and slides) at 24 or 48 bits."
+
+:model "PIXMA MP980"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x172d"
+:status :complete
+:comment "Working fine at all resolutions."
+
+:model "PIXMA MP990"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1740"
+:status :complete
+:comment "Working fine at all resolutions."
+
+:model "PIXMA MX300"
+:interface "USB"
+:usbid "0x04a9" "0x1727"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "PIXMA MX310"
+:interface "USB"
+:usbid "0x04a9" "0x1728"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MX320"
+:interface "USB"
+:usbid "0x04a9" "0x1736"
+:status :untested
+:comment "Same protocol as Pixma Generation 3? Testers needed!"
+
+:model "PIXMA MX330"
+:interface "USB"
+:usbid "0x04a9" "0x1737"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MX340"
+:interface "USB"
+:usbid "0x04a9" "0x1741"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MX350"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1742"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)"
+
+:model "PIXMA MX360"
+:interface "USB"
+:usbid "0x04a9" "0x174d"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI). ADF empty buggy."
+
+:model "PIXMA MX370 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1759"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)."
+
+:model "PIXMA MX390 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1766"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX410"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x174e"
+:status :untested
+:comment "Same protocol as Pixma MX420? Testers needed!"
+
+:model "PIXMA MX420"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x174f"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI). ADF empty buggy."
+
+:model "PIXMA MX430 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x175b"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX450 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1768"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX510 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x175c"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX520 Series"
+:interface "USB"
+:usbid "0x04a9" "0x1769"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX700"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1729"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 2400DPI)"
+
+:model "PIXMA MX710 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x175d"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX720 Series"
+:interface "USB"
+:usbid "0x04a9" "0x176a"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX850"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x172c"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported."
+
+:model "PIXMA MX860"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1735"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported."
+
+:model "PIXMA MX870"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1743"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported, ADF empty buggy."
+
+:model "PIXMA MX880 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1750"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported, ADF empty buggy."
+
+:model "PIXMA MX882"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1750"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported, ADF empty buggy."
+
+:model "PIXMA MX885"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x1750"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported, ADF empty buggy."
+
+:model "PIXMA MX890 Series"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x175e"
+:status :complete
+:comment "All resolutions supported (up to 2400DPI). Flatbed, ADF simplex and Duplex supported, ADF empty buggy."
+
+:model "PIXMA MX920 Series"
+:interface "USB"
+:usbid "0x04a9" "0x176b"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA MX7600"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x171c"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 4800DPI)"
+
+:model "imageCLASS D420"
+:interface "USB"
+:usbid "0x04a9" "0x26ef"
+:status :complete
+:comment "All resolutions supported (up to 600DPI). Flatbed, ADF simplex and Duplex supported."
+
+:model "imageCLASS D480"
+:interface "USB"
+:usbid "0x04a9" "0x26ed"
+:status :complete
+:comment "All resolutions supported (up to 600DPI). Flatbed, ADF simplex and Duplex supported."
+
+:model "i-SENSYS MF3010"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x2759"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF3110"
+:interface "USB"
+:usbid "0x04a9" "0x2660"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)."
+
+:model "imageCLASS MF3240"
+:interface "USB"
+:usbid "0x04a9" "0x2684"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4010"
+:interface "USB"
+:usbid "0x04a9" "0x26b4"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4018"
+:interface "USB"
+:usbid "0x04a9" "0x26b4"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4120"
+:interface "USB"
+:usbid "0x04a9" "0x26a3"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4122"
+:interface "USB"
+:usbid "0x04a9" "0x26a3"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4140"
+:interface "USB"
+:usbid "0x04a9" "0x26a3"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4150"
+:interface "USB"
+:usbid "0x04a9" "0x26a3"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4270"
+:interface "USB"
+:usbid "0x04a9" "0x26b5"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "I-SENSYS MF4320d"
+:interface "USB"
+:usbid "0x04a9" "0x26ee"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "I-SENSYS MF4330d"
+:interface "USB"
+:usbid "0x04a9" "0x26ee"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4350d"
+:interface "USB"
+:usbid "0x04a9" "0x26ee"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4370dn"
+:interface "USB"
+:usbid "0x04a9" "0x26ec"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI). Network not supported"
+
+:model "imageCLASS MF4380dn"
+:interface "USB"
+:usbid "0x04a9" "0x26ec"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI). Network not supported"
+
+:model "imageCLASS MF4410"
+:interface "USB"
+:usbid "0x04a9" "0x2737"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4430"
+:interface "USB"
+:usbid "0x04a9" "0x2737"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI). ADF empty buggy."
+
+:model "i-SENSYS MF4550d"
+:interface "USB"
+:usbid "0x04a9" "0x2736"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)."
+
+:model "imageCLASS MF4770n"
+:interface "USB Ethernet"
+:usbid "0x04a9" "0x2774"
+:status :good
+:comment "Flatbed scan. All resolutions supported (up to 600DPI). ADF buggy."
+
+:model "imageCLASS MF4570dw"
+:interface "USB"
+:usbid "0x04a9" "0x275a"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS MF4660"
+:interface "USB"
+:usbid "0x04a9" "0x26b0"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF4690"
+:interface "USB"
+:usbid "0x04a9" "0x26b0"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF5630"
+:interface "USB"
+:usbid "0x04a9" "0x264e"
+:status :untested
+:comment "Testers needed!"
+
+:model "laserBase MF5650"
+:interface "USB"
+:usbid "0x04a9" "0x264f"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS MF5730"
+:interface "USB"
+:usbid "0x04a9" "0x265d"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)."
+
+:model "imageCLASS MF5750"
+:interface "USB"
+:usbid "0x04a9" "0x265e"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS MF5770"
+:interface "USB"
+:usbid "0x04a9" "0x265f"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)."
+
+:model "i-SENSYS MF5880dn"
+:interface "USB"
+:usbid "0x04a9" "0x26f9"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS MF6500 series"
+:interface "USB"
+:usbid "0x04a9" "0x2686"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageCLASS MF6550"
+:interface "USB"
+:usbid "0x04a9" "0x2686"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "i-SENSYS MF6680dn"
+:interface "USB"
+:usbid "0x04a9" "0x26fa"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS MF8030"
+:interface "USB"
+:usbid "0x04a9" "0x2707"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS MF8170c"
+:interface "USB"
+:usbid "0x04a9" "0x2659"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageRUNNER 1020/1024/1025"
+:interface "USB"
+:usbid "0x04a9" "0x26e6"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "imageRUNNER 1133"
+:interface "USB"
+:usbid "0x04a9" "0x2742"
+:status :untested
+:comment "Testers needed!"
+
+:model "CanoScan 8800F"
+:interface "USB"
+:usbid "0x04a9" "0x1901"
+:status :complete
+:comment "Flatbed scan. TPU for negatives and slides. All resolutions supported (up to 4800DPI)."
+
+:model "CanoScan 9000F"
+:interface "USB"
+:usbid "0x04a9" "0x1908"
+:status :complete
+:comment "Full flatbed support up to 4800DPI (Note: flatbed does not have 9600DPI capability). Full TPU support (negatives, slides and infrared) up to 9600DPI."
+
+:model "CanoScan 9000F Mark II"
+:interface "USB"
+:usbid "0x04a9" "0x190d"
+:status :complete
+:comment "Full flatbed support up to 4800DPI (Note: flatbed does not have 9600DPI capability). Full TPU support (negatives, slides and infrared) up to 9600DPI."
diff --git a/doc/descriptions/plustek.desc b/doc/descriptions/plustek.desc
new file mode 100644
index 0000000..ba69b47
--- /dev/null
+++ b/doc/descriptions/plustek.desc
@@ -0,0 +1,284 @@
+;
+; SANE Backend description file for Plustek backend (USB only)
+;
+
+:backend "plustek"
+:version "0.52"
+:manpage "sane-plustek"
+; backend's web page
+:url "http://www.gjaeger.de/scanner/plustek/"
+
+:devicetype :scanner
+
+;* Plustek **********************************************************************************
+
+:mfg "Plustek"
+:url "http://www.plustek.de/"
+:url "http://www.plustek.com/"
+
+:model "OpticPro U12"
+:interface "USB"
+:usbid "0x07b3" "0x0010"
+:status :complete
+:comment "NOTE: Devices with product ID 0x0001 are not supported!"
+
+:model "OpticPro UT12"
+:interface "USB"
+:usbid "0x07b3" "0x0013"
+:status :complete
+
+:model "OpticPro UT12"
+:interface "USB"
+:usbid "0x07b3" "0x0017"
+:status :complete
+:comment "Note: Devices with product ID 0x0001 are not supported!"
+
+:model "OpticPro UT16"
+:interface "USB"
+:usbid "0x07b3" "0x0017"
+:status :complete
+
+:model "OpticPro U24"
+:interface "USB"
+:usbid "0x07b3" "0x0011"
+:status :complete
+
+:model "OpticPro U24"
+:interface "USB"
+:usbid "0x07b3" "0x0015"
+:status :complete
+
+:model "OpticPro UT24"
+:interface "USB"
+:usbid "0x07b3" "0x0017"
+:status :complete
+
+;* Genius/KYE *******************************************************************************************
+
+:mfg "Genius"
+:url "http://www.geniusnet.com.tw/"
+
+:model "Colorpage HR6 V2"
+:interface "USB"
+:usbid "0x0458" "0x2007"
+:status :complete
+
+:model "Colorpage HR6 V2"
+:interface "USB"
+:usbid "0x0458" "0x2008"
+:status :complete
+
+:model "Colorpage HR7"
+:interface "USB"
+:usbid "0x0458" "0x2013"
+:status :complete
+
+:model "Colorpage HR6A"
+:interface "USB"
+:usbid "0x0458" "0x2009"
+:status :untested
+
+:model "Colorpage HR7LE"
+:interface "USB"
+:usbid "0x0458" "0x2015"
+:status :untested
+
+:model "Colorpage HR6X"
+:interface "USB"
+:usbid "0x0458" "0x2016"
+:status :untested
+
+;* MUSTEK ***********************************************************************************
+
+:mfg "Mustek"
+:url "http://www.mustek.com/"
+
+:model "BearPaw 1200"
+:interface "USB"
+:usbid "0x0400" "0x1000"
+:status :complete
+:comment "both product versions are supported, see backends' man-page"
+
+:model "BearPaw 1200"
+:interface "USB"
+:usbid "0x0400" "0x1001"
+:status :complete
+:comment "both product versions are supported, see backends' man-page"
+
+:model "BearPaw 2400"
+:interface "USB"
+:usbid "0x0400" "0x1001"
+:status :complete
+
+;* Hewlett-Packard **************************************************************************
+
+:mfg "Hewlett-Packard"
+:url "http://www.hp.com/"
+
+:model "ScanJet 2100C"
+:interface "USB"
+:usbid "0x03f0" "0x0505"
+:status :complete
+
+:model "ScanJet 2200C"
+:interface "USB"
+:usbid "0x03f0" "0x0605"
+:status :complete
+
+;* EPSON *******************************************************************************************
+
+:mfg "Epson"
+:url "http://www.epson.com/"
+
+:model "Perfection 1250"
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :complete
+
+:model "Perfection 1250Photo"
+:interface "USB"
+:usbid "0x04b8" "0x010f"
+:status :good
+:comment "TPA scans not perfect"
+
+:model "Perfection 1260"
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :complete
+
+:model "Perfection 1260Photo"
+:interface "USB"
+:usbid "0x04b8" "0x011d"
+:status :good
+:comment "TPA scans not perfect"
+
+;* UMAX *************************************************************************************
+
+:mfg "Umax"
+:url "http://www.umax.com/"
+
+:model "UMAX 3400"
+:interface "USB"
+:usbid "0x1606" "0x0050"
+:status :complete
+:comment "there are some UMAX 3400 outside the U.S. which are not supported, as they use another chipset than the LM983x"
+
+:model "UMAX 3400"
+:interface "USB"
+:usbid "0x1606" "0x0060"
+:status :complete
+:comment "there are some UMAX 3400 outside the U.S. which are not supported, as they use another chipset than the LM983x"
+
+:model "UMAX Astranet ia101"
+:interface "USB"
+:usbid "0x1606" "0x0060"
+:status :complete
+:comment "seems to be a renamed UMAX 3400"
+
+:model "UMAX 3450"
+:interface "USB"
+:usbid "0x1606" "0x0060"
+:status :complete
+
+:model "UMAX 5400"
+:interface "USB"
+:usbid "0x1606" "0x0160"
+:status :complete
+
+;* COMPAQ ******************************************************************************************
+
+:mfg "Compaq"
+:url "http://www.compaq.com/"
+
+:model "S4-100"
+:interface "USB"
+:usbid "0x049f" "0x001a"
+:status :complete
+:comment "Identical to UMAX 3400"
+
+
+;* CANON *******************************************************************************************
+
+:mfg "Canon"
+:url "http://www.canon.com/"
+
+:model "CanoScan N650U/N656U"
+:interface "USB"
+:usbid "0x04a9" "0x2206"
+:status :complete
+
+:model "CanoScan N1220U"
+:interface "USB"
+:usbid "0x04a9" "0x2207"
+:status :complete
+
+:model "CanoScan N670U/N676U/LiDE20"
+:interface "USB"
+:usbid "0x04a9" "0x220d"
+:status :complete
+
+:model "CanoScan N1240U/LiDE30"
+:interface "USB"
+:usbid "0x04a9" "0x220e"
+:status :complete
+
+:model "CanoScan LiDE25"
+:interface "USB"
+:usbid "0x04a9" "0x2220"
+:status :good
+
+:model "CanoScan D660U"
+:interface "USB"
+:usbid "0x04a9" "0x2208"
+:status :good
+:comment "TPA scans not perfect"
+
+;* SYSCAN *******************************************************************************************
+
+:mfg "Syscan"
+:url "http://www.syscaninc.com/"
+
+:model "TravelScan 460/464"
+:interface "USB"
+:usbid "0x0a82" "0x4600"
+:status :complete
+
+:model "TravelScan 662"
+:interface "USB"
+:usbid "0x0a82" "0x6620"
+:status :complete
+
+;* SYSCAN *******************************************************************************************
+
+:mfg "Ambir"
+
+:model "Visigo A4"
+:interface "USB"
+:usbid "0x0a82" "0x4600"
+:status :complete
+:comment "Rebaged Travelscan 464"
+
+;* Portable Peripheral Co., Ltd. ********************************************************************
+
+:mfg "Portable Peripheral Co., Ltd."
+:url "http://www.pandp.com.tw/"
+
+:model "Q-Scan USB001 (A4 portable scanner)"
+:interface "USB"
+:usbid "0x0a53" "0x1000"
+:status :complete
+
+:model "Q-Scan USB201 (A6 portable scanner)"
+:interface "USB"
+:usbid "0x0a53" "0x2000"
+:status :good
+
+;* Visioneer ****************************************************************************************
+
+:mfg "Visioneer"
+:url "http://www.visioneer.com/"
+
+:model "Strobe XP 100"
+:interface "USB"
+:usbid "0x04a7" "0x0427"
+:status :basic
diff --git a/doc/descriptions/plustek_pp.desc b/doc/descriptions/plustek_pp.desc
new file mode 100644
index 0000000..5b1cec5
--- /dev/null
+++ b/doc/descriptions/plustek_pp.desc
@@ -0,0 +1,156 @@
+;
+; SANE Backend description file for Plustek_pp backend
+;
+
+:backend "plustek_pp"
+:version "0.43"
+:manpage "sane-plustek_pp"
+; backend's web page
+:url "http://www.gjaeger.de/scanner/plustek_pp/"
+
+:devicetype :scanner
+
+;* Plustek **********************************************************************************
+
+:mfg "Plustek"
+:url "http://www.plustek.de/"
+:url "http://www.plustek.com/"
+
+;name models for above-specified mfg.
+:model "OpticPro 4800P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 4830P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 600P/6000P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 4831P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 9630P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 9630PL"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "use driver-switch mov=1"
+
+:model "OpticPro 9600P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 1236P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "reported as OpticPro 12000P/96000P"
+
+:model "OpticPro 12000P/96000P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 9636P"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "use driver-switch mov=4"
+
+:model "OpticPro 9636P+/Turbo"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "use driver-switch mov=3"
+
+:model "OpticPro 9636T"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro 12000T"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro AI3"
+:interface "Parport (SPP, EPP)"
+:status :basic
+:comment "use driver-switch mov=5, poor picture quality"
+
+:model "OpticPro P8"
+:interface "Parport"
+:status :untested
+
+:model "OpticPro P12"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+:model "OpticPro PT12"
+:interface "Parport (SPP, EPP)"
+:status :complete
+
+;* Primax ***********************************************************************************
+
+:mfg "Primax" ; name of manufacturer
+:url "http://www.primax.nl/"
+
+;name models for above-specified mfg.
+:model "Colorado 4800"
+:interface "Parport (SPP, EPP)"
+:status :untested
+:comment "same as OpticPro 4800P"
+
+:model "Compact 4800 Direct"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "use driver-switch mov=2"
+
+:model "Compact 4800 Direct-30"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "same as OpticPro 4830P, use driver-switch mov=7"
+
+:model "Compact 9600 Direct-30"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "same as OpticPro 9630P"
+
+;* Genius/KYE *******************************************************************************************
+
+:mfg "Genius"
+:url "http://www.geniusnet.com.tw/"
+
+:model "Colorpage Vivid III V2"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "Reported as PT12"
+
+:model "Colorpage Vivid Pro II Film"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "Reported as OP9636T/12000T"
+
+:model "Colorpage HR6X EPP"
+:interface "Parport (SPP, EPP)"
+:status :good
+:comment "Negative scanning does not work correctly"
+
+;********************************************************************************************
+
+:mfg "Aries"
+
+:model "Scan-It Pro 4800"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "use driver-switch mov=2"
+
+;********************************************************************************************
+
+:mfg "BrightScan"
+
+:model "BrighScan OpticPro"
+:interface "Parport (SPP, EPP)"
+:status :complete
+:comment "Reported as P12"
+
diff --git a/doc/descriptions/pnm.desc b/doc/descriptions/pnm.desc
new file mode 100644
index 0000000..7daeee1
--- /dev/null
+++ b/doc/descriptions/pnm.desc
@@ -0,0 +1,8 @@
+:backend "pnm"
+:version "1.0.8"
+:manpage "sane-pnm"
+:url "mailto:henning@meier-geinitz.de"
+
+:devicetype :api
+:desc "Reads PNM files"
+:comment "Used for debugging frontends. Obsolete, use test backend instead."
diff --git a/doc/descriptions/qcam.desc b/doc/descriptions/qcam.desc
new file mode 100644
index 0000000..bc9f868
--- /dev/null
+++ b/doc/descriptions/qcam.desc
@@ -0,0 +1,19 @@
+:backend "qcam" ; name of backend
+:version "unmaintained" ; version of backend
+; :url "" ; backend's homepage
+:manpage "sane-qcam"
+
+:devicetype :vidcam
+
+:mfg "Connectix" ; name a manufacturer
+;:url "http://www.connectix.com/" ; doesn't exist any longer?
+
+:model "Color QuickCam" ; name models for above-specified mfg.
+:interface "Parport"
+:status :good
+:comment "Requires root privileges."
+
+:model "Greyscale QuickCam" ; name models for above-specified mfg.
+:interface "Parport"
+:status :minimal
+:comment "Requires root privileges. Partly working."
diff --git a/doc/descriptions/ricoh.desc b/doc/descriptions/ricoh.desc
new file mode 100644
index 0000000..b4928f2
--- /dev/null
+++ b/doc/descriptions/ricoh.desc
@@ -0,0 +1,29 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+:backend "ricoh" ; name of backend
+:version "unmaintained" ; version of backend
+;
+:manpage "sane-ricoh" ; name of manpage (if it exists)
+
+:devicetype :scanner
+
+:mfg "Ricoh" ; name a manufacturer
+:url "http://www.ricoh.com/"
+
+:model "Ricoh IS50" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :basic
+;:comment "?"
+
+:model "Ricoh IS60" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :basic
+;:comment "?"
+
diff --git a/doc/descriptions/rts8891.desc b/doc/descriptions/rts8891.desc
new file mode 100644
index 0000000..7e30ea4
--- /dev/null
+++ b/doc/descriptions/rts8891.desc
@@ -0,0 +1,52 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+
+
+:backend "rts8891" ; name of backend
+:version "1.0-0" ; version of backend (or "unmaintained")
+:manpage "sane-rts8891" ; name of manpage (if it exists)
+:url "http://stef.dev.free.fr/sane/rts8891/index.html"
+ ; backend's web page
+
+:comment "This backend supports Realtek RTS8891 ASIC bases scanners."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "UMAX" ; name a manufacturer
+:url "http://www.umax.com.tw/" ; manufacturer's URL
+
+:model "Astra 4400"
+:interface "USB"
+:usbid "0x1606" "0x0070"
+:status :good
+:comment "Supports 75, 150, 300, 600 and 1200 dpi"
+
+:model "Astra 4450"
+:interface "USB"
+:usbid "0x1606" "0x0070"
+:status :untested
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/"
+
+:model "scanjet 4470c"
+:interface "USB"
+:usbid "0x03f0" "0x0805"
+:status :good
+:comment "re-branded Astra 4400"
+
+:model "scanjet 4400c"
+:interface "USB"
+:usbid "0x03f0" "0x0705"
+:status :good
+:comment "exists with 2 different sensors of which only one works"
diff --git a/doc/descriptions/s9036.desc b/doc/descriptions/s9036.desc
new file mode 100644
index 0000000..8aa7977
--- /dev/null
+++ b/doc/descriptions/s9036.desc
@@ -0,0 +1,14 @@
+:backend "s9036" ; name of backend
+:version "unmaintained" ; version of backend
+; :url "" ; backend's homepage
+:manpage "sane-s9036"
+
+:devicetype :scanner
+
+:mfg "Siemens" ; name a manufacturer
+:url "http://www.siemens.com/"
+
+:model "9036 Flatbed scanner" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :basic
+; :comment ""
diff --git a/doc/descriptions/sceptre.desc b/doc/descriptions/sceptre.desc
new file mode 100644
index 0000000..e39559c
--- /dev/null
+++ b/doc/descriptions/sceptre.desc
@@ -0,0 +1,30 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "sceptre"
+:version "1.0-10" ; version of backend
+:manpage "sane-sceptre" ; name of manpage
+:url "http://www.zago.net/sane/" ; backend's web page
+
+:devicetype :scanner
+
+:mfg "Sceptre"
+:url "http://www.sceptre.com/"
+:model "Vividscan S1200"
+:interface "SCSI"
+:status :basic
+
+:mfg "Komodo"
+:url "http://www.komodo.com/"
+:model "S1200"
+:interface "SCSI"
+:status :untested
+:comment "rebadged Sceptre S1200"
diff --git a/doc/descriptions/sharp.desc b/doc/descriptions/sharp.desc
new file mode 100644
index 0000000..85fde0c
--- /dev/null
+++ b/doc/descriptions/sharp.desc
@@ -0,0 +1,40 @@
+:backend "sharp" ; name of backend
+:version "0.32" ; version of backend
+;:status :beta ; :alpha, :beta, :stable, :new
+:url "http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html"
+ ; backend's homepage
+:manpage "sane-sharp"
+:devicetype :scanner
+
+:mfg "Sharp" ; name a manufacturer
+:url "http://sharp-world.com/"
+
+:model "JX-610" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment ""
+
+:model "JX-250" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment ""
+
+:model "JX-320" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment ""
+
+:model "JX-325" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :untested
+:comment ""
+
+:model "JX-330" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment ""
+
+:model "JX-350" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment ""
diff --git a/doc/descriptions/sm3600.desc b/doc/descriptions/sm3600.desc
new file mode 100644
index 0000000..760b4cf
--- /dev/null
+++ b/doc/descriptions/sm3600.desc
@@ -0,0 +1,53 @@
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "sm3600" ; name of backend
+:version "0.1" ; version of backend
+:manpage "sane-sm3600" ; name of manpage (if it exists)
+:url "http://sm3600.sourceforge.net/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+
+:mfg "Microtek"
+:url "http://www.microtek.com/"
+
+:model "ScanMaker 3600"
+:interface "USB"
+:usbid "0x05da" "0x40b3"
+:comment "works"
+:status :basic
+
+:model "ScanMaker 3600"
+:interface "USB"
+:usbid "0x05da" "0x40ca"
+:comment "works"
+:status :basic
+
+:model "ScanMaker 3600"
+:interface "USB"
+:usbid "0x05da" "0x40ff"
+:comment "works"
+:status :basic
+
+:model "ScanMaker 3700"
+:interface "USB"
+:usbid "0x05da" "0x40b8"
+:comment "works"
+:status :basic
+
+:model "ScanMaker 3700"
+:interface "USB"
+:usbid "0x05da" "0x40cb"
+:comment "works"
+:status :basic
+
+:model "ScanMaker 3750"
+:interface "USB"
+:usbid "0x05da" "0x40dd"
+:comment "works (told)"
+:status :basic
diff --git a/doc/descriptions/sm3840.desc b/doc/descriptions/sm3840.desc
new file mode 100644
index 0000000..6d60ace
--- /dev/null
+++ b/doc/descriptions/sm3840.desc
@@ -0,0 +1,56 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "sm3840" ; name of backend
+:version "1.1" ; version of backend (or "unmaintained")
+:manpage "sane-sm3840" ; name of manpage (if it exists)
+:url "http://www.ziplabel.com/sm3840/" ; backend's web page
+:comment "This reverse-engineered backend supports the USB ScanMaker 3840 model"
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Microtek" ; name a manufacturer
+:url "http://www.microtek.com/" ; manufacturer's URL
+:comment "Microtek makes a wide variety of devices."
+ ; comment about the manufacturer
+
+:model "ScanMaker 3840" ; name models for above-specified mfg.
+:status :good ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "USB" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:usbid "0x05da" "0x30d4"
+:comment "8 and 16 bit, color and grayscale" ; comment about the model
+
+:model "ScanMaker 4800" ; name models for above-specified mfg.
+:status :good ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "USB" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:usbid "0x05da" "0x30cf"
+:comment "Same hardware as SM3840, different color box" ; comment
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+; :status specifier is optional after :model and at the top-level
+
+
diff --git a/doc/descriptions/snapscan.desc b/doc/descriptions/snapscan.desc
new file mode 100644
index 0000000..73f3f4d
--- /dev/null
+++ b/doc/descriptions/snapscan.desc
@@ -0,0 +1,353 @@
+; $Id$
+;
+; SANE Backend specification file (Matto Marjanovic's format)
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "SnapScan" ; name of backend
+:version "1.4" ; version of backend
+:manpage "sane-snapscan" ; name of manpage (if it exists)
+:url "http://snapscan.sourceforge.net/" ; backend's web page
+:comment "Supported bit depths: 24 bit (color), 48 bit (color, Epson) 8 bit (gray)"
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+;-----------------------------------------------------------------------------
+
+:mfg "AGFA" ; name a manufacturer
+:url "http://www.agfa.com/"
+
+:model "SnapScan" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+
+:model "SnapScan 300"
+:interface "SCSI"
+:status :good
+
+:model "SnapScan 310"
+:interface "SCSI"
+:status :good
+
+:model "SnapScan 600"
+:interface "SCSI"
+:status :good
+:comment "Optional ADF supported."
+
+:model "Arcus 1200"
+:interface "SCSI"
+:status :good
+:comment "Optional transparency unit supported."
+
+:model "SnapScan 1236s"
+:interface "SCSI"
+:status :good
+:comment "Optional ADF and transparency unit supported."
+
+:model "SnapScan 1236u"
+:interface "USB"
+:status :good
+:usbid "0x06bd" "0x0002"
+:comment "Optional ADF and transparency unit supported."
+
+:model "SnapScan 1212U"
+:interface "USB"
+:usbid "0x06bd" "0x0001"
+:status :good
+
+:model "SnapScan 1212U_2"
+:interface "USB"
+:usbid "0x06bd" "0x2061"
+:status :good
+
+:model "SnapScan e10"
+:interface "USB"
+:usbid "0x06bd" "0x2093"
+:status :good
+
+:model "SnapScan e20"
+:interface "USB"
+:usbid "0x06bd" "0x2091"
+:status :good
+
+:model "SnapScan e25"
+:interface "USB"
+:usbid "0x06bd" "0x2095"
+:status :good
+
+:model "SnapScan e26"
+:interface "USB"
+:usbid "0x06bd" "0x2097"
+:status :good
+
+:model "SnapScan e40"
+:interface "USB"
+:usbid "0x06bd" "0x208d"
+:status :good
+
+:model "SnapScan e42"
+:interface "USB"
+:usbid "0x06bd" "0x20ff"
+:status :good
+
+:model "SnapScan e50"
+:interface "USB"
+:status :good
+:usbid "0x06bd" "0x208f"
+:comment "Optional tranparency unit supported"
+
+:model "SnapScan e52"
+:interface "USB"
+:status :good
+:usbid "0x06bd" "0x20fd"
+:comment "Optional tranparency unit supported"
+
+:model "SnapScan e60"
+:interface "USB"
+:status :untested
+
+;------------------------------------------------------------------------------
+
+:mfg "Acer Peripherals"
+:comment "Company was renamed to <a href=\"#BENQ\">Benq</a>."
+
+:mfg "Vuego"
+:comment "Company was renamed to <a href=\"#BENQ\">Benq</a>."
+
+:mfg "Benq (Acer)"
+:url "http://www.benq.com"
+:comment "Formerly Acer Peripherals"
+
+:model "300f"
+:interface "SCSI"
+:status :good
+
+:model "310s"
+:interface "SCSI"
+:status :good
+
+:model "610s"
+:interface "SCSI"
+:status :good
+
+:model "610plus"
+:interface "SCSI"
+:status :good
+
+:model "620s"
+:interface "SCSI"
+:status :good
+
+:model "ScanWit 2720s"
+:interface "SCSI"
+:status :good
+
+:model "310U"
+:interface "USB"
+:usbid "0x04a5" "0x1a20"
+:status :good
+
+:model "320U"
+:interface "USB"
+:usbid "0x04a5" "0x2022"
+:status :good
+
+:model "340U"
+:interface "USB"
+:usbid "0x04a5" "0x2022"
+:status :good
+
+:model "620U"
+:interface "USB"
+:usbid "0x04a5" "0x1a2a"
+:status :good
+:comment "Optional tranparency unit supported"
+
+:model "620UT"
+:interface "USB"
+:usbid "0x04a5" "0x2040"
+:status :good
+:comment "Optional tranparency unit supported"
+
+
+:model "640U"
+:interface "USB"
+:usbid "0x04a5" "0x2060"
+:status :good
+:comment "Optional tranparency unit supported"
+
+:model "640bu"
+:interface "USB"
+:usbid "0x04a5" "0x207e"
+:status :good
+
+:model "640BT"
+:interface "USB"
+:usbid "0x04a5" "0x20be"
+:status :good
+:comment "Optional tranparency unit supported"
+
+:model "1240"
+:interface "USB"
+:usbid "0x04a5" "0x20c0"
+:status :good
+:comment "Optional tranparency unit supported"
+
+:model "3300"
+:interface "USB"
+:usbid "0x04a5" "0x20b0"
+:status :good
+
+:model "3300"
+:interface "USB"
+:usbid "0x04a5" "0x20de"
+:status :good
+
+:model "4300"
+:interface "USB"
+:usbid "0x04a5" "0x20b0"
+:status :good
+
+:model "4300"
+:interface "USB"
+:usbid "0x04a5" "0x20de"
+:status :good
+
+:model "5000E"
+:interface "USB"
+:usbid "0x04a5" "0x20fc"
+:status :basic
+:comment "Same as 5000U, working up to 600 DPI"
+
+:model "5000U"
+:interface "USB"
+:usbid "0x04a5" "0x20fc"
+:status :basic
+:comment "Same as 5000E, working up to 600 DPI"
+
+:model "5000"
+:interface "USB"
+:usbid "0x04a5" "0x20f8"
+:status :good
+:comment "USB ID 0x04a5,0x20f8: Color / grayscale scans working up to 1200 DPI"
+
+:model "5150"
+:interface "USB"
+:usbid "0x04a5" "0x2137"
+:status :basic
+:comment "Calibration algorithm unknown"
+
+:model "5250"
+:interface "USB"
+:usbid "0x04a5" "0x2137"
+:status :basic
+:comment "Same hardware as 5150 (?), Calibration algorithm unknown"
+
+:model "5300"
+:interface "USB"
+:usbid "0x04a5" "0x20fe"
+:status :basic
+:comment "Problems with firmware upload reported"
+
+;------------------------------------------------------------------------------
+
+:mfg "Guillemot / Hercules"
+:url "http://www.guillemot.com"
+
+:model "Maxi Scan A4 Deluxe (SCSI)"
+:interface "SCSI"
+:status :good
+:comment "Rebadged SnapScan 310s."
+
+:model "Scan@home Touch 1248 (USB)"
+:interface "USB"
+:usbid "0x04a5" "0x20de"
+:status :good
+:comment "Rebadged Benq 3300."
+
+:model "Maxi Scan A4 USB 640U"
+:interface "USB"
+:usbid "0x04a5" "0x2060"
+:status :good
+:comment "Rebadged Benq 640U."
+
+:model "Maxi A4 36 bit"
+:interface "USB"
+:usbid "0x04a5" "0x2060"
+:status :good
+:comment "Rebadged Benq 620U, needs Benq firmware file u96v???.bin"
+
+;------------------------------------------------------------------------------
+
+:mfg "Mitsubishi"
+:url "http://www.mitsubishi.com"
+
+:model "Diamondview 648UT"
+:interface "USB"
+:usbid "0x04a5" "0x2022"
+:status :good
+:comment "Rebadged Benq 320u."
+
+:model "Diamondview 650U"
+:interface "USB"
+:usbid "0x04a5" "0x20b0"
+:status :good
+:comment "Rebadged Benq 4300."
+
+;------------------------------------------------------------------------------
+
+:mfg "Epson"
+:url "http://www.epson.com"
+
+:model "Perfection 660"
+:interface "USB"
+:usbid "0x04b8" "0x0114"
+:status :good
+
+:model "Perfection 1270"
+:interface "USB"
+:usbid "0x04b8" "0x0120"
+:status :good
+
+:model "Perfection 1670"
+:interface "USB"
+:usbid "0x04b8" "0x011f"
+:status :good
+
+:model "Perfection 2480"
+:interface "USB"
+:usbid "0x04b8" "0x0121"
+:status :good
+
+:model "Perfection 2580"
+:interface "USB"
+:status :basic
+:usbid "0x04b8" "0x0121"
+:comment "Film scanning unit unsupported"
+
+:model "Perfection 3490"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :good
+
+:model "Perfection 3590"
+:interface "USB"
+:usbid "0x04b8" "0x0122"
+:status :basic
+:comment "Film scanning unit unsupported"
+
+:model "Stylus CX-1500"
+:interface "USB"
+:usbid "0x04b8" "0x080c"
+:status :good
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/sp15c.desc b/doc/descriptions/sp15c.desc
new file mode 100644
index 0000000..c43af80
--- /dev/null
+++ b/doc/descriptions/sp15c.desc
@@ -0,0 +1,31 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "sp15c" ; name of backend
+:version "unmaintained" ; version of backend
+:manpage "sane-sp15c" ; name of manpage (if it exists)
+;:url "http://www.aa.net/~bentson/sane.html" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Fujitsu" ; name a manufacturer
+:url "http://www.fcpa.fujitsu.com/products/scanners/"
+:url "http://www.fujitsu.com/"
+
+:model "ScanPartner 15C" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+
+:model "ScanPartner 600C" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
diff --git a/doc/descriptions/st400.desc b/doc/descriptions/st400.desc
new file mode 100644
index 0000000..ca3de68
--- /dev/null
+++ b/doc/descriptions/st400.desc
@@ -0,0 +1,20 @@
+; ST400 backend .desc by Ingo Wilken
+
+:backend "st400" ; name of backend
+:version "1.6" ; version number
+:manpage "sane-st400" ; name of manpage (if it exists)
+:url "http://www.informatik.uni-oldenburg.de/~ingo/sane/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices
+
+:mfg "Siemens"
+:url "http://www.siemens.de/"
+:model "ST400"
+:interface "SCSI"
+:comment "6 bit gray"
+:status :basic
+
+:model "ST800"
+:interface "SCSI"
+:comment "6 bit gray"
+:status :basic
diff --git a/doc/descriptions/stv680.desc b/doc/descriptions/stv680.desc
new file mode 100755
index 0000000..fee96d7
--- /dev/null
+++ b/doc/descriptions/stv680.desc
@@ -0,0 +1,63 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "stv680" ; name of backend
+:version "1.0-1" ; version of backend
+:manpage "sane-stv680"
+:url "http://gkall.hobby.nl/stv680-aiptek.html" ; backend's web page
+:comment "This vidcam backend is for the stv0680 chipset, See the website for more info."
+
+:devicetype :vidcam ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Aiptek" ; name a manufacturer
+:url "http://www.aiptek.com.tw"
+
+; name models for above-specified mfg.
+:model "Aiptek Pencam"
+:interface "USB"
+:usbid "0x0553" "0x0202"
+:status :minimal
+:comment "image is OK for CIF and QCIF, VGA and QVGA untested, streaming video is a problem"
+
+:mfg "Konica" ; name a manufacturer
+:url "http://www.konicaminolta.com"
+
+; name models for above-specified mfg.
+:model "e-mini"
+:interface "USB"
+:usbid "0x04c8" "0x0722"
+:status :untested
+:comment " "
+
+:mfg "Digital Dream" ; name a manufacturer
+:url "http://www.digitaldreamco.com/en/index.shtml"
+
+; name models for above-specified mfg.
+:model "l' espion XS"
+:interface "USB"
+:usbid "0x1183" "0x0001"
+:status :untested
+:comment " "
+
+:mfg "Creative" ; name a manufacturer
+:url "http://www.creative.com/"
+
+; name models for above-specified mfg.
+:model "WebCam Go Mini"
+:interface "USB"
+:usbid "0x041e" "0x4007"
+:status :untested
+:comment " "
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/tamarack.desc b/doc/descriptions/tamarack.desc
new file mode 100644
index 0000000..731e6b8
--- /dev/null
+++ b/doc/descriptions/tamarack.desc
@@ -0,0 +1,35 @@
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+:backend "tamarack" ; name of backend
+:version "unmaintained" ; version of backend
+;
+:manpage "sane-tamarack" ; name of manpage (if it exists)
+
+:devicetype :scanner
+
+:mfg "Tamarack" ; name a manufacturer
+;:url "http://www.tamarack.net/"
+; doesn't exist anymore?
+
+:model "Artiscan 6000C" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment "3 pass, 300 DPI"
+
+:model "Artiscan 8000C" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment "3 pass, 400 DPI"
+
+:model "Artiscan 12000C" ; name models for above-specified mfg.
+:interface "SCSI"
+:status :good
+:comment "3 pass, 600 DPI"
+
diff --git a/doc/descriptions/teco1.desc b/doc/descriptions/teco1.desc
new file mode 100644
index 0000000..89ac03f
--- /dev/null
+++ b/doc/descriptions/teco1.desc
@@ -0,0 +1,127 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "teco1" ; name of backend
+:version "1.0-10" ; version of backend
+:manpage "sane-teco1" ; name of manpage (if it exists)
+:url "http://www.zago.net/sane/#teco" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Relisys"
+:url "http://www.relisys.com/"
+:url "http://www.tecoimage.com.tw/"
+
+:model "RELI 2412"
+:interface "SCSI"
+:comment "sub model VM3530+"
+:status :complete
+
+:model "AVEC 2400"
+:interface "SCSI"
+:comment "sub model VM3520"
+:status :complete
+
+:model "RELI 4830"
+:interface "SCSI"
+:comment "sub model VM4542"
+:status :good
+
+:model "AVEC 2412"
+:comment "sub model VM3520+"
+:interface "SCSI"
+:status :complete
+
+:model "AVEC 4800"
+:comment "sub model VM4530"
+:interface "SCSI"
+:status :untested
+
+:model "AVEC 4816"
+:comment "sub model VM4530+"
+:interface "SCSI"
+:status :untested
+
+:model "RELI DS6"
+:comment "sub model VM3420"
+:interface "SCSI"
+:status :untested
+
+:model "RELI DS15"
+:comment "sub model VM3440"
+:interface "SCSI"
+:status :untested
+
+:model "RELI 2400"
+:comment "sub model VM3530"
+:interface "SCSI"
+:status :untested
+
+:model "RELI 4816"
+:comment "sub model VM4540"
+:interface "SCSI"
+:status :complete
+
+:model "RELI 9600"
+:comment "sub model VM6530"
+:interface "SCSI"
+:status :untested
+
+:model "RELI 9612"
+:comment "sub model VM6530*"
+:interface "SCSI"
+:status :untested
+
+:model "RELI 9624"
+:comment "sub model VM6530+"
+:interface "SCSI"
+:status :untested
+
+:model "RELI 9630"
+:comment "sub model VM6540"
+:interface "SCSI"
+:status :untested
+
+:mfg "Actown"
+:model "ACT Scan I 30"
+:comment "sub model VM3520A"
+:interface "SCSI"
+:status :untested
+
+:mfg "Dextra"
+
+:model "DF-600P"
+:comment "sub model VM3510"
+:interface "SCSI"
+:status :good
+
+:model "DF-1200T+"
+:comment "sub model VM3530+"
+:interface "SCSI"
+:status :untested
+
+:model "DF-4830T"
+:comment "sub model VM4542"
+:interface "SCSI"
+:status :untested
+
+:model "DF-9624"
+:comment "sub model VM6530+"
+:interface "SCSI"
+:status :untested
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+
+
diff --git a/doc/descriptions/teco2.desc b/doc/descriptions/teco2.desc
new file mode 100644
index 0000000..23479ab
--- /dev/null
+++ b/doc/descriptions/teco2.desc
@@ -0,0 +1,83 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "teco2" ; name of backend
+:version "1.0-9" ; version of backend
+:manpage "sane-teco2"
+:url "http://gkall.hobby.nl/teco2.html" ; backend's web page
+
+:devicetype :scanner
+
+:mfg "Relisys"
+:url "http://www.relisys.com/"
+
+:model "AVEC Super 3"
+:interface "SCSI"
+:comment "sub model VM3575"
+:status :untested
+
+:model "AVEC II S3"
+:interface "SCSI"
+:comment "sub model VM3564"
+:status :good
+
+:model "SCORPIO Super 3"
+:comment "sub model VM3575"
+:interface "SCSI"
+:status :good
+
+:model "APOLLO Express 3"
+:comment "sub model VM356A"
+:interface "SCSI"
+:status :basic
+
+:model "APOLLO Express 6"
+:comment "sub model VM6565" ; aka VM656A
+:interface "SCSI"
+:status :good
+
+:model "SCORPIO Pro"
+:comment "sub model VM6575"
+:interface "SCSI"
+:status :good
+
+:model "SCORPIO Pro-S"
+:comment "sub model VM6586"
+:interface "SCSI"
+:status :untested
+
+
+:mfg "Primax"
+:url "http://www.primax.nl/"
+
+:model "Jewel 4800"
+:comment "sub model VM356A"
+:interface "SCSI"
+:status :good
+
+:model "Profi 9600"
+:comment "sub model VM6575"
+:interface "SCSI"
+:status :basic
+
+:model "Profi 19200"
+:comment "sub model VM6586"
+:interface "SCSI"
+:status :good
+
+
+:mfg "Mustek"
+:url "http://www.mustek.com/"
+
+:model "ScanMagic 4830S"
+:comment "sub model VM3575"
+:interface "SCSI"
+:status :untested
diff --git a/doc/descriptions/teco3.desc b/doc/descriptions/teco3.desc
new file mode 100644
index 0000000..f551309
--- /dev/null
+++ b/doc/descriptions/teco3.desc
@@ -0,0 +1,62 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "teco3" ; name of backend
+:version "1.0-1" ; version of backend
+:manpage "sane-teco3" ; name of manpage (if it exists)
+:url "http://www.zago.net/sane/#teco3" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+
+:mfg "Relisys"
+:url "http://www.tecoimage.com.tw/"
+:model "Infinity Scorpio"
+:comment "sub model VM3552"
+:interface "SCSI"
+:status :good
+
+:mfg "Plustek"
+:model "OpticPro 2400SP"
+:comment "sub model VM3552"
+:interface "SCSI"
+:status :untested
+
+:mfg "PIOTECH"
+:url "http://www.image-land.com/"
+:model "Splendeur 3024"
+:comment "sub model VM3552"
+:interface "SCSI"
+:status :good
+
+:mfg "Trust"
+:model "Imagery 2400 SP"
+:comment "sub model VM3552"
+:interface "SCSI"
+:status :good
+
+:model "Imagery 4800 SP+"
+:comment "sub model VM3552"
+:interface "SCSI"
+:status :good
+
+:model "Imagery 9600 SP"
+:comment "sub model VM3552"
+:interface "SCSI"
+:status :untested
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+
+
diff --git a/doc/descriptions/template.desc. b/doc/descriptions/template.desc.
new file mode 100644
index 0000000..25b9b5a
--- /dev/null
+++ b/doc/descriptions/template.desc.
@@ -0,0 +1,81 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "template" ; name of backend
+:version "0.42" ; version of backend (or "unmaintained")
+:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+:manpage "sane-template" ; name of manpage (if it exists)
+:url "http://www.luser.com/temp/" ; backend's web page
+:url "http://www.luser.com/b/" ; another backend webpage
+:comment "This backend supports only the USB and SCSI models"
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "TemPlate" ; name a manufacturer
+:url "http://www.template.com/" ; manufacturer's URL
+:url "http://www.template.de/" ; another manufacturer URL
+:comment "TemPlate scanners are sometimes labeled \"TMP\""
+ ; comment about the manufacturer
+
+:model "Templ Z" ; name models for above-specified mfg.
+:status :untested ; :minimal, :basic, :good, :complete
+ ; :untested, or :unsupported
+:interface "SCSI" ; interface type of the device:
+ ; "SCSI", "USB", "Parport (EPP)",
+ ; "Parport (SPP)", "Parport (ECP)",
+ ; "Serial port", "IEEE-1394", "JetDirect",
+ ; or "Proprietary".
+:usbid "0x1234" "0x4321" ; Vendor and product ids of an USB device
+:url "http://www.tmp.com/z.html" ; model's URL
+:comment "With Z-Axis scrolling" ; comment about the model
+
+:model "Templ ZS"
+:interface "USB"
+:usbid "0x1234" "0x4322"
+:status :unsupported
+:comment "No support yet, but we have docs."
+
+:model "Templ ZQ"
+:interface "USB"
+:usbid "0x1234" "0x4323"
+:status :minimal
+
+:model "Templ ZY"
+:interface "SCSI"
+:status :basic
+
+:model "Templ ZZ"
+:interface "SCSI"
+:status :good
+
+:mfg "ArmorPlate" ; another manufacturer...
+:url "http://www.armorplate.com/"
+
+:model "AmplScan II"
+:interface "SCSI"
+:status :complete
+:comment "AmplScan *II*, not AmplScan!"
+
+:devicetype :api ; specify a different type
+:desc "Interface to FrObYz API" ; describe a non-hardware device
+:comment "Only FrObYz version 2.0 is supported!"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
+; :status specifier is optional after :model and at the top-level
+
+
diff --git a/doc/descriptions/test.desc b/doc/descriptions/test.desc
new file mode 100644
index 0000000..cf27e87
--- /dev/null
+++ b/doc/descriptions/test.desc
@@ -0,0 +1,23 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "test" ; name of backend
+:version "1.0-28" ; version of backend
+:manpage "sane-test" ; name of manpage (if it exists)
+:url "http://www.meier-geinitz.de/sane/test-backend/" ; backend's web page
+
+:devicetype :api ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:desc "Frontend-tester"
+:comment "Backend for testing frontends. Also serves as example for SANE backend options."
+
diff --git a/doc/descriptions/u12.desc b/doc/descriptions/u12.desc
new file mode 100644
index 0000000..e5ff81f
--- /dev/null
+++ b/doc/descriptions/u12.desc
@@ -0,0 +1,61 @@
+;
+; SANE Backend description file for U12 backend
+;
+
+:backend "u12"
+:version "0.02"
+:manpage "sane-u12"
+:new :no
+; backend's web page
+:url "http://www.gjaeger.de/scanner/u12/"
+
+:devicetype :scanner
+
+;* Plustek **********************************************************************************
+
+:mfg "Plustek"
+:url "http://www.plustek.de/"
+:url "http://www.plustek.com/"
+
+:model "OpticPro U12"
+:interface "USB"
+:usbid "0x07b3" "0x0001"
+:status :basic
+:comment "Note: Only devices with product ID 0x0001 are supported!"
+
+:model "OpticPro UT12"
+:interface "USB"
+:usbid "0x07b3" "0x0001"
+:status :basic
+:comment "Note: Only devices with product ID 0x0001 are supported!"
+
+:model "OpticPro 1212U"
+:interface "USB"
+:usbid "0x07b3" "0x0001"
+:status :basic
+
+;* RevScan **********************************************************************************
+
+:mfg "RevScan"
+
+:model "RevScan Orange R48Ti"
+:interface "USB"
+:usbid "0x07b3" "0x0001"
+:status :basic
+:comment "Rebadged Plustek OpticPro UT12"
+
+;* Genius/KYE *******************************************************************************************
+
+:mfg "Genius"
+:url "http://www.geniusnet.com.tw/"
+
+:model "ColorPage HR6 V1"
+:interface "USB"
+:usbid "0x0458" "0x2004"
+:status :basic
+
+:model "ColorPage Vivid III USB"
+:interface "USB"
+:usbid "0x07b3" "0x0001"
+:status :untested
+:comment "Note: Device has Plustek vendor and product ID (0x07b3/0x0001)"
diff --git a/doc/descriptions/umax.desc b/doc/descriptions/umax.desc
new file mode 100644
index 0000000..73525a5
--- /dev/null
+++ b/doc/descriptions/umax.desc
@@ -0,0 +1,382 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "umax" ; name of backend
+:version "1.0-41" ; version of backend
+:manpage "sane-umax" ; name of manpage (if it exists)
+:url "http://www.rauch-domain.de/sane-umax/index.html" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "UMAX" ; name a manufacturer
+:url "http://www.umax.com/"
+:url "http://www.umax.com.tw/"
+:url "http://www.umax.de/en"
+:url "http://www.umax-europe.com"
+:url "http://www.umaxjapan.co.jp"
+:url "http://www.umax.com.cn"
+
+:model "Vista S6"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Vista S6E"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UMAX S-6E"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UMAX S-6EG"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Vista-S8"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Supervista S-12"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UMAX S-12"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UMAX S-12G"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 600S"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 610S"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 1200S"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 1220S"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 2100S"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 2200 (SU)"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 2200 (SU)"
+:interface "USB"
+:usbid "0x1606" "0x0230"
+:status :good
+:comment "OK, needs USB control messages"
+
+:model "Astra 2400S"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra 6400"
+:interface "IEEE-1394"
+:status :unsupported
+:comment "will probably work one day"
+
+:model "Astra 6450"
+:interface "IEEE-1394"
+:status :unsupported
+:comment "will probably work one day"
+
+:model "Astra MX3"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Astra MX3"
+:interface "USB"
+:status :good
+:comment "OK, needs USB control messages"
+
+:model "Mirage D-16L"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Mirage II"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Mirage IIse"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "PSD"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "PowerLook"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=PS-2400X"
+
+:model "PL-II"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "PowerLook III"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "PowerLook 270"
+:interface "SCSI"
+:status :unsupported
+:comment "incompatible"
+
+:model "PowerLook 270plus"
+:interface "SCSI"
+:status :unsupported
+:comment "incompatible"
+
+:model "PowerLook 1100"
+:interface "IEEE-1394"
+:status :unsupported
+:comment "will probably work one day"
+
+:model "PowerLook 2000"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "PowerLook 2100XL"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "PowerLook 3000"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "Gemini D-16"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UMAX VT600"
+:interface "SCSI"
+:status :untested
+:comment "may work, please test and give feedback"
+
+:model "Vista-T630"
+:interface "SCSI"
+:status :good
+:comment "OK for some firmwareversions, on others only lineart OK"
+
+:model "UC 630"
+:interface "SCSI"
+:status :good
+:comment "Version 2.8 OK, others only lineart OK"
+
+:model "UG 630"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UG 80"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:model "UC 840"
+:interface "SCSI"
+:status :good
+:comment "Version 1.6 OK, others only lineart OK"
+
+:model "UC 1200S"
+:interface "SCSI"
+:status :untested
+:comment "may work, please test and give feedback"
+
+:model "UC 1200SE"
+:interface "SCSI"
+:status :good
+:comment "Version 3.0 OK, others unknown"
+
+:model "UC 1260"
+:interface "SCSI"
+:status :good
+:comment "Version 1.6 OK, others unknown"
+
+
+:mfg "Linotype Hell" ; another manufacturer...
+:url "http://www.heidelberg.com/"
+
+:model "Jade"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=LinoHell Office"
+
+:model "Jade"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=LinoHell JADE"
+
+:model "Jade2"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=LinoHell Office2"
+
+:model "Saphir"
+:interface "SCSI"
+:status :untested
+:comment "support disabled until tested - please contact author"
+
+:model "Saphir2"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=LinoHell SAPHIR2"
+
+:model "Saphir3"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=LinoHell SAPHIR3"
+
+:model "Saphir Ultra"
+:interface "SCSI"
+:status :untested
+:comment "support disabled until tested - please contact author"
+
+:model "Saphir Ultra II"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=Linotype SAPHIR4"
+
+:model "Saphir HiRes"
+:interface "SCSI"
+:status :untested
+:comment "support disabled until tested - please contact author"
+
+:model "Opal"
+:interface "SCSI"
+:status :untested
+:comment "support disabled until tested - please contact author"
+
+:model "Opal2"
+:interface "SCSI"
+:status :good
+:comment "OK; SCSI-ID=LinoHell OPAL2"
+
+:model "Opal Ultra"
+:interface "SCSI"
+:status :untested
+:comment "support disabled until tested - please contact author"
+
+:model "Linoscan 1400"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=HDM LS4H1S"
+
+:mfg "Vobis"
+:url "http://www.vobis.de/"
+
+:model "Highscreen Scanboostar Premium"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=LinoHell Office2"
+
+:mfg "EDGE" ; another manufacturer...
+; :url "http://???/"
+
+:model "KTX-9600US"
+:interface "SCSI"
+:status :untested
+:comment "no feedback"
+
+:mfg "Epson" ; another manufacturer...
+:url "http://www.epson.com/"
+
+:model "Perfection 600"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=EPSON Perfection600"
+
+:mfg "Escom" ; another manufacturer...
+
+:model "Image Scanner 256"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=UMAX UG 80"
+
+:mfg "Escort" ; another manufacturer...
+
+:model "Galleria 600"
+:interface "SCSI"
+:status :untested
+:comment "untested, SCSI-ID=ESCORT Galleria 600S"
+
+:mfg "Genius" ; another manufacturer...
+;:url "http://www.genius.kye.de/"
+
+:model "ColorPage-HR5 (Pro)"
+:interface "SCSI"
+:status :good
+:comment "OK, SCSI-ID=KYE ColorPage-HR5"
+
+:mfg "Nikon" ; another manufacturer...
+:url "http://www.nikon.com/"
+
+:model "AX-110 / Scantouch 110"
+:interface "SCSI"
+:status :untested
+:comment "may work, please test and give feedback"
+
+:model "AX-210"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+:mfg "TriGem" ; another manufacturer...
+:url "http://www.nikon.com/"
+
+:model "PowerScanII"
+:interface "SCSI"
+:status :good
+:comment "OK"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/umax1220u.desc b/doc/descriptions/umax1220u.desc
new file mode 100644
index 0000000..7121412
--- /dev/null
+++ b/doc/descriptions/umax1220u.desc
@@ -0,0 +1,47 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "umax1220u" ; name of backend
+:version "unmaintained" ; version of backend
+;:status :stable ; :alpha, :beta, :stable, :new
+:manpage "sane-umax1220u" ; name of manpage (if it exists)
+:url "http://sourceforge.net/projects/umax1220u-sane" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "UMAX" ; name a manufacturer
+:url "http://www.umax.com/"
+
+:model "Astra 1220U" ; name models for above-specified mfg.
+:interface "USB"
+:usbid "0x1606" "0x0010"
+:status :good
+
+:model "Astra 1600U"
+:interface "USB"
+:usbid "0x1606" "0x0030"
+:status :good
+
+:model "Astra 2000U"
+:interface "USB"
+:usbid "0x1606" "0x0030"
+:status :good
+
+:model "Astra 2100U"
+:interface "USB"
+:usbid "0x1606" "0x0130"
+:status :good
+
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/umax_pp.desc b/doc/descriptions/umax_pp.desc
new file mode 100644
index 0000000..fb3bf3f
--- /dev/null
+++ b/doc/descriptions/umax_pp.desc
@@ -0,0 +1,63 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "umax_pp" ; name of backend
+:version "1" ; version of backend
+:manpage "sane-umax_pp" ; name of manpage (if it exists)
+ ; backend's web page
+:url "http://umax1220p.sourceforge.net/"
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "UMAX" ; name a manufacturer
+:url "http://www.umax.com.tw/"
+
+; These scanners are known to have the same ASIC family.
+
+:model "Astra 1220P"
+:interface "Parport (EPP/ECP)"
+:status :good
+
+:model "Astra 2000P"
+:interface "Parport (EPP/ECP)"
+:status :good
+
+:model "Astra 1600P"
+:interface "Parport (EPP/ECP)"
+:status :good
+
+:model "Astra 600P"
+:interface "Parport (SPP/ECP)"
+:status :unsupported
+:comment "untested, but should be close to 610P"
+
+:model "Astra 610P"
+:interface "Parport (SPP/ECP)"
+:status :good
+
+:mfg "Hewlett-Packard"
+
+:model "Scanjet 3200C"
+:interface "Parport (EPP/ECP)"
+:status :good
+:comment "works (relabelled 1220P and 2000P)"
+
+:mfg "Genius"
+
+:model "ColorPage-Life Pro"
+:interface "Parport (EPP/ECP)"
+:status :good
+:comment "works (relabelled 1220P and 2000P)"
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/unsupported.desc b/doc/descriptions/unsupported.desc
new file mode 100644
index 0000000..4f59ebf
--- /dev/null
+++ b/doc/descriptions/unsupported.desc
@@ -0,0 +1,2778 @@
+
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "unsupported" ; name of backend
+:version "2010-06-09" ; version of backend
+:url "/contrib.html"
+;:manpage "sane-mustek" ; name of manpage (if it exists)
+:comment "The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs."
+
+:devicetype :scanner
+
+;********************************************************************************************
+
+:mfg "Agfa"
+
+:model "DuoScan f40"
+:url "/unsupported/agfa-duoscan-f40.html"
+:interface "USB IEEE-1394"
+:usbid "0x06bd" "0x02bf"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "DuoScan T2000XL"
+:url "/unsupported/agfa-duoscan-t2000xl.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Unsupported. Same as Microtek ArtixScan 2020?"
+
+:model "DuoScan T2500"
+:interface "SCSI IEEE-1384"
+:status :unsupported
+:comment "Unsupported. Same as Microtek Artixscan 2500f"
+
+:model "SnapScan 310P"
+:url "/unsupported/acer-parport.html"
+:interface "Parport"
+:status :unsupported
+:comment "Unsupported, see link for details."
+
+:model "SnapScan EZ"
+:url "/unsupported/acer-parport.html"
+:interface "Parport"
+:status :unsupported
+:comment "Unsupported, see link for details."
+
+:model "SnapScan 1200P"
+:url "/unsupported/acer-parport.html"
+:interface "Parport"
+:status :unsupported
+:comment "Unsupported, see link for details."
+
+:model "SnapScan 1212P"
+:url "/unsupported/acer-parport.html"
+:interface "Parport"
+:status :unsupported
+:comment "Unsupported, see link for details."
+
+;********************************************************************************************
+
+:mfg "Artec/Ultima"
+:url "http://www.artecusa.com/"
+
+:model "1236 USB"
+:url "/unsupported/artec_1236usb.html"
+:interface "USB"
+:usbid "0x05d8" "0x4001"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "AM12e+"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported. Chips found inside: AT015, AD9816JS. Maybe similar to SCSI version or as6e?"
+
+:model "Ultima 2000 (0x4001)"
+:url "/unsupported/artec-ultima-2000-2.html"
+:interface "USB"
+:usbid "0x05d8" "0x4001"
+:status :unsupported
+:comment "Same name, but different ids: This scanner is not supported. The scanner with product id 0x4002 is supported by the gt68xx backend, however."
+
+;********************************************************************************************
+
+:mfg "Avigramm"
+
+:model "Minidoc"
+:url "/unsupported/trust-combiscan-19200.html"
+:interface "USB Parport"
+:usbid "0x05cb" "0x1483"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Avision"
+:url "http://www.avision.com/"
+
+:model "DS310F"
+:interface "Parport"
+:status :unsupported
+:comment "Probably not supported. Scanner/printer/copier combination."
+
+:model "iVina FB2400"
+:interface "USB"
+:status :unsupported
+:comment "Not supported. No chipset information available. Same as UMAX Astra 6700."
+
+:model "iVina 1600"
+:url "/unsupported/umax-astra-4500.html"
+:interface "USB"
+:usbid "0x0638" "0x0a10"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend. Same as UMAX Astra 4500."
+
+:model "iVina FB1800"
+:url "/unsupported/umax-astra-4700.html"
+:interface "USB"
+:usbid "0x0638" "0x0a20"
+:status :unsupported
+:comment "GL646/GL660 based. Same as UMAX Astra 4700."
+
+
+;********************************************************************************************
+
+:mfg "Benq (Acer)"
+:url "http://www.benq.com"
+:comment "Formerly Acer Peripherals"
+
+:model "310P"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "320P"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "340P"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "610P"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "610PT"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "620P"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "620PT"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "640P"
+:url "/unsupported/acer-parport.html"
+:status :unsupported
+:interface "Parport"
+:comment "Unsupported, see link for details."
+
+:model "5450"
+:interface "USB"
+:usbid "0x04a5" "0x211e"
+:status :unsupported
+:comment "Unsupported."
+
+:model "5550"
+:url "/unsupported/benq-5550.html"
+:interface "USB"
+:usbid "0x04a5" "0x2211"
+:status :unsupported
+:comment "Unsupported, see link for details."
+
+:model "5560"
+:interface "USB"
+:usbid "0x04a5" "0x2311"
+:status :unsupported
+:url "http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html"
+
+:model "7400UT"
+:url "/unsupported/benq-7400ut.html"
+:interface "USB"
+:usbid "0x04a5" "0x2202"
+:status :unsupported
+
+;********************************************************************************************
+
+:mfg "Boeder"
+
+:model "Sm@rtScan Office"
+:url "/unsupported/trust-combiscan-19200.html"
+:interface "Parport USB"
+:usbid "0x05cb" "0x1483"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Brother"
+:url "http://www.brother.com/"
+
+:model "MFC 2500"
+:url "/unsupported/brother-mfc-2500.html"
+:interface "USB"
+:usbid "0x04f9" "0x000a"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "MFC 4600"
+:status :unsupported
+:url "http://sourceforge.net/projects/brother-mfc"
+:interface "Parport"
+:comment "The parport 200x400dpi grayscale version of this scanner is unsupported. Dmitri Katchalov did some investigations on this scanner. If you want to write a backend, contact him (see link)."
+
+:model "MFC 7300c"
+:url "/unsupported/brother-mfc-7300.html"
+:interface "Parport USB"
+:usbid "0x04f9" "0x0106"
+:status :unsupported
+
+:model "MFC 9600"
+:url "/unsupported/brother-mfc-9600.html"
+:interface "USB"
+:usbid "0x04f9" "0x0101"
+:status :unsupported
+
+;********************************************************************************************
+
+:mfg "C-Channel"
+:url "http://www.c-channel.ch/"
+
+:model "MyPen Pro"
+:url "/unsupported/c-channel-mypen-pro.html"
+:interface "USB"
+;:usbid "" ""
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "MyPen Light"
+:interface "USB"
+:usbid "0x0a93" "0x0005"
+:status :unsupported
+:comment "See bug #306792 for details."
+
+:model "MoneyPen II"
+;:url "/unsupported/c-channel-mypen-pro.html"
+:interface "USB"
+;:usbid "" ""
+:status :unsupported
+:comment "Probably unsupported."
+
+;********************************************************************************************
+
+:mfg "Canon"
+:url "http://www.canon.com/"
+
+:model "CanoScan 3000"
+:url "/unsupported/canon-3000.html"
+:interface "USB"
+:usbid "0x04a9" "0x2215"
+:status :unsupported
+:comment "GL660+GL646 based."
+
+:model "CanoScan 3000ex"
+:url "/unsupported/canon-3000.html"
+:interface "USB"
+:usbid "0x04a9" "0x2215"
+:status :unsupported
+:comment "GL660+GL646 based."
+
+:model "CanoScan 3000F"
+:url "/unsupported/canon-3000.html"
+:interface "USB"
+:usbid "0x04a9" "0x2215"
+:status :unsupported
+:comment "GL660+GL646 based, to be added to genesys backend"
+
+:model "CanoScan 4200F"
+:url "/unsupported/canon-4200f.html"
+:interface "USB"
+:usbid "0x04a9" "0x221b"
+:status :unsupported
+:comment "Probably unsupported. See link."
+
+:model "CanoScan 4400F"
+:url "/unsupported/canon-4400.html"
+:interface "USB"
+:usbid "0x04a9" "0x2228"
+:status :unsupported
+:comment "GL843 based, to be added to genesys backend"
+
+:model "CanoScan 5000F"
+:url "/unsupported/canon-5000f.html"
+:interface "USB"
+:usbid "0x04a9" "0x2212"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "CanoScan 5200F"
+:url "/unsupported/canon-5200f.html"
+:interface "USB"
+:usbid "0x04a9" "0x2217"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "CanoScan 8000F"
+:url "/unsupported/canon-8000f.html"
+:interface "USB"
+:usbid "0x04a9" "0x220f"
+:status :unsupported
+:comment "Not supported. See link for more information. With transparency adapter."
+
+:model "CanoScan 8400F"
+:url "/unsupported/canon-8400f.html"
+:interface "USB"
+:usbid "0x04a9" "0x221e"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "CanoScan 8600F"
+:url "/unsupported/canon-8600.html"
+:interface "USB"
+:usbid "0x04a9" "0x2229"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+
+:model "CanoScan 9900F"
+:url "/unsupported/canon-9900f.html"
+:interface "USB"
+:usbid "0x04a9" "0x2210"
+:status :unsupported
+:comment "Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter."
+
+:model "CanoScan 9950F"
+:url "/unsupported/canon-9950f.html"
+:interface "USB"
+:usbid "0x04a9" "0x2219"
+:status :unsupported
+:comment "Probably unsupported."
+
+:model "CanoScan D646U"
+:url "/unsupported/canon-d646u.html"
+:interface "USB"
+:usbid "0x04a9" "0x220b"
+:status :unsupported
+:comment "Probably not supported. See link for more information and test program."
+
+:model "CanoScan D646U ex"
+:url "/unsupported/canon-d646u.html"
+:interface "USB"
+:usbid "0x04a9" "0x220b"
+:status :unsupported
+:comment "Probably not supported. See D646."
+
+:model "CanoScan D1230U"
+:url "/unsupported/canon-d1230u.html"
+:interface "USB"
+:usbid "0x04a9" "0x2209"
+:status :unsupported
+:comment "Probably not supported. "
+
+:model "CanoScan D1250U2"
+:url "/unsupported/canon-d1250u2.html"
+:interface "USB"
+:usbid "0x04a9" "0x220c"
+:status :unsupported
+:comment "Not supported. However, someone started working on this scanner and some information is available (see link)."
+
+:model "CanoScan D2400UF"
+:url "/unsupported/canon-d2400uf.html"
+:interface "USB"
+:usbid "0x04a9" "0x220a"
+:status :unsupported
+:comment "Not supported. See link."
+
+:model "CanoScan FB320U"
+:interface "USB"
+:usbid "0x04a9" "0x2201"
+:status :unsupported
+:comment "Probably not supported. No details known."
+
+:model "CanoScan FB620U"
+:url "/unsupported/canon-fb620u.html"
+:interface "USB"
+:usbid "0x04a9" "0x2202"
+:status :unsupported
+:comment "Probably not supported. Some information is available."
+
+:model "CanoScan FB1210U"
+:url "http://sourceforge.net/projects/canonscanner/"
+:interface "USB"
+:usbid "0x04a9" "0x2205"
+:status :unsupported
+:comment "Not supported. However, a stand-alone program for FreeBSD is available."
+
+:model "CanoScan LiDE 70"
+:url "http://www.juergen-ernst.de/info_sane.html"
+:interface "USB"
+:usbid "0x04a9" "0x2225"
+:status :unsupported
+:comment "Philips chip. Backend started, see link"
+
+:model "CanoScan LiDE 80"
+:url "/unsupported/canon-lide-80.html"
+:interface "USB"
+:usbid "0x04a9" "0x2214"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "CanoScan LiDE 90"
+:url "/unsupported/canon-lide-90.html"
+:interface "USB"
+:usbid "0x04a9" "0x1900"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "CanoScan LiDE 500F"
+:url "/unsupported/canon-canoscan-lide-500f.html"
+:interface "USB"
+:usbid "0x04a9" "0x221f"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "CanoScan LiDE 600"
+:interface "USB"
+:url "http://www.juergen-ernst.de/info_sane.html"
+:usbid "0x04a9" "0x2224"
+:status :unsupported
+:comment "Philips chip. Backend started, see link"
+
+:model "CanoScan LiDE 600F"
+:interface "USB"
+:url "http://www.juergen-ernst.de/info_sane.html"
+:usbid "0x04a9" "0x2224"
+:status :unsupported
+:comment "Philips chip. Backend started, see link"
+
+:model "FS4000"
+:url "/unsupported/canon-fs4000.html"
+:interface "USB SCSI"
+:usbid "0x04a9" "0x3042"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "IS 12"
+:url "/unsupported/canon-is-12.html"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
+
+:model "IS 22"
+:url "/unsupported/canon-is-22.html"
+:interface "Parport"
+:status :unsupported
+:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
+
+:model "IS 32"
+:url "/unsupported/canon-is-32.html"
+:interface "USB"
+:usbid "0x04a9" "0x105d"
+:status :unsupported
+:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
+
+:model "IS 52"
+:url "/unsupported/canon-is-52.html"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
+
+:model "ImageRunner iR1018"
+:url "/unsupported/canon-imagerunner.html"
+:interface "USB"
+:usbid "0x04a9" "0x269d"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "ImageRunner iR1022"
+:url "/unsupported/canon-imagerunner.html"
+:interface "USB"
+:usbid "0x04a9" "0x269d"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "ImageRunner iR1023"
+:url "/unsupported/canon-imagerunner.html"
+:interface "USB"
+:usbid "0x04a9" "0x269d"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "PIXMA MP110"
+:url "/unsupported/canon-pixma-mp110.html"
+:interface "USB"
+:usbid "0x04a9" "0x1700"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "PIXMA MP130"
+:url "/unsupported/canon-pixma-mp130.html"
+:interface "USB"
+:usbid "0x04a9" "0x1701"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "DR-2020U"
+:interface "USB"
+:status :unsupported
+:comment "GL84x?"
+
+;********************************************************************************************
+:mfg "Chinon"
+
+:model "DS-3000"
+:url "/unsupported/chinon-ds3000.html"
+:interface "Parport Serial Port"
+:status :unsupported
+:comment "Unsupported at the moment, but a backend is in preparation. See link."
+
+;********************************************************************************************
+
+:mfg "Compaq"
+:url "http://www.compaq.com/"
+
+:model "S200"
+:interface "USB"
+:usbid "0x049f" "0x0021"
+:status :unsupported
+:comment "Not supported. 2400x1200 dpi. One bulk-in, one bulk-out and one interrupt endpoint. Type-number: U0001-HB21, another type nr on the inside: 75100512-00"
+
+;********************************************************************************************
+
+:mfg "Compeye"
+
+:model "Simplex 1236C"
+:url "/unsupported/trust-combiscan-19200.html"
+:interface "Parport USB"
+:usbid "0x05cb" "0x1483"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Corex"
+:url "http://www.cardscan.com/"
+
+:model "Cardscan 500"
+:url "/unsupported/corex-cardscan-500.html"
+:interface "USB"
+:usbid "0x08f0" "0x0001"
+:status :unsupported
+:comment "Probably not supported. Businesscard reader."
+
+:model "Cardscan 700 C"
+:url "/unsupported/corex-cardscan-700.html"
+:interface "USB"
+:usbid "0x08f0" "0x0004"
+:status :unsupported
+:comment "Probably not supported."
+
+;********************************************************************************************
+
+:mfg "Dell"
+:url "http://www.dell.com/"
+
+:model "A940"
+:interface "USB"
+:usbid "0x413c" "0x5106"
+:status :unsupported
+:comment "Probably rebadged Lexmark X5150. May work with sane-lexmark? See bug #312130"
+
+:model "A960"
+:url "/unsupported/dell-a960.html"
+:interface "USB"
+:usbid "0x413c" "0x5107"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "922"
+:url "/unsupported/dell-922.html"
+:interface "USB"
+:usbid "0x413c" "0x5109"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Epson"
+:url "http://www.epson.com/"
+
+:model "GT-2200"
+:interface "USB"
+:usbid "0x04b8" "0x0102"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "StylusScan 2000"
+:interface "USB"
+:usbid "0x04b8" "0x0105"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "Stylus DX4450"
+:url "/unsupported/epson-stylus-dx4450.html"
+:interface "USB"
+:usbid "0x04b8" "0x083f"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "Stylus CX-5800"
+:interface "USB"
+:status :unsupported
+:comment "Probably unsupported at the moment. Not compatible to snapscan backend. It's not known if it may work with epson or epkowa backend."
+
+;********************************************************************************************
+
+:mfg "EDT (Electronic Document Technology)"
+:url "http://www.bizcardreader.com/"
+
+:model "BizCardReader 900C"
+:url "/unsupported/edt-900c.html"
+:interface "USB"
+:usbid "0x0a53" "0x5001"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+
+
+;********************************************************************************************
+
+:mfg "E-Lux"
+:comment "E-Lux and Enhans seem to have been purchased by dysan, now known as MEMOREX"
+
+:model "j-6121"
+:interface "Parport"
+:status :unsupported
+:comment "Probably unsupported. Sold 1998. Same as E-Lux j-6121."
+
+;********************************************************************************************
+
+:mfg "Enhans"
+:comment "E-Lux and Enhans seem to have been purchased by dysan, now known as MEMOREX"
+
+:model "j-6121"
+:interface "Parport"
+:status :unsupported
+:comment "Probably unsupported. Sold 1998. Same as E-Lux j-6121."
+
+:model "M-3630 A"
+:interface "Parport"
+:status :unsupported
+:comment "Probably unsupported. "
+
+;********************************************************************************************
+
+:mfg "Genius"
+:url "http://www.geniusnet.com.tw/"
+:url "http://www.genius-kye.com/"
+
+:model "ColorPage CS"
+:url "/unsupported/genius-colorpage-cs.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Probably unsupported, see link for details."
+
+:model "ColorPage-Slim 1200 USB2"
+:url "/unsupported/genius-colorpage-slim-1200-usb2.html"
+:interface "USB"
+:usbid "0x0458" "0x2020"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend."
+
+:model "ColorPage HR6X Slim"
+:url "/unsupported/genius-colorpage-hr6x.html"
+:interface "USB"
+:usbid "0x0458" "0x2019"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend"
+
+:model "ColorPage HR7X"
+:url "/unsupported/genius-colorpage-hr7x.html"
+:interface "USB"
+:usbid "0x0458" "0x2018"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend"
+
+:model "ColorPage HR7XE"
+:url "/unsupported/genius-colorpage-hr7xe.html"
+:interface "USB"
+:usbid "0x06dc" "0x0012"
+:status :unsupported
+:comment "Unsuported. See link for details."
+
+:model "ColorPage HR8"
+:url "/unsupported/genius-colorpage-hr8.html"
+:interface "USB"
+:usbid "0x0458" "0x201c"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+;********************************************************************************************
+
+:mfg "Guillemot" ; name a manufacturer
+
+:model "SCAN@HOME 48 USB"
+:url "/unsupported/teco-vm6509.html"
+:interface "USB"
+:usbid "0x080d" "0x0102"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "Maxi Scan A4 Parallel 36 bit"
+:interface "Parport"
+:status :unsupported
+:comment "Probably unsupported. Identical to the Benq Prisa 620P."
+
+
+;********************************************************************************************
+
+:mfg "Hercules" ; name a manufacturer
+
+:model "SCAN@HOME 48 USB"
+:url "/unsupported/teco-vm6509.html"
+:interface "USB"
+:usbid "0x080d" "0x0102"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+
+;********************************************************************************************
+
+:mfg "Hewlett-Packard" ; name a manufacturer
+:url "http://www.hp.com/"
+
+:model "Photo Scanner 1000"
+:url "/unsupported/hp-photo-1000.html"
+:interface "USB"
+:usbid "0x03f0" "0x1001"
+:status :unsupported
+:comment "Not supported by SANE. However, it's detected as mass storage device so just mounting it is reported to work. See link for device data."
+
+:model "Photosmart 1200 Photo"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported by SANE. No details known. 10x15 cm. Maybe similar to Photo Scanner 1000?"
+
+:model "Photosmart S20 (C5101A)"
+:url "/unsupported/hp-photosmart-s20xi.html"
+:interface "USB"
+:usbid "0x03f0" "0x0102"
+:status :unsupported
+:comment "Not supported yet by SANE. See link for details."
+
+:model "Photosmart S20xi (C7150A)"
+:url "/unsupported/hp-photosmart-s20xi.html"
+:interface "USB"
+:usbid "0x03f0" "0x0102"
+:status :unsupported
+:comment "Not supported yet by SANE. See link for details."
+
+:model "Photosmart C5100 series"
+:url "/unsupported/hp-photosmart-5100.html"
+:interface "USB"
+:usbid "0x03f0" "0x5811"
+:status :unsupported
+:comment "Not supported yet by SANE. See link for details."
+
+:model "ScanJet 2400c"
+:url "/unsupported/hp-scanjet-2400c.html"
+:interface "USB"
+:usbid "0x03f0" "0x0a01"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend"
+
+:model "Photosmart C3180"
+:url "/unsupported/hp-photosmart-3180.html"
+:interface "USB"
+:usbid "0x03f0" "0x5611"
+:status :unsupported
+:comment "Not supported yet by SANE. See link for details."
+
+:model "ScanJet 3770"
+:status :unsupported
+:interface "USB"
+:usbid "0x03f0" "0x2505"
+:comment "While an external binary-only backend exists, it works only on Linux i386. Therefore the scanner is unsupported on other platforms."
+
+:model "ScanJet 4600"
+:url "/unsupported/hp-scanjet-4600.html"
+:interface "USB"
+:usbid "0x03f0" "0x3005"
+:comment "Not supported. See link for details, or http://www.chmil.org/hp4600linux/ for code"
+:status :unsupported
+
+:model "ScanJet 4670"
+:interface "USB"
+:usbid "0x03f0" "0x3005"
+:comment "Not supported. See ScanJet 4600 entry."
+:status :unsupported
+
+:model "ScanJet 4850C"
+:url "/unsupported/hp-scanjet-4850.html"
+:interface "USB"
+:usbid "0x03f0" "0x1b05"
+:comment "GL841, maybe can be added to genesys backend "
+:status :unsupported
+
+:model "ScanJet 4890C"
+:url "/unsupported/hp-scanjet-4850.html"
+:interface "USB"
+:usbid "0x03f0" "0x1b05"
+:comment "GL843, maybe can be added to genesys backend "
+:status :unsupported
+
+:model "ScanJet 5530C Photosmart"
+:url "/unsupported/hp-scanjet-5530.html"
+:interface "USB"
+:usbid "0x03f0" "0x1605"
+:comment "Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend"
+:status :unsupported
+
+:model "ScanJet 8390"
+:url "/unsupported/hp-scanjet-8390.html"
+:interface "USB"
+:usbid "0x03f0" "0x3805"
+:comment "Probably not supported. See link for details."
+:status :unsupported
+
+:model "ScanJet G4000"
+:url "/unsupported/hp-g4000.html"
+:interface "USB"
+:usbid "0x03f0" "0x4505"
+:comment "Probably not supported. See link for details."
+:status :unsupported
+
+;********************************************************************************************
+
+:mfg "IBM"
+:url "http://www.ibm.com"
+
+:model "ADF Color Scanner"
+:interface "Proprietary"
+:status :unsupported
+:comment "Unsupported. Uses proprietary ISA card. Maybe the same as the Plustek Spectra ADF?"
+
+;********************************************************************************************
+
+:mfg "IOMagic"
+:url "http://www.iomagic.com/"
+
+:model "MobileScan USB"
+:url "/unsupported/trust-combiscan-19200.html"
+:interface "USB Parport"
+:usbid "0x05cb" "0x1483"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Iris"
+:url "http://irislink.com/"
+
+:model "IriScan"
+:url "/unsupported/iris-iriscan.html"
+:interface "USB"
+:usbid "0x0a53" "0x1000"
+:status :unsupported
+:comment "Unsupported. LM9832/3. See link for details."
+
+:model "IRISPen Translator Executive"
+:url "/unsupported/iris-irispen-translator.html"
+:interface "USB"
+:usbid "0x0f43" "0x015a"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "IRISCard Pro (IBCR II)"
+:url "/unsupported/iris-business.html"
+:interface "USB"
+:usbid "0x0a38" "0x0301"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Kodak"
+:url "http://www.kodak.com"
+
+:model "Snapshot Photo Scanner 1"
+:interface "Parport"
+:status :unsupported
+:comment "Unsupported. FCC ID HWF96PHS"
+
+;********************************************************************************************
+
+:mfg "Lexmark"
+:url "http://www.lexmark.com/"
+
+:model "P6250"
+:url "/unsupported/lexmark-p6250.html"
+:interface "USB"
+:usbid "0x043d" "0x0097"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "Photo 3150"
+:url "/unsupported/lexmark-3150.html"
+:interface "USB"
+:usbid "0x043d" "0x007d"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X74"
+:url "/unsupported/lexmark-x75.html"
+:interface "USB"
+:usbid "0x043d" "0x0060"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X75"
+:url "/unsupported/lexmark-x75.html"
+:interface "USB"
+:usbid "0x043d" "0x0060"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X75 PrinTrio"
+:url "/unsupported/lexmark-x75.html"
+:interface "USB"
+:usbid "0x043d" "0x0060"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X83"
+:url "/unsupported/lexmark-x83.html"
+:interface "USB"
+:usbid "0x043d" "0x003d"
+:status :unsupported
+:comment "Unsupported. GL640."
+
+:model "X2330"
+:url "/unsupported/lexmark-x2330.html"
+:interface "USB"
+:usbid "0x043d" "0x00bb"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X3450"
+:url "/unsupported/lexmark-x3450.html"
+:interface "USB"
+:usbid "0x043d" "0x00f6"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X5130"
+:url "/unsupported/lexmark-x5130.html"
+:interface "USB"
+:usbid "0x043d" "0x0065"
+:status :unsupported
+:comment "Unsupported."
+
+:model "X5150"
+:url "/unsupported/lexmark-x5130.html"
+:interface "USB"
+:usbid "0x043d" "0x0065"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "X5250"
+:url "/unsupported/lexmark-x5250.html"
+:interface "USB"
+:usbid "0x043d" "0x0093"
+:status :unsupported
+:comment "Unsupported."
+
+:model "X6170"
+:url "/unsupported/lexmark-x6170.html"
+:interface "USB"
+:usbid "0x043d" "0x0072"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X7170"
+:interface "USB"
+:usbid "0x043d" "0x0098"
+:status :unsupported
+:comment "Unsupported. See bug #310889 for details."
+
+:model "X7350"
+:url "/unsupported/lexmark-x7350.html"
+:interface "USB"
+:usbid "0x043d" "0x00b8"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "X8350"
+:url "/unsupported/lexmark-x8350.html"
+:interface "USB"
+:usbid "0x043d" "0x00b9"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+
+;********************************************************************************************
+
+:mfg "Logitech"
+
+:model "PageScan Color"
+:interface "Parport"
+:status :unsupported
+:comment "Most probably unsupported."
+
+:model "PageScan USB"
+:url "/unsupported/logitech-pagescan-usb.html"
+:interface "USB"
+:usbid "0x046d" "0x040f"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Medion/Lifetec/Tevion/Cytron"
+:url "http://www.medion.com/"
+:url "http://www.medion.de/"
+
+:model "MD 6190"
+:url "/unsupported/medion-md6190.html"
+:interface "USB"
+:usbid "0x0461" "0x0392"
+:status :unsupported
+:comment "Probably unsupported. There seem to exist two different scanners with that name. See link for details."
+
+:model "MD 6190"
+:url "/unsupported/medion-md6190.html"
+:interface "USB"
+:usbid "0x0461" "0x037b"
+:status :unsupported
+:comment "Probably unsupported. There seem to exist two different scanners with that name. See link for details."
+
+:model "MD 40420"
+:url "/unsupported/tevion-md40420.html"
+:interface "USB"
+:usbid "0x05da" "0x3008"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "MD 41260"
+:url "/unsupported/medion-md6190.html"
+:interface "USB"
+:usbid "0x0461" "0x037b"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "MD 41985"
+:url "/unsupported/medion-md6190.html"
+:interface "USB"
+:usbid "0x0461" "0x037b"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "MD 42666"
+:url "/unsupported/tevion-md40420.html"
+:interface "USB"
+:usbid "0x05da" "0x3008"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "MD 85264"
+:url "http://gkall.hobby.nl/authentec.html"
+:interface "USB"
+:usbid "0x08ff" "0x2580"
+:status :unsupported
+:comment "Fingerprint sensor. See link for details."
+
+:model "MD 90009"
+:url "/unsupported/tevion-md90009.html"
+:interface "USB"
+:usbid "0x05da" "0x30e5"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "MD 90070"
+:url "/unsupported/tevion-md90070.html"
+:interface "USB"
+:usbid "0x05da" "0x3022"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "MD 90090"
+:url "/unsupported/tevion-md90070.html"
+:interface "USB"
+:usbid "0x05da" "0x3022"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Memorex"
+:url "http://www.memorex.com/"
+
+:model "6136u"
+:url "/unsupported/memorex-maxx-6136u.html"
+:interface "USB"
+:usbid "0x0461" "0x0346"
+:status :unsupported
+:comment "Probably unsupported."
+
+:model "6142u"
+:url "/unsupported/visioneer-onetouch4400.html"
+:interface "USB"
+:usbid "0x0461" "0x0347"
+:status :unsupported
+:comment "Probably unsupported. Same as Visioneer Onetouch 4400. See link for details."
+
+:model "MaxxScan 6122"
+:url "/unsupported/trust-combiscan-19200.html"
+:interface "USB Parport"
+:usbid "0x05cb" "0x1483"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "SCF 9612P"
+:url "/unsupported/memorex-scf-9612p.html"
+:interface "Parport"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+;********************************************************************************************
+
+:mfg "Microtek"
+:url "http://www.microtek.com/"
+
+:model "ArtixScan 2020"
+:interface "SCSI"
+:status :unsupported
+:comment "Unsupported. Same as Agfa DuoScan T2000XL?"
+
+:model "ArtixScanDI 2020"
+:url "/unsupported/microtek-artixscan-2020.html"
+:interface "USB"
+:usbid "0x05da" "0x202e"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "Artixscan 2500f"
+:interface "SCSI IEEE-1384"
+:status :unsupported
+:comment "Unsupported. Same as Agfa DuoScan T2500?"
+
+:model "ArtixScan 4000tf"
+:interface "USB"
+:status :unsupported
+:comment "Unsupported. Uses ALI M5611B."
+
+:model "FilmScan 35"
+:url "/unsupported/microtek-filmscan-35.html"
+:interface "USB"
+:usbid "0x05e3" "0x0120"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "ScanMaker 336 CX"
+:interface "SCSI"
+:status :unsupported
+:comment "Probably unsupported. Seems to be similar to the Microtek 330 CX and is detected by the microtek2 backend. Scanning doesn't seem to work however."
+
+:model "Scanmaker 1850S"
+:url "/unsupported/microtek-scanmaker-1850s.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "ScanMaker 3630"
+:url "/unsupported/microtek-scanmaker-3630.html"
+:interface "USB"
+:usbid "0x0461" "0x0347"
+:status :unsupported
+:comment "Unsupported. Doesn't seem to be compatible to 3600 series, see link."
+
+:model "ScanMaker 3800"
+:url "/unsupported/microtek-scanmaker-3800.html"
+:interface "USB"
+:usbid "0x05da" "0x30ce"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 3830"
+:url "/unsupported/microtek-scanmaker-3830.html"
+:interface "USB"
+:usbid "0x05da" "0x30ce"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 3860"
+:url "/unsupported/microtek-scanmaker-3880.html"
+:interface "USB"
+:usbid "0x05da" "0x3023"
+:status :unsupported
+:comment "Unsupported. See link for more details. Appears to be similar to ScanMaker 3880."
+
+:model "ScanMaker 3880"
+:url "/unsupported/microtek-scanmaker-3880.html"
+:interface "USB"
+:usbid "0x05da" "0x3021"
+:status :unsupported
+:comment "Unsupported. SQ113 chip. See link for more details."
+
+:model "ScanMaker 4600"
+:url "/unsupported/microtek-scanmaker-4600.html"
+:interface "USB"
+:usbid "0x05da" "0x40c7"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 4700"
+:url "/unsupported/microtek-scanmaker-4700.html"
+:interface "USB"
+:usbid "0x05da" "0x20b4"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 4850"
+:url "/unsupported/microtek-scanmaker-4900.html"
+:interface "USB"
+:usbid "0x05da" "0x30d9"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "ScanMaker 4850 II"
+:url "/unsupported/microtek-scanmaker-4850-2.html"
+:interface "USB"
+:usbid "0x05da" "0x3008"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "ScanMaker 4900"
+:url "/unsupported/microtek-scanmaker-4900.html"
+:interface "USB"
+:usbid "0x05da" "0x30b9"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 5"
+:url "/unsupported/microtek-scanmaker-5600.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Probably unsupported. See link for more details."
+
+:model "ScanMaker 5600"
+:url "/unsupported/microtek-scanmaker-5600.html"
+:interface "USB"
+:usbid "0x05da" "0x20a7"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 5700"
+:interface "USB"
+:usbid "0x05da" "0x20bd"
+:status :unsupported
+:comment "Unsupported. Uses ALI M5615 like the ScanMaker 4700."
+
+:model "ScanMaker 5800"
+:url "/unsupported/microtek-scanmaker-5800.html"
+:interface "USB"
+:usbid "0x05da" "0x3008"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "ScanMaker 5800"
+:url "/unsupported/microtek-scanmaker-5800.html"
+:interface "USB"
+:usbid "0x05da" "0x30d8"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "ScanMaker 5900"
+:url "/unsupported/microtek-scanmaker-5900.html"
+:interface "USB"
+:usbid "0x05da" "0x30d8"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 5950"
+:url "/unsupported/microtek-scanmaker-5950.html"
+:interface "USB"
+:usbid "0x05da" "0x30d8"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 6000"
+:url "/unsupported/microtek-scanmaker-6000.html"
+:interface "USB"
+:usbid "0x05da" "0x30e5"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 6100"
+:url "/unsupported/microtek-scanmaker-6100.html"
+:interface "USB"
+:usbid "0x05da" "0x30e5"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "ScanMaker 6700"
+:url "/unsupported/microtek-scanmaker-6700.html"
+:interface "USB IEEE-1394"
+:usbid "0x05da" "0x20c9"
+:status :unsupported
+:comment "Unsupported. See link."
+
+:model "ScanMaker 8700"
+:status :unsupported
+:url "/unsupported/microtek-scanmaker-8700.html"
+:interface "USB IEEE-1394"
+:usbid "0x05da" "0x20b1"
+:comment "Unsupported. See link for details. USB vendor and product ids to be checked."
+
+:model "ScanMaker 9600XL"
+:interface "USB IEEE-1394"
+:usbid "0x05da" "0x20de"
+:status :unsupported
+:comment "Probably unsupported. SCSI seems to work with microtek2 backend."
+
+:model "ScanMaker 9800XL"
+:url "/unsupported/microtek-scanmaker-9800.html"
+:interface "USB SCSI"
+:usbid "0x05da" "0x20de"
+:status :unsupported
+:comment "Partly unsupported. IEEE-1394 works with microtek2 backend. See link."
+
+:model "ScanMaker i320"
+:url "/unsupported/microtek-scanmaker-i320.html"
+:interface "USB"
+:usbid "0x05da" "0x30e6"
+:status :unsupported
+:comment "Unsupported. See link."
+
+:model "ScanMaker s400"
+:url "/unsupported/microtek-scanmaker-s400.html"
+:interface "USB"
+:usbid "0x05da" "0x201c"
+:status :unsupported
+:comment "Unsupported. See link."
+
+:model "ScanMaker S400"
+:url "/unsupported/microtek-scanmaker-s400.html"
+:interface "USB"
+:usbid "0x05da" "0x300b"
+:status :unsupported
+:comment "Unsupported. See link."
+
+:model "ScanPort 3000"
+:url "/unsupported/microtek-scanport-3000.html"
+:interface "USB"
+:usbid "0x04a7" "0x0224"
+:status :unsupported
+:comment "Unsupported. Vendor/Product ids: 0x04a7/0x0224. Realtek RTS8801B?. See link for details."
+
+
+;********************************************************************************************
+
+:mfg "Konica Minolta"
+:url "http://www.konicaminolta.com/"
+
+:model "Dual Scan III"
+:url "/unsupported/minolta-dual-scan-III.html"
+:interface "USB"
+:usbid "0x0686" "0x400d"
+:status :unsupported
+:comment "Unsupported. May work with vuescan. See link for details."
+
+:model "Dual Scan IV"
+:url "/unsupported/minolta-dual-scan-IV.html"
+:interface "USB"
+:usbid "0x132b" "0x000a"
+:status :unsupported
+:comment "Unsupported. Works with vuescan. See link for details."
+
+:model "DiMAGE Scan Elite 5400"
+:url "/unsupported/minolta-dse-5400.html"
+:interface "USB IEEE-1394"
+:usbid "0x0686" "0x400e"
+:status :unsupported
+:comment "Probably unsupported. May work with vuescan. See link for details."
+
+:model "DiMAGE Scan Elite 5400 2"
+:url "/unsupported/minolta-dse-5400-2.html"
+:interface "USB"
+:usbid "0x132b" "0x0012"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "DiMAGE Scan Multi Pro"
+:url "/unsupported/minolta-dimage-scan-multi-pro.html"
+:interface "IEEE-1394"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "magicolor 2480MF"
+:interface "USB Network"
+:status :unsupported
+:comment "Uses a different scanning protocol than the magicolor 1690MF"
+
+;********************************************************************************************
+
+:mfg "Mustek" ; name a manufacturer
+:url "http://www.mustek.com/"
+:url "http://www.mustek.de/"
+:url "http://www.mustek.com.tw/"
+
+:model "1200 III EP"
+:interface "Parport"
+:status :unsupported
+:comment "Probably not supported. quarlewm at jmu dot edu offers to temporarily loan such a scanner to anyone who is interested in writing a driver."
+
+:model "2400 M"
+:interface "USB"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "BearPaw 2400 TA Pro"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:interface "USB"
+:usbid "0x055f" "0x0400"
+:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
+:status :unsupported
+
+:model "BearPaw 2448 CU Pro"
+:url "/unsupported/mustek-bearpaw-2448-cu-pro.html"
+:usbid "0x055f" "0x0408"
+:interface "USB"
+:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
+:status :unsupported
+
+:model "BearPaw 4800 TA Pro"
+:url "/unsupported/mustek-bearpaw-4800ta-pro.html"
+:interface "USB"
+:usbid "0x055f" "0x1000"
+:comment "Not supported. See link for some information."
+:status :unsupported
+
+:model "BearPaw 4800 TA Pro II"
+:url "/unsupported/mustek-bearpaw-4800ta-pro-ii.html"
+:interface "USB"
+:usbid "0x055f" "0x040a"
+:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
+:status :unsupported
+
+:model "BearPaw 6400 TA Pro"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:interface "USB"
+:usbid "0x055f" "0x040b"
+:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
+:status :unsupported
+
+:model "Paragon 800 II EP"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported. Maybe similar to 600 II EP (SCSI_over-parport)? In this case it could be supported by the mustek SCSI backend."
+
+:model "ScanExpress 600 USB"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:interface "USB"
+:usbid "0x055f" "0x0873"
+:status :unsupported
+:comment "Unsupported. Programming information is available."
+
+:model "ScanExpress 1200 USB"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:interface "USB"
+:usbid "0x055f" "0x0003"
+:status :unsupported
+:comment "Unsupported. Programming information is available."
+
+:model "ScanExpress 1200 USB Plus"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:interface "USB"
+:usbid "0x055f" "0x0007"
+:status :unsupported
+:comment "Unsupported."
+
+:model "ScanExpress 12000 P"
+:url "http://penguin-breeder.org/?page=mustek_pp"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported. Asic 1505/05."
+
+:model "ScanExpress A3 EP"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported. Maybe it will be supported by the mustek_pp backend in future."
+
+:model "ScanExpress CardSmart"
+:url "http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED"
+:interface "USB"
+:status :unsupported
+:comment "Probably unsupported. USB business card scanner. Maybe works as USB storage device?"
+
+:model "ScanMagic 9636P"
+:url "http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html"
+:interface "Parport"
+:status :unsupported
+:comment "Probably not supported. Same as Mustek 12000 P?. ASIC 1505."
+
+;********************************************************************************************
+
+:mfg "NEC"
+:url "http://www.nevt.co.jp/"
+
+:model "Petiscan"
+:url "/unsupported/nec-petiscan.html"
+:interface "USB"
+:usbid "0x0475" "0x0100"
+:status :unsupported
+:comment "Most probably unsupported. See link for details. Vendor ID is Relisys/Teco. Not known if it is similar to other Relisys/Teco USB scanners."
+
+;********************************************************************************************
+
+:mfg "Nikon"
+:url "http://www.nikon.com/"
+
+:model "LS-9000 ED"
+:url "/unsupported/nikon-ls9000-ed.html"
+:interface "IEEE-1394"
+:status :unsupported
+:comment "Probably not supported. See link for details. Possibly similar to LS-8000 ED."
+
+;********************************************************************************************
+
+:mfg "Olivetti"
+:url "http://www.olivetti.com"
+
+:model "Job-Jet M400"
+:url "/unsupported/olivetti-job-jet-m400.html"
+:interface "USB"
+:usbid "0x0b3c" "0xa880"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+;********************************************************************************************
+
+:mfg "Olympus"
+:url "http://www.olympus.com"
+
+:model "ES-10P"
+:url "http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html"
+:interface "Parport"
+:status :unsupported
+
+:model "ES-10S"
+:url "/unsupported/olympus-es10s.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Optoelectronics"
+
+:model "Barcode scanner"
+:interface "USB"
+:usbid "0x065a" "0x0001"
+:status :unsupported
+:comment "Probably not supported."
+
+;********************************************************************************************
+
+:mfg "Optrox"
+
+:model "PhotoMaker 3C"
+:url "http://www.df.lth.se/~triad/krad/optrox/"
+:interface "Parport"
+:status :unsupported
+
+:model "PhotoMaker 3E"
+:url "http://www.df.lth.se/~triad/krad/optrox/"
+:interface "Parport"
+:status :unsupported
+
+:model "PhotoMaker 3F"
+:url "http://www.df.lth.se/~triad/krad/optrox/"
+:interface "Proprietary"
+:status :unsupported
+:comment "Special ISA card"
+
+:model "PhotoMaker 3S"
+:url "http://www.df.lth.se/~triad/krad/optrox/"
+:interface "Parport"
+:status :unsupported
+
+:model "PhotoMaker 6E"
+:url "http://www.df.lth.se/~triad/krad/optrox/"
+:interface "Parport"
+:status :unsupported
+
+:model "PhotoMaker 6F"
+:url "http://www.df.lth.se/~triad/krad/optrox/"
+:interface "Proprietary"
+:status :unsupported
+:comment "Special ISA card"
+
+;********************************************************************************************
+
+:mfg "Panasonic"
+
+:model "KV-SS905C"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend. See http://code.google.com/p/kvss905c/ for a standalone scanning tool."
+
+:model "KV-S2055W"
+:interface "USB SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S2055L"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S2065W"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S3065CW"
+:interface "USB SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S3065CL"
+:interface "USB SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S3085"
+:interface "USB SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S3105C"
+:interface "USB SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend. See http://code.google.com/p/kvss905c/ for a standalone scanning tool."
+
+:model "KV-S6040W"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S6045W"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S6050W"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S6055W"
+:interface "SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+:model "KV-S7065C"
+:interface "USB SCSI"
+:status :unsupported
+:comment "might be supported by matsushita backend."
+
+;********************************************************************************************
+
+:mfg "Pentax"
+
+:model "DSmobile USB"
+:url "/unsupported/syscan-travelscan-pro.html"
+:interface "USB"
+:usbid "0x0a82" "0x2000"
+:status :unsupported
+:comment "Probably not supported. Some information is available."
+
+;********************************************************************************************
+
+:mfg "PIE"
+:url "http://www.scanace.com/"
+:comment "Pacific Image Electronics"
+
+:model "Primefilm 1800u"
+:url "/unsupported/pie-1800u.html"
+:interface "USB"
+:usbid "0x05e3" "0x0120"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "Primefilm 2700"
+:interface "USB"
+:status :unsupported
+:url "http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html"
+
+:model "Primefilm 3600PRO"
+:interface "USB IEEE-1394"
+:status :unsupported
+:comment "Probably not supported. "
+
+:model "Powerslide 3600"
+:url "/unsupported/reflecta-digitdia-3600.html"
+:interface "USB IEEE-1394"
+:usbid "0x05e3" "0x0142"
+:status :unsupported
+:comment "Probably unsupported. Film scanner that can scan directly from the magazine."
+
+:model "PF3650 Pro3 Film Scanner"
+:url "/unsupported/pie-pf3650.html"
+:interface "USB IEEE-1394"
+:usbid "0x05e3" "0x0143"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+;********************************************************************************************
+
+;:mfg "Packard Bell"
+
+;********************************************************************************************
+
+:mfg "Plustek"
+:url "http://www.plustek.de/"
+:url "http://www.plustek.com/"
+
+:model "OpticFilm 7200"
+:url "/unsupported/plustek-opticfilm-7200.html"
+:interface "USB"
+:usbid "0x07b3" "0x0807"
+:status :unsupported
+:comment "GL842 based, maybe to be added to genesys backend"
+
+:model "OpticFilm 7200i"
+:interface "USB"
+:usbid "0x07b3" "0x0c04"
+:status :unsupported
+:comment "GL843 based, maybe to be added to genesys backend"
+
+:model "OpticPro A3U"
+:interface "USB"
+:status :unsupported
+:comment "Uses Plustek ASIC P99002"
+
+:model "OpticPro S6"
+:interface "USB"
+:status :unsupported
+:comment "Uses RealTek chipset (RTL8801D)"
+
+:model "OpticPro S12"
+:url "/unsupported/plustek-opticpro-st12.html"
+:interface "USB"
+:usbid "0x07b3" "0x0600"
+:status :unsupported
+:comment "Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend."
+
+:model "OpticPro ST12"
+:url "/unsupported/plustek-opticpro-st12.html"
+:interface "USB"
+:usbid "0x07b3" "0x0600"
+:status :unsupported
+:comment "Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend."
+
+:model "OpticPro ST16"
+:url "/unsupported/plustek-opticpro-st16.html"
+:interface "USB"
+:usbid "0x07b3" "0x0600"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend"
+
+:model "OpticPro UA18"
+:interface "USB"
+:status :unsupported
+:comment "Probably LM983x based."
+
+:model "OpticPro S24"
+:url "/unsupported/plustek-opticpro-st24.html"
+:interface "USB"
+:usbid "0x07b3" "0x0601"
+:status :unsupported
+:comment "Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend."
+
+:model "OpticPro ST24"
+:url "/unsupported/plustek-opticpro-st24.html"
+:interface "USB"
+:usbid "0x07b3" "0x0601"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend"
+
+:model "OpticPro S28"
+:interface "USB"
+:url "/unsupported/plustek-opticpro-s28.html"
+:usbid "0x07b3" "0x0801"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "OpticPro ST28"
+:url "/unsupported/plustek-opticpro-s28.html"
+:interface "USB"
+:usbid "0x07b3" "0x0801"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "OpticPro ST28"
+:url "/unsupported/plustek-opticpro-st28.html"
+:interface "USB"
+:usbid "0x07b3" "0x0802"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "Umax AstraScan 4750"
+:url "/unsupported/umax-astrscan-4750.html"
+:interface "USB"
+:usbid "0x07b3" "0x0802"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend, rebadged Plustek ST28"
+
+:model "OpticPro ST48"
+:url "/unsupported/plustek-opticpro-st48.html"
+:interface "USB"
+:usbid "0x07b3" "0x0800"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "OpticPro ST64"
+:url "/unsupported/plustek-opticpro-st64.html"
+:interface "USB"
+:usbid "0x07b3" "0x0c00"
+:status :unsupported
+:comment "GL843 based, maybe to be added to genesys backend"
+
+:model "OpticPro ST64+"
+:url "/unsupported/plustek-opticpro-st64plus.html"
+:interface "USB"
+:usbid "0x07b3" "0x0c03"
+:status :unsupported
+:comment "GL843 based. See link for more details."
+
+:model "PL 806"
+:url "/unsupported/plustek-pl806.html"
+:interface "USB"
+:usbid "0x07b3" "0x0c0c"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "SmartOffice PL 812"
+:url "/unsupported/plustek-pl812.html"
+:interface "USB"
+:usbid "0x07b3" "0x0c0d"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "OpticSlim 500"
+:url "/unsupported/plustek-opticslim-500.html"
+:interface "USB"
+:usbid "0x07b3" "0x0458"
+:status :unsupported
+:comment "Unsupported. See link for more details."
+
+:model "OpticSlim 2420"
+:url "/unsupported/plustek-opticslim-2420.html"
+:interface "USB"
+:usbid "0x07b3" "0x0806"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "OpticSlim 2420+"
+:url "/unsupported/plustek-opticslim-2420plus.html"
+:interface "USB"
+:usbid "0x07b3" "0x0914"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "OpticWorks 2000"
+:interface "Parport"
+:status :unsupported
+:comment "Multifunction device. No further information available."
+
+:model "OptiCard 600+"
+:interface "USB"
+:status :unsupported
+:comment "Business card reader. No further information available."
+
+:model "ScanCopy 115"
+:url "/unsupported/plustek-scancopy-115.html"
+:interface "USB"
+:usbid "0x07b3" "0x081c"
+:status :unsupported
+:comment "GL841 based, to be added to genesys backend"
+
+:model "Spectra ADF"
+:interface "Proprietary"
+:status :unsupported
+:comment "Unsupported. Uses proprietary ISA card that also provides power and is labelled GPS-1 PAGE-A from Taiwan. Other labels on the scanner include ADF Color Scanner and SF600AS. Maybe the same as the IBM ADF Color Scanner?"
+
+:model "Unknown Plustek Device"
+:interface "USB"
+:usbid "0x07b3" "0x0005"
+:status :unsupported
+:comment "Probably unsupported. Scanner name not known yet."
+
+:model "Unknown Plustek Device"
+:interface "USB"
+:usbid "0x07b3" "0x0007"
+:status :unsupported
+:comment "Probably unsupported. Scanner name not known yet."
+
+:model "Unknown Plustek Device"
+:interface "USB"
+:usbid "0x07b3" "0x000f"
+:status :unsupported
+:comment "Probably unsupported. Scanner name not known yet."
+
+:model "Unknown Plustek Device"
+:interface "USB"
+:usbid "0x07b3" "0x0012"
+:status :unsupported
+:comment "Probably unsupported. Scanner name not known yet."
+
+:model "Unknown Plustek Device"
+:interface "USB"
+:usbid "0x07b3" "0x0014"
+:status :unsupported
+:comment "Probably unsupported. Scanner name not known yet."
+
+:model "Unknown Plustek Device"
+:interface "USB"
+:usbid "0x07b3" "0x0016"
+:status :unsupported
+:comment "Probably unsupported. Scanner name not known yet."
+
+;********************************************************************************************
+
+:mfg "PLANon"
+:url "http://www.planon.com/"
+
+:model "DocuPen RC800"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported. No details known."
+
+:model "DocuPen R700"
+:url "/unsupported/planon-docupen-r700.html"
+:interface "USB"
+:usbid "0x10c4" "0xea60"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "DocuPen (DPEN-BW)"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported. No details known."
+
+;********************************************************************************************
+
+:mfg "Primax"
+:url "http://www.primax.nl/"
+
+:model "Colorado 600U"
+:url "/unsupported/primax-colorado-600u.html"
+:interface "USB"
+:usbid "0x0461" "0x0341"
+:status :unsupported
+:comment "Not supported. Some information is available."
+
+:model "Colorado 1200p"
+:interface "Parport"
+:url "http://home2.swipnet.se/~w-25069/pxscan.html"
+:status :unsupported
+:comment "Unsupported by SANE. But is reported to partly work with pxscan. See link."
+
+:model "Colorado 1200u"
+:interface "USB"
+:usbid "0x0461" "0x0361"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "Primascan Colorado 2600u"
+:url "/unsupported/visioneer-onetouch4400.html"
+:interface "USB"
+:usbid "0x0461" "0x0347"
+:status :unsupported
+:comment "Unsupported. Same as Visioneer Onetouch 4400. See link for details."
+
+:model "Colorado Direct 600"
+:url "http://home2.swipnet.se/~w-25069/pxscan.html"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported. However, a stand-alone program is available."
+
+:model "Colorado Direct 9600"
+:url "http://home2.swipnet.se/~w-25069/pxscan.html"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported. However, a stand-alone program is available."
+
+:model "Colorado USB 9600"
+:url "/unsupported/primax-colorado-usb-9600.html"
+:interface "USB"
+:usbid "0x0461" "0x0340"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "G2-300"
+:interface "USB"
+:usbid "0x0461" "0x0300"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "G2-300 #2"
+:interface "USB"
+:usbid "0x0461" "0x0302"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "G2E-300"
+:interface "USB"
+:usbid "0x0461" "0x0301"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "G2E-300 #2"
+:usbid "0x0461" "0x0303"
+:interface "USB"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "G2-600"
+:usbid "0x0461" "0x0380"
+:interface "USB"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "G2-600 #2"
+:interface "USB"
+:usbid "0x0461" "0x0382"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "G2E-600"
+:usbid "0x0461" "0x0383"
+:interface "USB"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "OneTouch 5300"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported."
+
+:model "ReadyScan 636i"
+:usbid "0x0461" "0x0381"
+:interface "USB"
+:status :unsupported
+:comment "Probably unsupported. No details known."
+
+:model "Slim-Line 1200"
+:interface "USB"
+:status :unsupported
+:comment "Maybe GL646. Maybe similar to Medion MD 6228?"
+
+:model "Onetouch 8920"
+:url "/unsupported/visioneer-onetouch8920.html"
+:interface "USB"
+:usbid "0x0461" "0x0371"
+:status :unsupported
+:comment "Not supported. Look similar to Visioneer Onetouch 8920 (same USB product id)."
+
+;********************************************************************************************
+
+:mfg "Prolink"
+:url "http://www.fida.com/"
+
+:model "Winscan Pro 2448U"
+:url "/unsupported/prolink-2448u.html"
+:interface "USB"
+:usbid "0x06dc" "0x0014"
+:status :unsupported
+:comment "Not supported. Some information is available. RealTek RTS8801."
+
+:model "Winscan Pro 2000"
+:interface "USB Parport"
+:status :unsupported
+:comment "Not supported. No further information available."
+
+;********************************************************************************************
+
+:mfg "Quato"
+:url "http://www.quato.de/"
+
+:model "X-Finity"
+:interface "SCSI"
+:status :unsupported
+:comment "Probably not supported. No details yet. Originally manufactured by PFU?"
+
+:model "X-Finity Ultra"
+:interface "USB IEEE-1394"
+:status :unsupported
+:comment "Probably not supported. No details yet."
+
+;********************************************************************************************
+
+:mfg "Reflecta"
+
+:model "DigitDia 3600"
+:url "/unsupported/reflecta-digitdia-3600.html"
+:interface "USB IEEE-1394"
+:usbid "0x05e3" "0x0142"
+:status :unsupported
+:comment "Film scanner that can scan directly from the magazine."
+
+:model "iScan 1800"
+:url "/unsupported/reflecta-iscan-1800.html"
+:interface "USB"
+:usbid "0x05e3" "0x0120"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "ProScan 4000"
+:url "/unsupported/reflecta-proscan-4000.html"
+:interface "USB IEEE-1394"
+:usbid "0x05e3" "0x0143"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Relisys"
+
+:model "Eclipse 1200U"
+:url "/unsupported/relisys-eclipse-1200u.html"
+:interface "USB"
+:usbid "0x0475" "0x0103"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "Scorpio Ultra 3"
+:url "/unsupported/relisys-scorpio-ultra3.html"
+:interface "USB"
+:usbid "0x0475" "0x0210"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "Episode"
+:url "/unsupported/relisys-episode.html"
+:interface "USB"
+:usbid "0x0475" "0x0103"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+:model "AVEC II E3"
+:interface "Parport"
+:status :unsupported
+:comment "Parport version of AVEC II S3?. See bug #304992 for details"
+
+;********************************************************************************************
+
+:mfg "Samsung"
+
+:model "SCX-4725FN"
+:url "/unsupported/samsung-scx-4725.html"
+:interface "USB"
+:usbid "0x04e8" "0x341f"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Scanshell"
+
+:model "800N"
+:url "/unsupported/scanshell-800n.html"
+:interface "USB"
+:usbid "0x0a82" "0x6605"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Sicos"
+
+:model "DMS 2000"
+:url "mailto:ehaase@inf.fu-berlin.de"
+:interface "proprietary"
+:status :unsupported
+:comment "Not supported until now. Work on a backend has started, contact the author for details (see link)"
+
+;********************************************************************************************
+
+:mfg "Siemens" ; name a manufacturer
+:url "http://www.siemens.com/"
+
+:model "ID Mouse Professional"
+:interface "USB"
+:usbid "0x0681" "0x0005"
+:status :unsupported
+:comment "Not supported."
+
+:model "Cherry FingerTIP ID Board - Sensor"
+:interface "USB"
+:usbid "0x0681" "0x0010"
+:status :unsupported
+:comment "Not supported."
+
+;********************************************************************************************
+
+:mfg "SmartDisk"
+
+:model "SmartScan 3600"
+:interface "USB IEEE-1394"
+:status :unsupported
+:comment "Probably not supported. Same as PIE Primefilm 2600 PRO."
+
+;********************************************************************************************
+
+:mfg "Spot Technology"
+:comment "Spot seems have gone out of business."
+
+:model "Maxiscan A4"
+:url "http://www.el-profesor.net/spoonset/"
+:interface "proprietary"
+:status :unsupported
+:comment "Not supported until now. Work on a backend has started, see link for more information."
+
+:model "ScanTak 2c"
+:url "http://www.el-profesor.net/spoonset"
+:interface "proprietary"
+:status :unsupported
+:comment "Not supported. Work on a backend has started, see link for more information."
+
+:model "ScanTak 3c"
+:url "http://www.el-profesor.net/spoonset"
+:interface "proprietary"
+:status :unsupported
+:comment "Not supported. Work on a backend has started, see link for more information."
+
+;********************************************************************************************
+
+:mfg "Syscan"
+
+:model "TravelScan FS-531"
+:url "/unsupported/syscan-travelscan-fs531.html"
+:interface "USB"
+:usbid "0x0a82" "0x0530"
+:status :unsupported
+:comment "Not supported. May work with the Plustek backend in future. See link for details."
+
+:model "TravelScan Pro"
+:url "/unsupported/syscan-travelscan-pro.html"
+:interface "USB"
+:usbid "0x0a82" "0x2000"
+:status :unsupported
+:comment "Probably not supported. Some information is available."
+
+;********************************************************************************************
+
+:mfg "Tamarack"
+
+:model "Artiscan 9600" ; name models for above-specified mfg.
+:interface "Parport"
+:status :unsupported
+:url "http://www.autistici.org/tamarhack/"
+:comment "Unsupported at the moment. See link for a project for that scanner taht may support it in future."
+
+:model "Artiscan 9600 pro 36" ; name models for above-specified mfg.
+:interface "Parport"
+:status :unsupported
+:url "http://www.autistici.org/tamarhack/"
+:comment "Unsupported at the moment. See link for a project for that scanner."
+
+:model "Artiscan 2400FS"
+:url "/unsupported/tamarack-artiscan-2400.html"
+:interface "USB"
+:usbid "0x05e3" "0x0100"
+:status :unsupported
+:comment "Unsupported. See link for more information."
+
+;********************************************************************************************
+
+:mfg "TCE"
+:comment "Brasilian vendor."
+:url "http://www.tce.com.br/"
+
+:model "MK600U"
+:url "/unsupported/memorex-maxx-6136u.html"
+:interface "USB"
+:usbid "0x0461" "0x0346"
+:status :unsupported
+:comment "Not supported. Some information is available."
+
+:model "S450"
+:url "http://home2.swipnet.se/~w-25069/pxscan.html"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported by SANE but is reported to work with pxscan (see link)."
+
+;********************************************************************************************
+
+:mfg "Teco"
+:url "http://www.tecoimage.com.tw/"
+
+:model "VM6509F"
+:url "/unsupported/teco-vm6509.html"
+:interface "USB"
+:usbid "0x080d" "0x0102"
+:status :unsupported
+:comment "Probably unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Tiny"
+
+:model "FU661E"
+:url "/unsupported/visioneer-onetouch4400.html"
+:interface "USB"
+:usbid "0x0461" "0x0347"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "Trust"
+:url "http://www.trust-site.com"
+
+:model "CombiScan 19200"
+:url "/unsupported/trust-combiscan-19200.html"
+:interface "Parport USB"
+:usbid "0x05cb" "0x1483"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "EasyScan 19200"
+:url "http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html"
+:interface "Parport"
+:status :unsupported
+
+:model "SCSI Scan 19200 -Excellence Series-"
+:url "/unsupported/trust-scsi-scan-19200.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+;********************************************************************************************
+
+:mfg "UMAX"
+:url "http://www.umax.com/"
+
+:model "Astra 2500"
+:url "/unsupported/umax-astra-2500.html"
+:interface "USB"
+:usbid "0x0461" "0x0374"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "Astra 2850"
+:url "/unsupported/plustek-opticpro-st24.html"
+:interface "USB"
+:usbid "0x07b3" "0x0601"
+:status :unsupported
+:comment "Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details."
+
+:model "Astra 3000"
+:url "/unsupported/umax-astra-3000.html"
+:interface "USB"
+:usbid "0x0461" "0x038a"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "Astra 3600"
+:url "/unsupported/umax-astra-3600.html"
+:interface "USB"
+:usbid "0x0461" "0x038a"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "Astra 4000"
+:url "/unsupported/umax-astra-4000.html"
+:interface "USB"
+:usbid "0x1606" "0x1030"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "Astra 4100"
+:url "/unsupported/umax-astra-4100.html"
+:interface "USB"
+:usbid "0x0461" "0x038c"
+:status :unsupported
+:comment "Not supported, to be added to genesys backend."
+
+:model "Astra 4500"
+:url "/unsupported/umax-astra-4500.html"
+:interface "USB"
+:usbid "0x0638" "0x0a10"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend. Avision iVina FB1600 clone"
+
+:model "Astra 4600"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported, no details known."
+
+:model "Astra 4700"
+:url "/unsupported/umax-astra-4700.html"
+:interface "USB"
+:usbid "0x0638" "0x0a20"
+:status :unsupported
+:comment "GL646/GL660 based. Avision iVina FB1800 clone."
+
+:model "Astra 6700"
+:interface "USB"
+:status :unsupported
+:comment "Not supported. No chipset information available. Same as Avision iVina FB2400."
+
+:model "AstraSlim"
+:url "/unsupported/umax-astraslim.html"
+:usbid "0x080d" "0x0104"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported currently. See link for more details."
+
+:model "AstraSlim 1200"
+:url "/unsupported/umax-astraslim-1200.html"
+:interface "USB"
+:usbid "0x080d" "0x0110"
+:status :unsupported
+:comment "See link for more details."
+
+:model "AstraSlim 6000"
+:url "/unsupported/umax-astraslim-6000.html"
+:interface "USB"
+:usbid "0x080d" "0x0104"
+:status :unsupported
+:comment "Probably not supported currently. See link for more details."
+
+:model "Nete3470'"
+:interface "Parport"
+:status :unsupported
+:comment "Probably not supported. No details known.."
+
+:model "Powerlook 180"
+:url "/unsupported/umax-powerlook-180.html"
+:interface "USB"
+;:usbid "0x3902" "0xc470" #correct?
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "Powerlook 1000 USB"
+:interface "USB"
+:status :unsupported
+:comment "Probably not supported. No further information available."
+
+;********************************************************************************************
+
+:mfg "Vantas"
+
+:model "3000"
+:url "/unsupported/visioneer-onetouch4800.html"
+:interface "USB"
+:usbid "0x04a7" "0x0224"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+;********************************************************************************************
+
+:mfg "Visioneer"
+:url "http://www.visioneer.com/"
+
+:model "6200"
+:interface "USB"
+:usbid "0x0461" "0x0345"
+:status :unsupported
+:comment "Not supported. Is reported to use the E5 chipset. Uses a Primax ID. Looks similar to Primascan Colorado 2600u."
+
+:model "6200 EPP/USB"
+:interface "USB"
+:usbid "0x04a7" "0x0311"
+:status :unsupported
+:comment "Not supported. Id is from Primax? Yet another scanner with the same name?"
+
+:model "9420"
+:url "/unsupported/visioneer-9420.html"
+:interface "USB"
+:usbid "0x0461" "0x03a8"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "9450 USB"
+:url "/unsupported/visioneer-9450-usb.html"
+:interface "USB"
+:usbid "0x04a7" "0x0421"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "Onetouch 4400"
+:url "/unsupported/visioneer-onetouch4400.html"
+:interface "USB"
+:usbid "0x0461" "0x0347"
+:status :unsupported
+:comment "Not supported. E5 chipset? See link for more details."
+
+:model "OneTouch 4800 USB"
+:url "/unsupported/visioneer-onetouch4800.html"
+:interface "USB"
+:usbid "0x04a7" "0x0224"
+:status :unsupported
+:comment "Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details."
+
+:model "OneTouch 5300 USB"
+:url "/unsupported/visioneer-onetouch5300.html"
+:interface "USB"
+:usbid "0x04a7" "0x0226"
+:status :unsupported
+:comment "Not supported. Chipset is RTS8801B(?). See link for output of /proc/bus/usb/devices."
+
+:model "OneTouch 5300"
+:interface "USB"
+:usbid "0x04a7" "0x0221"
+:status :unsupported
+:comment "Not supported. Yet another scanner with this name?"
+
+:model "OneTouch 5800 USB"
+:url "/unsupported/visioneer-onetouch5800.html"
+:interface "USB"
+:usbid "0x04a7" "0x0226"
+:status :unsupported
+:comment "Unsupported. 48 bit scanner, doesn't work with viceo backend. RTS8801C."
+
+:model "OneTouch 6600"
+:url "/unsupported/visioneer-onetouch6600.html"
+:interface "USB"
+:usbid "0x04a7" "0x022a"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "Onetouch 7100"
+:url "/unsupported/visioneer-onetouch7100.html"
+:interface "USB"
+:usbid "0x04a7" "0x0229"
+:status :unsupported
+:comment "GL646 based, to be added to genesys backend"
+
+:model "Onetouch 7700"
+:url "/unsupported/visioneer-onetouch7700.html"
+:interface "USB"
+:usbid "0x04a7" "0x0380"
+:status :unsupported
+:comment "LM9832/3 based, to be added to plustek backend"
+
+:model "OneTouch 8100"
+:url "/unsupported/visioneer-onetouch8100.html"
+:interface "USB"
+:usbid "0x04a7" "0x0321"
+:status :unsupported
+:comment "Unsupported. See link for details."
+
+:model "Onetouch 8700"
+:url "/unsupported/visioneer-onetouch8920.html"
+:interface "USB"
+:usbid "0x04a7" "0x0371"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "Onetouch 8900"
+:url "/unsupported/visioneer-onetouch8920.html"
+:interface "USB"
+:usbid "0x04a7" "0x0371"
+:status :unsupported
+:comment "Not supported. Same as 8920 but without TA?"
+
+:model "Onetouch 8920"
+:url "/unsupported/visioneer-onetouch8920.html"
+:interface "USB"
+:usbid "0x04a7" "0x0371"
+:status :unsupported
+:comment "Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices."
+
+:model "Onetouch 9000"
+:url "/unsupported/visioneer-onetouch9020.html"
+:interface "USB"
+:usbid "0x04a7" "0x022c"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "Onetouch 9020"
+:url "/unsupported/visioneer-onetouch9020.html"
+:interface "USB"
+:usbid "0x04a7" "0x022c"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+:model "Onetouch 9320"
+:url "/unsupported/visioneer-onetouch9320.html"
+:interface "USB"
+:usbid "0x04a7" "0x0362"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "Onetouch Pro 8800"
+:url "/unsupported/visioneer-onetouch8820.html"
+:interface "USB"
+:usbid "0x04a7" "0x0410"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "Onetouch Pro 8820"
+:url "/unsupported/visioneer-onetouch8820.html"
+:interface "USB"
+:usbid "0x04a7" "0x0410"
+:status :unsupported
+:comment "Probably not supported. See link for details."
+
+:model "PaperPort 3100b"
+:url "/unsupported/visioneer-paperport-3100b.html"
+:interface "Parport"
+:status :unsupported
+:comment "Most probably not supported. See link for details."
+
+:model "PaperPort 6100"
+:interface "Parport"
+:status :unsupported
+:comment "Most probably not supported. More details would be appreciated."
+
+:model "PaperPort OneTouch"
+:url "/unsupported/visioneer-paperport-onetouch.html"
+:interface "Parport"
+:status :unsupported
+:comment "Most probably not supported. See link for details."
+
+:model "Strobe Pro USB"
+:url "/unsupported/visioneer-strobe-pro-usb.html"
+:interface "USB"
+:usbid "0x04a7" "0x0102"
+:status :unsupported
+:comment "Not supported. See link for details."
+
+;********************************************************************************************
+
+:model "4800 One Touch"
+:url "/unsupported/xerox-4800-onetouch.html"
+:interface "USB"
+:usbid "0x04a7" "0x03a0"
+:status :unsupported
+:comment "Unsupported. See link for details. Different id compared to One Touch 4800?"
+
+:model "DocuImage 620S"
+:url "/unsupported/xerox-docuimage-620s.html"
+:interface "SCSI"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "DocuMate 510"
+:url "/unsupported/xerox-documate-510.html"
+:interface "USB"
+:status :unsupported
+:usbid "0x04a7" "0x0446"
+:comment "Not supported. See link for more details."
+
+:model "DocuMate 510"
+:url "/unsupported/xerox-documate-510.html"
+:interface "USB"
+:status :unsupported
+:usbid "0x04a7" "0x047c"
+:comment "Not supported. See link for more details. Yet another USB id."
+
+:model "One Touch 4800"
+:url "/unsupported/visioneer-onetouch4800.html"
+:interface "USB"
+:usbid "0x04a7" "0x0224"
+:status :unsupported
+:comment "Unsupported. See link for details. Different id compared to 4800 One Touch?"
+
+:model "WorkCentre 470cx"
+:url "/unsupported/xerox-workcentre-470cx.html"
+:interface "Parport"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "WorkCentre M15i"
+:url "/unsupported/xerox-workcentre-m15i.html"
+:interface "USB"
+:usbid "0x0924" "0xffef"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "WorkCentre XK35c"
+:url "/unsupported/xerox-workcentre-xk35c.html"
+:interface "USB Parport"
+:usbid "0x043d" "0x0020"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "WorkCentre XK50cx"
+:url "/unsupported/xerox-workcentre-xk50cx.html"
+:interface "USB"
+:usbid "0x04e8" "0x3903"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "WorkCentre Pro 412"
+:url "/unsupported/xerox-workcentre-pro412.html"
+:interface "USB Parport"
+:usbid "0x043d" "0x4303"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "WorkCentre PE16"
+:url "/unsupported/xerox-workcentre-pe16.html"
+:interface "USB Parport"
+:usbid "0x0924" "0x4220"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+:model "WorkCentre PE120i"
+:url "/unsupported/xerox-workcentre-pe120i.html"
+:interface "USB"
+:usbid "0x0924" "0x4237"
+:status :unsupported
+:comment "Not supported. See link for more details."
+
+
+;********************************************************************************************
+;********************************************************************************************
+;********************************************************************************************
+
+:devicetype :vidcam
+
+:mfg "Biolux"
+
+:model "654 (micrOcular)"
+:url "/unsupported/biolux-654.html"
+:interface "USB"
+:usbid "0x0923" "0x010f"
+:status :unsupported
+:comment "Not supported yet. See link for more details."
+
+
+;********************************************************************************************
+
+:mfg "Grandtek Scopecam"
+
+:model "8x30 Binocular & Digital Camera"
+:url "/unsupported/grandtech-scopecam.html"
+:interface "USB"
+:usbid "0x0797" "0x801c"
+:status :unsupported
+:comment "Not Supported yet. See link for more details."
+
+
+;********************************************************************************************
+
+
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
+
diff --git a/doc/descriptions/v4l.desc b/doc/descriptions/v4l.desc
new file mode 100644
index 0000000..d585a94
--- /dev/null
+++ b/doc/descriptions/v4l.desc
@@ -0,0 +1,25 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+
+:backend "v4l" ; name of backend
+:version "1.0-3" ; version of backend
+:manpage "sane-v4l" ; name of manpage (if it exists)
+:url "mailto:henning@meier-geinitz.de" ; backend's web page
+
+:devicetype :api ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+
+:desc "Interface to Video For Linux API" ; describe a non-hardware device
+:comment "Supports video cameras and other devices accessed by the v4l kernel API, e.g. bttv devices. Quite a lot of known bugs."
+; :comment and :url specifiers are optional after :mfg, :model, :desc,
+; and at the top-level.
diff --git a/doc/descriptions/xerox_mfp.desc b/doc/descriptions/xerox_mfp.desc
new file mode 100644
index 0000000..59b56dd
--- /dev/null
+++ b/doc/descriptions/xerox_mfp.desc
@@ -0,0 +1,354 @@
+:backend "xerox_mfp"
+:version "1.0-13"
+:manpage "sane-xerox_mfp"
+:devicetype :scanner
+
+:mfg "Xerox"
+:url "http://www.office.xerox.com/"
+
+:model "Phaser 6110MFP"
+:interface "USB"
+:usbid "0x0924" "0x3d5d"
+:status :good
+
+:model "Phaser 3200MFP"
+:interface "USB"
+:usbid "0x0924" "0x3da4"
+:status :complete
+:url "http://www.office.xerox.com/multifunction-printer/multifunction-under-30ppm/phaser-3200mfp/spec-enus.html"
+
+:model "WorkCentre 3119 Series"
+:interface "USB"
+:usbid "0x0924" "0x4265"
+:status :good
+
+:model "WorkCentre 4118 Series"
+:interface "USB"
+:usbid "0x0924" "0x420c"
+:status :good
+
+:model "WorkCentre 3210"
+:interface "USB"
+:usbid "0x0924" "0x4293"
+:status :good
+
+:model "WorkCentre 3220"
+:interface "USB"
+:usbid "0x0924" "0x4294"
+:status :good
+
+:mfg "Dell"
+:url "http://www.dell.com/"
+
+:model "Dell MFP Laser Printer 1815dn"
+:interface "USB"
+:usbid "0x413c" "0x5124"
+:status :good
+
+:model "Dell 1235cn"
+:interface "USB"
+:usbid "0x413c" "0x5310"
+:status :good
+
+:mfg "Samsung"
+:url "http://www.samsung.com"
+
+:model "SCX-4x16"
+:interface "USB"
+:usbid "0x04e8" "0x3409"
+:status :untested
+
+:model "SCX-6x20"
+:interface "USB"
+:usbid "0x04e8" "0x340d"
+:status :untested
+
+:model "MFP-560"
+:interface "USB"
+:usbid "0x04e8" "0x340e"
+:status :untested
+
+:model "MFP-750"
+:interface "USB"
+:usbid "0x04e8" "0x340f"
+:status :untested
+
+:model "SCX-4x20"
+:interface "USB"
+:usbid "0x04e8" "0x3412"
+:status :untested
+
+:model "SCX-4100"
+:interface "USB"
+:usbid "0x04e8" "0x3413"
+:status :good
+
+:model "SCX-4x21"
+:interface "USB"
+:usbid "0x04e8" "0x3419"
+:status :untested
+
+:model "SCX-5x30"
+:interface "USB"
+:usbid "0x04e8" "0x341a"
+:status :untested
+
+:model "SCX-4200"
+:interface "USB"
+:usbid "0x04e8" "0x341b"
+:status :good
+
+:model "CLX-3160"
+:interface "USB"
+:usbid "0x04e8" "0x341c"
+:status :untested
+
+:model "SCX-6x22"
+:interface "USB"
+:usbid "0x04e8" "0x341d"
+:status :untested
+
+:model "SCX4725"
+:interface "USB"
+:usbid "0x04e8" "0x341f"
+:status :untested
+
+:model "SCX4725-FN"
+:interface "USB"
+:usbid "0x04e8" "0x341f"
+:status :good
+
+:model "SCX-6x45"
+:interface "USB"
+:usbid "0x04e8" "0x3420"
+:status :untested
+
+:model "CLX-8380"
+:interface "USB"
+:usbid "0x04e8" "0x3421"
+:status :untested
+
+:model "CLX-2160"
+:interface "USB"
+:usbid "0x04e8" "0x3425"
+:status :good
+
+:model "SCX-4500"
+:interface "USB"
+:usbid "0x04e8" "0x3426"
+:status :good
+
+:model "CLX-6200"
+:interface "USB"
+:usbid "0x04e8" "0x3427"
+:status :untested
+
+:model "CLX-6240"
+:interface "USB"
+:usbid "0x04e8" "0x3428"
+:status :untested
+
+:model "SCX-6x55"
+:interface "USB"
+:usbid "0x04e8" "0x3429"
+:status :good
+
+:model "CLX-3170fn (CLX-3170 Series)"
+:interface "USB"
+:usbid "0x04e8" "0x342a"
+:status :good
+
+:model "CLX-3175FW"
+:interface "USB"
+:usbid "0x04e8" "0x342a"
+:status :good
+
+:model "SCX-4500W"
+:interface "USB Ethernet"
+:usbid "0x04e8" "0x342b"
+:status :basic
+
+:model "SCX-4824 (SCX-4x24 Series)"
+:interface "USB"
+:usbid "0x04e8" "0x342c"
+:status :good
+
+:model "SCX-4828FN (SCX-4x28 Series)"
+:interface "USB"
+:usbid "0x04e8" "0x342d"
+:status :good
+
+:model "SCX-4300"
+:interface "USB"
+:usbid "0x04e8" "0x342e"
+:status :good
+
+:model "SCX-5835_5935"
+:interface "USB"
+:usbid "0x04e8" "0x342f"
+:status :good
+
+:model "SCX-5635"
+:interface "USB"
+:usbid "0x04e8" "0x3430"
+:status :untested
+
+:model "SCX-4x26"
+:interface "USB"
+:usbid "0x04e8" "0x3432"
+:status :untested
+
+:model "SCX-4600"
+:interface "USB"
+:usbid "0x04e8" "0x3433"
+:status :good
+
+:model "SCX-4623"
+:interface "USB"
+:usbid "0x04e8" "0x3434"
+:status :good
+
+:model "MFP-65x"
+:interface "USB"
+:usbid "0x04e8" "0x3435"
+:status :untested
+
+:model "SCX-6545"
+:interface "USB"
+:usbid "0x04e8" "0x3437"
+:status :good
+
+:model "CLX-8385"
+:interface "USB"
+:usbid "0x04e8" "0x3439"
+:status :untested
+
+:model "CLX-6220"
+:interface "USB"
+:usbid "0x04e8" "0x343a"
+:status :good
+
+:model "CLX-6250"
+:interface "USB"
+:usbid "0x04e8" "0x343b"
+:status :untested
+
+:model "SCX-4825FN (SCX-4x25 Series)"
+:interface "USB"
+:usbid "0x04e8" "0x343c"
+:status :good
+
+:model "CLX-3185"
+:interface "USB"
+:usbid "0x04e8" "0x343d"
+:status :good
+
+:model "CLX-8540"
+:interface "USB"
+:usbid "0x04e8" "0x343f"
+:status :untested
+
+:model "SCX-4623FW"
+:interface "USB"
+:usbid "0x04e8" "0x3440"
+:status :good
+
+:model "SCX-3205W (SCX-3200 Series)"
+:interface "USB Ethernet"
+:usbid "0x04e8" "0x3441"
+:status :good
+
+:model "SCX-6545X"
+:interface "USB"
+:usbid "0x04e8" "0x3442"
+:status :good
+
+:model "SCX-6x55X"
+:interface "USB"
+:usbid "0x04e8" "0x3443"
+:status :good
+
+:model "CLX-8385X"
+:interface "USB"
+:usbid "0x04e8" "0x3444"
+:status :good
+
+:model "SCX-5835_5935X"
+:interface "USB"
+:usbid "0x04e8" "0x3446"
+:status :good
+
+:model "SCX-4833FD"
+:interface "USB"
+:usbid "0x04e8" "0x344b"
+:status :good
+
+:model "SCX-4835FD"
+:interface "Ethernet"
+:usbid "0x04e8" "0x344b"
+:status :good
+
+:model "SCX-3405W"
+:interface "Ethernet"
+:status :basic
+
+:model "SCX-3400"
+:interface "USB"
+:usbid "0x04e8" "0x344f"
+:status :good
+
+:model "SF-760"
+:interface "USB"
+:usbid "0x04e8" "0x3450"
+:status :untested
+
+:model "SCX-4729FD"
+:interface "USB"
+:usbid "0x04e8" "0x3453"
+:status :basic
+
+:model "CLX-6260"
+:interface "USB"
+:usbid "0x04e8" "0x3455"
+:status :minimal
+
+:model "CLX-3300 Series"
+:interface "USB"
+:usbid "0x04e8" "0x3456"
+:status :basic
+
+:model "SCX-470x"
+:interface "USB"
+:usbid "0x04e8" "0x3457"
+:status :untested
+
+:model "CLX-4190"
+:interface "USB"
+:usbid "0x04e8" "0x345a"
+:status :minimal
+
+:model "SCX-4650 4x21S Series"
+:interface "USB"
+:usbid "0x04e8" "0x345b"
+:status :untested
+
+:model "M337x 387x 407x Series"
+:interface "USB"
+:usbid "0x04e8" "0x3460"
+:status :good
+
+:model "M267x 287x Series"
+:interface "USB"
+:usbid "0x04e8" "0x3461"
+:status :unsupported
+
+:model "SCX-681x"
+:interface "USB"
+:usbid "0x04e8" "0x3466"
+:status :untested
+
+:model "C460"
+:interface "USB"
+:usbid "0x04e8" "0x3468"
+:status :untested
+
diff --git a/doc/doxygen-genesys.conf.in b/doc/doxygen-genesys.conf.in
new file mode 100644
index 0000000..af9309f
--- /dev/null
+++ b/doc/doxygen-genesys.conf.in
@@ -0,0 +1,1793 @@
+# Doxyfile 1.8.1.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or sequence of words) that should
+# identify the project. Note that if you do not use Doxywizard you need
+# to put quotes around the project name if it contains spaces.
+
+PROJECT_NAME = GENESYS
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer
+# a quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF = GENESYS backend documentation
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is
+# included in the documentation. The maximum height of the logo should not
+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
+# Doxygen will copy the logo to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ./
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful if your file system
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding
+# "class=itcl::class" will allow you to use the command class in the
+# itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
+# comments according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you
+# can mix doxygen, HTML, and XML commands with Markdown formatting.
+# Disable only in case of backward compatibilities issues.
+
+MARKDOWN_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also makes the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = YES
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
+# unions are shown inside the group in which they are included (e.g. using
+# @ingroup) instead of on a separate page (for HTML and Man pages) or
+# section (for LaTeX and RTF).
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
+# unions with only public data fields will be shown inline in the documentation
+# of the scope in which they are defined (i.e. file, namespace, or group
+# documentation), provided this scope is documented. If set to NO (the default),
+# structs, classes, and unions are shown on a separate page (for HTML and Man
+# pages) or section (for LaTeX and RTF).
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penalty.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will roughly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+SYMBOL_CACHE_SIZE = 0
+
+# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
+# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
+# their name and scope. Since this can be an expensive process and often the
+# same symbol appear multiple times in the code, doxygen keeps a cache of
+# pre-resolved symbols. If the cache is too small doxygen will become slower.
+# If the cache is too large, memory is wasted. The cache size is given by this
+# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespaces are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = YES
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
+# do proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function even
+# if there is only one candidate or it is obvious which candidate to choose
+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
+# will still accept a match between prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or macro consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and macros in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files
+# containing the references data. This must be a list of .bib files. The
+# .bib extension is automatically appended if omitted. Using this command
+# requires the bibtex tool to be installed. See also
+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
+# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
+# feature you need bibtex and perl available in the search path.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ../include/sane/ \
+ ../backend
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
+# *.f90 *.f *.for *.vhd *.vhdl
+
+FILE_PATTERNS = genesys*.[ch]
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = YES
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH = ./
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty or if
+# non of the patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
+# and it is also possible to disable source filtering for a specific pattern
+# using *.ext= (so without naming a filter). This option only has effect when
+# FILTER_SOURCE_FILES is enabled.
+
+FILTER_SOURCE_PATTERNS =
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C, C++ and Fortran comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = ./genesys-html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header. Note that when using a custom header you are responsible
+# for the proper inclusion of any scripts and style sheets that doxygen
+# needs, which is dependent on the configuration options used.
+# It is advised to generate a default header using "doxygen -w html
+# header.html footer.html stylesheet.css YourConfigFile" and then modify
+# that header. Note that the header is subject to change so you typically
+# have to redo this when upgrading to a newer version of doxygen or when
+# changing the value of configuration settings such as GENERATE_TREEVIEW!
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# style sheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
+# the files will be copied as-is; there are no commands or markers available.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the style sheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
+# entries shown in the various tree structured indices initially; the user
+# can expand and collapse entries dynamically later on. Doxygen will expand
+# the tree to such a level that at most the specified number of entries are
+# visible (unless a fully collapsed tree already exceeds this amount).
+# So setting the number of entries 1 will produce a full collapsed tree by
+# default. 0 is a special value representing an infinite number of entries
+# and will result in a full expanded tree by default.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
+# at top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it. Since the tabs have the same information as the
+# navigation tree you can set this option to NO if you already set
+# GENERATE_TREEVIEW to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+# Since the tree basically has the same information as the tab index you
+# could consider to set DISABLE_INDEX to NO when enabling this option.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
+# documentation. Note that a value of 0 will completely suppress the enum
+# values from appearing in the overview section.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
+# (see http://www.mathjax.org) which uses client side Javascript for the
+# rendering instead of using prerendered bitmaps. Use this if you do not
+# have LaTeX installed or if you want to formulas look prettier in the HTML
+# output. When enabled you may also need to install MathJax separately and
+# configure the path to it using the MATHJAX_RELPATH option.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you need to specify the location relative to the
+# HTML output directory using the MATHJAX_RELPATH option. The destination
+# directory should contain the MathJax.js script. For instance, if the mathjax
+# directory is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to
+# the MathJax Content Delivery Network so you can quickly see the result without
+# installing MathJax.
+# However, it is strongly recommended to install a local
+# copy of MathJax from http://www.mathjax.org before deployment.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
+# names that should be enabled during MathJax rendering.
+
+MATHJAX_EXTENSIONS =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvantages are that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT =
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
+# the generated latex document. The footer should contain everything after
+# the last chapter. If it is left blank doxygen will generate a
+# standard footer. Notice: only use this tag if you know what you are doing!
+
+LATEX_FOOTER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
+# http://en.wikipedia.org/wiki/BibTeX for more info.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load style sheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# pointed to by INCLUDE_PATH will be searched when a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH = ../backend
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition that
+# overrules the definition found in the source code.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all references to function-like macros
+# that are alone on a line, have an all uppercase name, and do not end with a
+# semicolon, because these will confuse the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. For each
+# tag file the location of the external documentation should be added. The
+# format of a tag file without this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths
+# or URLs. Note that each tag file must have a unique name (where the name does
+# NOT include the path). If a tag file is not located in the directory in which
+# doxygen is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option also works with HAVE_DOT disabled, but it is recommended to
+# install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = NO
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS = 0
+
+# By default doxygen will use the Helvetica font for all dot files that
+# doxygen generates. When you want a differently looking font you can specify
+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
+# the font, which can be done by putting it in a standard location or by setting
+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
+# directory containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the Helvetica font.
+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
+# set the path where dot can find it.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside
+# the class node. If there are many fields or methods and many nodes the
+# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
+# threshold limits the number of items for each type to make the size more
+# managable. Set this to 0 for no limit. Note that the threshold may be
+# exceeded by 50% before the limit is enforced.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will generate a graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are svg, png, jpg, or gif.
+# If left blank png will be used. If you choose svg you need to set
+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible in IE 9+ (other browsers do not have this requirement).
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+# Note that this requires a modern browser other than Internet Explorer.
+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible. Older versions of IE do not have SVG support.
+
+INTERACTIVE_SVG = NO
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the
+# \mscfile command).
+
+MSCFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
diff --git a/doc/doxygen-sanei.conf.in b/doc/doxygen-sanei.conf.in
new file mode 100644
index 0000000..0b28011
--- /dev/null
+++ b/doc/doxygen-sanei.conf.in
@@ -0,0 +1,1473 @@
+# Doxyfile 1.5.7.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = SANEI
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ./
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = YES
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = YES
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = YES
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page. This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ../include/sane/
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = sanei*.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH = ./
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = ./sanei-html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file .
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT =
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = NO
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/doc/figs/area.eps b/doc/figs/area.eps
new file mode 100644
index 0000000..3613fa3
--- /dev/null
+++ b/doc/figs/area.eps
@@ -0,0 +1,126 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: area.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Wed Dec 4 19:19:37 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 221 205
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-59.0 231.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+% Polyline
+n 1725 1725 m 3375 1725 l 3375 2775 l 1725 2775 l clp gs col7 0.90 shd ef gr
+/Helvetica findfont 180.00 scalefont setfont
+2550 2302 m
+gs 1 -1 sc (scan area) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+7.500 slw
+% Polyline
+n 1200 525 m 1200 3825 l gs col7 0.80 shd ef gr gs col-1 s gr
+n 1230.00 3681.00 m 1200.00 3825.00 l 1170.00 3681.00 l 1200.50 3705.50 l 1230.00 3681.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+% Polyline
+n 1050 675 m 4650 675 l gs col7 0.80 shd ef gr gs col-1 s gr
+n 4506.00 645.00 m 4650.00 675.00 l 4506.00 705.00 l 4530.50 675.50 l 4506.00 645.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+3375 3150 m
+gs 1 -1 sc (bottom-right) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1725 1500 m
+gs 1 -1 sc (top-left) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+2700 1050 m
+gs 1 -1 sc (scan surface) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1050 3600 m
+gs 1 -1 sc (y) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+4425 525 m
+gs 1 -1 sc (x) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1080 585 m
+gs 1 -1 sc (0) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+% Polyline
+n 1725 1650 m 1725 1800 l gs col-1 s gr
+% Polyline
+n 1650 1725 m 1800 1725 l gs col-1 s gr
+% Polyline
+n 3375 2700 m 3375 2850 l gs col-1 s gr
+% Polyline
+n 3300 2775 m 3450 2775 l gs col-1 s gr
+15.000 slw
+% Polyline
+n 1200 675 m 4275 675 l 4275 3375 l 1200 3375 l clp gs col-1 s gr
+$F2psEnd
+restore
diff --git a/doc/figs/area.fig b/doc/figs/area.fig
new file mode 100644
index 0000000..d0e62e4
--- /dev/null
+++ b/doc/figs/area.fig
@@ -0,0 +1,36 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 1650 1650 1800 1800
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 1725 1650 1725 1800
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 1650 1725 1800 1725
+-6
+6 3300 2700 3450 2850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3375 2700 3375 2850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3300 2775 3450 2775
+-6
+6 1725 1725 3375 2775
+2 2 0 0 7 7 10 0 18 0.000 0 0 -1 0 0 5
+ 1725 1725 3375 1725 3375 2775 1725 2775 1725 1725
+4 1 -1 10 0 16 12 0.0000 4 105 840 2550 2302 scan area\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1200 675 4275 675 4275 3375 1200 3375 1200 675
+2 1 0 1 -1 7 10 0 16 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 1200 525 1200 3825
+2 1 0 1 -1 7 10 0 16 0.000 0 0 -1 1 0 2
+ 2 1 1.00 60.00 120.00
+ 1050 675 4650 675
+4 1 -1 10 0 16 12 0.0000 4 180 1020 3375 3150 bottom-right\001
+4 1 -1 10 0 16 12 0.0000 4 180 615 1725 1500 top-left\001
+4 1 -1 10 0 16 12 0.0000 4 135 1080 2700 1050 scan surface\001
+4 1 -1 10 0 16 12 0.0000 4 150 105 1050 3600 y\001
+4 1 -1 10 0 16 12 0.0000 4 105 90 4425 525 x\001
+4 1 -1 10 0 16 12 0.0000 4 135 105 1080 585 0\001
diff --git a/doc/figs/flow.eps b/doc/figs/flow.eps
new file mode 100644
index 0000000..55fd7d1
--- /dev/null
+++ b/doc/figs/flow.eps
@@ -0,0 +1,161 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: flow.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Tue Dec 3 22:09:10 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 601 542
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-161.0 577.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+7.500 slw
+% Polyline
+n 2700 600 m 10200 600 l 10200 9600 l 2700 9600 l clp gs col7 0.95 shd ef gr gs col-1 s gr
+% Polyline
+n 3300 2400 m 10200 2400 l 10200 8925 l 3300 8925 l clp gs col7 0.90 shd ef gr gs col-1 s gr
+% Polyline
+n 3900 2925 m 10200 2925 l 10200 4650 l 3900 4650 l clp gs col7 0.85 shd ef gr gs col-1 s gr
+% Polyline
+n 3900 4800 m 10200 4800 l 10200 8250 l 3900 8250 l clp gs col7 0.85 shd ef gr gs col-1 s gr
+% Polyline
+n 10350 3000 m 10425 3075 l 10425 4500 l 10350 4575 l gs col-1 s gr
+% Polyline
+n 10350 4875 m 10425 4950 l 10425 8100 l 10350 8175 l gs col-1 s gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+10575 6600 m
+gs 1 -1 sc (image acquisition) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+10575 3825 m
+gs 1 -1 sc (device setup) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4200 7515 m
+gs 1 -1 sc (- go back to) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5775 7515 m
+gs 1 -1 sc (sane_start\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+7275 7515 m
+gs 1 -1 sc (if more frames desired) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4200 3300 m
+gs 1 -1 sc (- use:) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+4200 5100 m
+gs 1 -1 sc (- sane_start\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4500 4500 m
+gs 1 -1 sc (repeatedly to configure device as desired) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 4080 m
+gs 1 -1 sc (sane_control_option\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 3600 m
+gs 1 -1 sc (sane_get_option_descriptor\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4200 5700 m
+gs 1 -1 sc (- use:) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+4500 6900 m
+gs 1 -1 sc (repeatedly until read returns EOF) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 6000 m
+gs 1 -1 sc (sane_get_parameters\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+5400 6450 m
+gs 1 -1 sc (sane_read\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+4200 8100 m
+gs 1 -1 sc (- sane_cancel\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3000 1200 m
+gs 1 -1 sc (- sane_init\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3000 9300 m
+gs 1 -1 sc (- sane_exit\(\)) col-1 show gr
+/Helvetica-Oblique findfont 270.00 scalefont setfont
+3600 1800 m
+gs 1 -1 sc (- pick desired device, possibly by using) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3600 2700 m
+gs 1 -1 sc (- sane_open\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+3600 8700 m
+gs 1 -1 sc (- sane_close\(\)) col-1 show gr
+/Helvetica findfont 270.00 scalefont setfont
+4800 2175 m
+gs 1 -1 sc (sane_get_devices\(\)) col-1 show gr
+$F2psEnd
+restore
diff --git a/doc/figs/flow.fig b/doc/figs/flow.fig
new file mode 100644
index 0000000..3abcc0b
--- /dev/null
+++ b/doc/figs/flow.fig
@@ -0,0 +1,40 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 4200 7305 9945 7575
+4 0 -1 0 0 17 18 0.0000 4 270 1500 4200 7515 - go back to\001
+4 0 -1 0 0 16 18 0.0000 4 270 1440 5775 7515 sane_start()\001
+4 0 -1 0 0 17 18 0.0000 4 210 2670 7275 7515 if more frames desired\001
+-6
+2 2 0 1 -1 7 10 0 19 0.000 0 0 -1 0 0 5
+ 2700 600 10200 600 10200 9600 2700 9600 2700 600
+2 2 0 1 -1 7 8 0 18 0.000 0 0 -1 0 0 5
+ 3300 2400 10200 2400 10200 8925 3300 8925 3300 2400
+2 2 0 1 -1 7 8 0 17 0.000 0 0 -1 0 0 5
+ 3900 2925 10200 2925 10200 4650 3900 4650 3900 2925
+2 2 0 1 -1 7 8 0 17 0.000 0 0 -1 0 0 5
+ 3900 4800 10200 4800 10200 8250 3900 8250 3900 4800
+2 1 0 1 -1 7 8 0 -1 0.000 0 0 -1 0 0 4
+ 10350 3000 10425 3075 10425 4500 10350 4575
+2 1 0 1 -1 7 8 0 -1 0.000 0 0 -1 0 0 4
+ 10350 4875 10425 4950 10425 8100 10350 8175
+4 0 -1 0 0 17 18 0.0000 4 150 735 4200 3300 - use:\001
+4 0 -1 0 0 16 18 0.0000 4 270 1680 4200 5100 - sane_start()\001
+4 0 -1 0 0 17 18 0.0000 4 270 4950 4500 4500 repeatedly to configure device as desired\001
+4 0 -1 0 0 16 18 0.0000 4 270 2715 5400 4080 sane_control_option()\001
+4 0 -1 0 0 16 18 0.0000 4 270 3660 5400 3600 sane_get_option_descriptor()\001
+4 0 -1 0 0 17 18 0.0000 4 150 735 4200 5700 - use:\001
+4 0 -1 0 0 17 18 0.0000 4 270 4080 4500 6900 repeatedly until read returns EOF\001
+4 0 -1 0 0 16 18 0.0000 4 270 2805 5400 6000 sane_get_parameters()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1440 5400 6450 sane_read()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1935 4200 8100 - sane_cancel()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1500 3000 1200 - sane_init()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1590 3000 9300 - sane_exit()\001
+4 0 -1 0 0 17 18 0.0000 4 270 4845 3600 1800 - pick desired device, possibly by using\001
+4 0 -1 0 0 16 18 0.0000 4 270 1770 3600 2700 - sane_open()\001
+4 0 -1 0 0 16 18 0.0000 4 270 1800 3600 8700 - sane_close()\001
+4 0 -1 0 0 16 18 0.0000 4 270 2415 4800 2175 sane_get_devices()\001
+4 0 -1 8 0 17 18 0.0000 4 270 2070 10575 6600 image acquisition\001
+4 0 -1 8 0 17 18 0.0000 4 270 1500 10575 3825 device setup\001
diff --git a/doc/figs/hierarchy.eps b/doc/figs/hierarchy.eps
new file mode 100644
index 0000000..978b3ab
--- /dev/null
+++ b/doc/figs/hierarchy.eps
@@ -0,0 +1,209 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: hierarchy.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 2
+%%CreationDate: Thu Jan 30 22:02:12 1997
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%Magnification: 1.00
+%%Orientation: Landscape
+%%BoundingBox: 0 0 355 722
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-17.0 -17.0 translate
+ 90 rotate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n 0 612 m 0 0 l 792 0 l 792 612 l cp clip
+ 0.06000 0.06000 sc
+% Polyline
+n 5700 3825 m 300 3825 l 300 300 l 5700 300 l cp gs 0.90 setgray ef gr
+% Polyline
+n 12300 5550 m 7200 5550 l 7200 300 l 12300 300 l cp gs 0.90 setgray ef gr
+15.000 slw
+% Polyline
+n 10650 4785 m 12150 4785 l 12150 5385 l 10650 5385 l cp gs col-1 s gr
+/Helvetica ff 270.00 scf sf
+11399 5182 m
+gs 1 -1 sc (qcam) dup sw pop 2 div neg 0 rm col-1 sh gr
+% Polyline
+n 7350 4785 m 8850 4785 l 8850 5385 l 7350 5385 l cp gs col-1 s gr
+/Helvetica ff 270.00 scf sf
+8099 5182 m
+gs 1 -1 sc (hp) dup sw pop 2 div neg 0 rm col-1 sh gr
+% Polyline
+n 2250 1185 m 3750 1185 l 3750 1785 l 2250 1785 l cp gs col-1 s gr
+% Polyline
+n 450 2985 m 1950 2985 l 1950 3585 l 450 3585 l cp gs col-1 s gr
+% Polyline
+n 2250 2985 m 3750 2985 l 3750 3585 l 2250 3585 l cp gs col-1 s gr
+% Polyline
+n 4050 2985 m 5550 2985 l 5550 3585 l 4050 3585 l cp gs col-1 s gr
+% Polyline
+n 8850 1185 m 10350 1185 l 10350 1785 l 8850 1785 l cp gs col-1 s gr
+7.500 slw
+% Polyline
+n 2700 1800 m 1200 3000 l gs col-1 s gr
+% Polyline
+n 3000 1800 m 3000 3000 l gs col-1 s gr
+% Polyline
+n 3300 1800 m 4800 3000 l gs col-1 s gr
+% Polyline
+n 9600 1800 m 9600 2100 l gs col-1 s gr
+% Polyline
+n 9450 2700 m 8100 4800 l gs col-1 s gr
+% Polyline
+n 11400 4200 m 11400 4800 l gs col-1 s gr
+% Polyline
+n 1200 3600 m 1200 4200 l gs col-1 s gr
+% Polyline
+n 3000 3600 m 3000 4125 l gs col-1 s gr
+% Polyline
+n 7875 5400 m 7350 5850 l gs col-1 s gr
+% Polyline
+n 8250 5400 m 8775 5850 l gs col-1 s gr
+% Polyline
+n 11475 5400 m 11475 5850 l gs col-1 s gr
+15.000 slw
+% Polyline
+n 8850 2100 m 10350 2100 l 10350 2700 l 8850 2700 l cp gs col-1 s gr
+% Polyline
+n 10650 3600 m 12150 3600 l 12150 4200 l 10650 4200 l cp gs col-1 s gr
+7.500 slw
+% Polyline
+n 9750 2700 m 11400 3600 l gs col-1 s gr
+% Interp Spline
+gs n 4800 3600 m
+ 4390.2 4024.4 4259.0 4249.4 4275 4500 curveto
+ 4300.2 4894.5 4554.6 5418.2 5025 5475 curveto
+ 5575.9 5541.5 5962.1 4914.2 6150 4575 curveto
+ 6573.5 3810.6 5758.1 2145.7 6525 1350 curveto
+ 7224.0 624.7 8573.7 446.9 9450 900 curveto
+ 9524.5 938.5 9562.0 1013.5 9600 1200 curveto
+ gs col-1 s gr
+ gr
+
+/Helvetica ff 270.00 scf sf
+1199 3382 m
+gs 1 -1 sc (pnm) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+2999 3382 m
+gs 1 -1 sc (mustek) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+1200 4425 m
+gs 1 -1 sc (pnm files) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+3000 4380 m
+gs 1 -1 sc (scanner) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+7350 6165 m
+gs 1 -1 sc (scanner 1) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+8925 6165 m
+gs 1 -1 sc (scanner 2) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+11475 6135 m
+gs 1 -1 sc (video camera) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+3000 600 m
+gs 1 -1 sc (machine A) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+9600 630 m
+gs 1 -1 sc (machine B) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica-Oblique ff 210.00 scf sf
+4725 5850 m
+gs 1 -1 sc (network connection) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+2999 1582 m
+gs 1 -1 sc (dll) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+4799 3382 m
+gs 1 -1 sc (net) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+9599 1582 m
+gs 1 -1 sc (saned) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+9599 2482 m
+gs 1 -1 sc (dll) dup sw pop 2 div neg 0 rm col-1 sh gr
+/Helvetica ff 270.00 scf sf
+11399 3982 m
+gs 1 -1 sc (autolum) dup sw pop 2 div neg 0 rm col-1 sh gr
+$F2psEnd
+rs
diff --git a/doc/figs/hierarchy.fig b/doc/figs/hierarchy.fig
new file mode 100644
index 0000000..5545b8d
--- /dev/null
+++ b/doc/figs/hierarchy.fig
@@ -0,0 +1,79 @@
+#FIG 3.1
+Landscape
+Center
+Inches
+1200 2
+6 10500 4500 12300 5400
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 10650 4785 12150 4785 12150 5385 10650 5385 10650 4785
+4 1 -1 0 0 16 18 0.0000 4 210 660 11399 5182 qcam\001
+-6
+6 7200 4500 9000 5400
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7350 4785 8850 4785 8850 5385 7350 5385 7350 4785
+4 1 -1 0 0 16 18 0.0000 4 270 315 8099 5182 hp\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2250 1185 3750 1185 3750 1785 2250 1785 2250 1185
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 450 2985 1950 2985 1950 3585 450 3585 450 2985
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2250 2985 3750 2985 3750 3585 2250 3585 2250 2985
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4050 2985 5550 2985 5550 3585 4050 3585 4050 2985
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8850 1185 10350 1185 10350 1785 8850 1785 8850 1185
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 2700 1800 1200 3000
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3000 1800 3000 3000
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3300 1800 4800 3000
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 9600 1800 9600 2100
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 9450 2700 8100 4800
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 11400 4200 11400 4800
+2 2 0 0 0 0 10 0 2 0.000 0 0 -1 0 0 5
+ 5700 3825 300 3825 300 300 5700 300 5700 3825
+2 2 0 0 0 0 10 0 2 0.000 0 0 -1 0 0 5
+ 12300 5550 7200 5550 7200 300 12300 300 12300 5550
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 1200 3600 1200 4200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 3000 3600 3000 4125
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 7875 5400 7350 5850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 8250 5400 8775 5850
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 11475 5400 11475 5850
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8850 2100 10350 2100 10350 2700 8850 2700 8850 2100
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 10650 3600 12150 3600 12150 4200 10650 4200 10650 3600
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2
+ 9750 2700 11400 3600
+3 2 0 1 -1 7 0 0 -1 0.000 0 0 0 7
+ 4800 3600 4275 4500 5025 5475 6150 4575 6525 1350 9450 900
+ 9600 1200
+ 0.00 0.00 4390.23 4024.37 4258.98 4249.38 4300.21 4894.51
+ 4554.60 5418.20 5575.94 5541.53 5962.09 4914.18 6573.46 3810.63
+ 5758.15 2145.68 7223.99 624.74 8573.68 446.85 9524.49 938.52
+ 9561.99 1013.52 0.00 0.00
+4 1 -1 0 0 16 18 0.0000 4 210 525 1199 3382 pnm\001
+4 1 -1 0 0 16 18 0.0000 4 210 870 2999 3382 mustek\001
+4 1 -1 0 0 17 14 0.0000 4 210 855 1200 4425 pnm files\001
+4 1 -1 0 0 17 14 0.0000 4 120 765 3000 4380 scanner\001
+4 1 -1 0 0 17 14 0.0000 4 150 945 7350 6165 scanner 1\001
+4 1 -1 0 0 17 14 0.0000 4 150 945 8925 6165 scanner 2\001
+4 1 -1 0 0 17 14 0.0000 4 165 1290 11475 6135 video camera\001
+4 1 -1 0 0 17 14 0.0000 4 165 1035 3000 600 machine A\001
+4 1 -1 0 0 17 14 0.0000 4 165 1020 9600 630 machine B\001
+4 1 -1 0 0 17 14 0.0000 4 165 1860 4725 5850 network connection\001
+4 1 -1 0 0 16 18 0.0000 4 210 285 2999 1582 dll\001
+4 1 -1 0 0 16 18 0.0000 4 195 390 4799 3382 net\001
+4 1 -1 0 0 16 18 0.0000 4 210 735 9599 1582 saned\001
+4 1 -1 0 0 16 18 0.0000 4 210 285 9599 2482 dll\001
+4 1 -1 0 0 16 18 0.0000 4 210 960 11399 3982 autolum\001
diff --git a/doc/figs/image-data.eps b/doc/figs/image-data.eps
new file mode 100644
index 0000000..13e6b8a
--- /dev/null
+++ b/doc/figs/image-data.eps
@@ -0,0 +1,178 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: image-data.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Fri Nov 22 08:53:36 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 521 93
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-88.0 120.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+7.500 slw
+% Polyline
+n 1800 1200 m 3150 1200 l 3150 1350 l 1800 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+1875 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 3150 1200 m 4500 1200 l 4500 1350 l 3150 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+3225 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 4500 1200 m 5850 1200 l 5850 1350 l 4500 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+4575 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+15.000 slw
+% Polyline
+n 1800 1200 m 5850 1200 l 5850 1350 l 1800 1350 l clp gs col-1 s gr
+7.500 slw
+% Polyline
+n 1800 900 m 1950 825 l 3750 825 l 3825 750 l 3900 825 l 5700 825 l
+ 5850 900 l gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+2475 1575 m
+gs 1 -1 sc (r) col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3825 1575 m
+gs 1 -1 sc (g) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+5175 1575 m
+gs 1 -1 sc (b) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3825 600 m
+gs 1 -1 sc (pixel 0) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+% Polyline
+n 5850 1200 m 7200 1200 l 7200 1350 l 5850 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+5925 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 7200 1200 m 8550 1200 l 8550 1350 l 7200 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+7275 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+% Polyline
+n 8550 1200 m 9900 1200 l 9900 1350 l 8550 1350 l clp gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+8625 1125 m
+gs 1 -1 sc (7 6 5 4 3 2 1 0) col-1 show gr
+15.000 slw
+% Polyline
+n 5850 1200 m 9900 1200 l 9900 1350 l 5850 1350 l clp gs col-1 s gr
+7.500 slw
+% Polyline
+n 5850 900 m 6000 825 l 7800 825 l 7875 750 l 7950 825 l 9750 825 l
+ 9900 900 l gs col-1 s gr
+/Helvetica findfont 180.00 scalefont setfont
+6525 1575 m
+gs 1 -1 sc (r) col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+7875 1575 m
+gs 1 -1 sc (g) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+9225 1575 m
+gs 1 -1 sc (b) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+7875 600 m
+gs 1 -1 sc (pixel 1) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+9225 1950 m
+gs 1 -1 sc (byte 5) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+7875 1950 m
+gs 1 -1 sc (byte 4) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+6525 1950 m
+gs 1 -1 sc (byte 3) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+5175 1950 m
+gs 1 -1 sc (byte 2) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+3825 1950 m
+gs 1 -1 sc (byte1) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+2475 1950 m
+gs 1 -1 sc (byte0) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+10050 1275 m
+gs 1 -1 sc (....) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
+/Helvetica findfont 180.00 scalefont setfont
+1725 1125 m
+gs 1 -1 sc (bit:) dup stringwidth pop neg 0 rmoveto col-1 show gr
+$F2psEnd
+restore
diff --git a/doc/figs/image-data.fig b/doc/figs/image-data.fig
new file mode 100644
index 0000000..d52a90e
--- /dev/null
+++ b/doc/figs/image-data.fig
@@ -0,0 +1,63 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 1725 450 5925 1650
+6 1800 975 3150 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1800 1200 3150 1200 3150 1350 1800 1350 1800 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 1875 1125 7 6 5 4 3 2 1 0\001
+-6
+6 3150 975 4500 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 3150 1200 4500 1200 4500 1350 3150 1350 3150 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 3225 1125 7 6 5 4 3 2 1 0\001
+-6
+6 4500 975 5850 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 4500 1200 5850 1200 5850 1350 4500 1350 4500 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 4575 1125 7 6 5 4 3 2 1 0\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 1800 1200 5850 1200 5850 1350 1800 1350 1800 1200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 7
+ 1800 900 1950 825 3750 825 3825 750 3900 825 5700 825
+ 5850 900
+4 0 -1 0 0 16 12 0.0000 4 105 60 2475 1575 r\001
+4 1 -1 0 0 16 12 0.0000 4 150 105 3825 1575 g\001
+4 1 -1 0 0 16 12 0.0000 4 135 105 5175 1575 b\001
+4 1 -1 0 0 16 12 0.0000 4 180 555 3825 600 pixel 0\001
+-6
+6 5850 975 7200 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 5850 1200 7200 1200 7200 1350 5850 1350 5850 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 5925 1125 7 6 5 4 3 2 1 0\001
+-6
+6 7200 975 8550 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 7200 1200 8550 1200 8550 1350 7200 1350 7200 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 7275 1125 7 6 5 4 3 2 1 0\001
+-6
+6 8550 975 9900 1350
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 8550 1200 9900 1200 9900 1350 8550 1350 8550 1200
+4 0 -1 0 0 16 12 0.0000 4 135 1260 8625 1125 7 6 5 4 3 2 1 0\001
+-6
+2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 5850 1200 9900 1200 9900 1350 5850 1350 5850 1200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 7
+ 5850 900 6000 825 7800 825 7875 750 7950 825 9750 825
+ 9900 900
+4 0 -1 0 0 16 12 0.0000 4 105 60 6525 1575 r\001
+4 1 -1 0 0 16 12 0.0000 4 150 105 7875 1575 g\001
+4 1 -1 0 0 16 12 0.0000 4 135 105 9225 1575 b\001
+4 1 -1 0 0 16 12 0.0000 4 180 555 7875 600 pixel 1\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 9225 1950 byte 5\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 7875 1950 byte 4\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 6525 1950 byte 3\001
+4 1 -1 0 0 16 12 0.0000 4 180 525 5175 1950 byte 2\001
+4 1 -1 0 0 16 12 0.0000 4 180 465 3825 1950 byte1\001
+4 1 -1 0 0 16 12 0.0000 4 180 465 2475 1950 byte0\001
+4 1 -1 0 0 16 12 0.0000 4 15 180 10050 1275 ....\001
+4 2 -1 0 0 16 12 0.0000 4 135 240 1725 1125 bit:\001
diff --git a/doc/figs/xfer.eps b/doc/figs/xfer.eps
new file mode 100644
index 0000000..04abf91
--- /dev/null
+++ b/doc/figs/xfer.eps
@@ -0,0 +1,117 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: xfer.fig
+%%Creator: fig2dev Version 3.1 Patchlevel 1
+%%CreationDate: Fri Nov 22 08:53:30 1996
+%%For: davidm@panda.mosberger (David Mosberger-Tang)
+%%Orientation: Portrait
+%%BoundingBox: 0 0 362 182
+%%Pages: 0
+%%BeginSetup
+%%IncludeFeature: *PageSize Letter
+%%EndSetup
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {} def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-134.0 370.0 translate
+1 -1 scale
+
+/clp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+15.000 slw
+% Polyline
+n 2400 3300 m 8100 3300 l gs col-1 s gr
+n 7812.00 3240.00 m 8100.00 3300.00 l 7812.00 3360.00 l 7860.50 3300.50 l 7812.00 3240.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 8100 3375 m 2400 3675 l gs col-1 s gr
+15.000 slw
+n 2690.76 3719.78 m 2400.00 3675.00 l 2684.45 3599.95 l 2640.17 3662.89 l 2690.76 3719.78 l clp gs 0.00 setgray ef gr gs col-1 s gr
+% Polyline
+n 2400 3750 m 8100 3750 l gs col-1 s gr
+n 7812.00 3690.00 m 8100.00 3750.00 l 7812.00 3810.00 l 7860.50 3750.50 l 7812.00 3690.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 8100 3825 m 2400 4125 l gs col-1 s gr
+15.000 slw
+n 2690.76 4169.78 m 2400.00 4125.00 l 2684.45 4049.95 l 2640.17 4112.89 l 2690.76 4169.78 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 2250 3150 m 8250 3150 l 8250 6150 l 2250 6150 l clp gs col-1 s gr
+15.000 slw
+% Polyline
+n 2400 4200 m 8100 4200 l gs col-1 s gr
+n 7812.00 4140.00 m 8100.00 4200.00 l 7812.00 4260.00 l 7860.50 4200.50 l 7812.00 4140.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+7.500 slw
+% Polyline
+n 8100 4275 m 2400 4575 l gs col-1 s gr
+15.000 slw
+n 2690.76 4619.78 m 2400.00 4575.00 l 2684.45 4499.95 l 2640.17 4562.89 l 2690.76 4619.78 l clp gs 0.00 setgray ef gr gs col-1 s gr
+% Polyline
+n 2400 4650 m 8100 4650 l gs col-1 s gr
+n 7812.00 4590.00 m 8100.00 4650.00 l 7812.00 4710.00 l 7860.50 4650.50 l 7812.00 4590.00 l clp gs 0.00 setgray ef gr gs col-1 s gr
+$F2psEnd
+restore
diff --git a/doc/figs/xfer.fig b/doc/figs/xfer.fig
new file mode 100644
index 0000000..c4d8921
--- /dev/null
+++ b/doc/figs/xfer.fig
@@ -0,0 +1,32 @@
+#FIG 3.1
+Portrait
+Center
+Inches
+1200 2
+6 2325 3150 8175 3750
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 3300 8100 3300
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 3375 2400 3675
+-6
+6 2325 3600 8175 4200
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 3750 8100 3750
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 3825 2400 4125
+-6
+2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5
+ 2250 3150 8250 3150 8250 6150 2250 6150 2250 3150
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 4200 8100 4200
+2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 4275 2400 4575
+2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 2400 4650 8100 4650
diff --git a/doc/gamma4scanimage.man b/doc/gamma4scanimage.man
new file mode 100644
index 0000000..fe81b15
--- /dev/null
+++ b/doc/gamma4scanimage.man
@@ -0,0 +1,66 @@
+.TH gamma4scanimage 1 "10 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX gamma4scanimage
+.SH NAME
+gamma4scanimage \- create a gamma table for scanimage
+.SH SYNOPSIS
+.B gamma4scanimage
+.I gamma
+.RI [ shadow
+.RI [ highlight
+.RI [ maxin
+.RI [ maxout ]]]]
+
+.SH DESCRIPTION
+The tool
+.B gamma4scanimage
+creates a gamma table in the format expected by scanimage. You can define a
+.BR gamma,
+a
+.BR shadow
+and a
+.BR highlight
+value. You also can specify the size
+.RB ( maxin )
+and maximum output value
+.RB ( maxout )
+of the gamma table.
+.PP
+.BR gamma
+is a floating point value, neutral value is 1.0, if the value is larger than
+1.0 then the image gets brighter.
+.PP
+.BR shadow
+defines the minimum input value that is necessary to create an output value
+larger than zero. shadow has to be in the range [0..maxin]. Its default value
+is 0.
+.PP
+.BR highlight
+defines the maximum input value that produces an output value smaller than
+maxout. highlight has to be in the range [0..maxin], highlight has to be
+larger than shadow. Its default value is the same as maxin (16383 if not set).
+.PP
+.BR maxin
+defines the size of the gamma table. The size depends on the scanner/backend.
+If the scanner uses 8 bits gamma input then maxin has to be set to 255, for 10
+bits 1023, for 12 bits 4095, for 14 bits 16383. The default is 16383. To find
+out what value maxin has to be call scanimage with a very large gamma table
+[0]0-[99999]255 then scanimage prints an error message with the needed size of
+the gamma table.
+.PP
+.BR maxout
+defines the maximum output value. Take a look at the output of scanimage \-h to
+find out what maxout has to be. The default value is 255.
+.PP
+.SH EXAMPLE
+.B scanimage \-\-custom\-gamma=yes \-\-gamma\-table
+.I `gamma4scanimage 1.8 0 11500 16383 255`
+>image.pnm
+
+.SH SEE ALSO
+.BR scanimage (1)
+
+.SH AUTHOR
+Oliver Rauch
+
+.SH EMAIL-CONTACT
+Oliver.Rauch@Rauch-Domain.DE
diff --git a/doc/gt68xx/gt68xx.CHANGES b/doc/gt68xx/gt68xx.CHANGES
new file mode 100644
index 0000000..43f2e85
--- /dev/null
+++ b/doc/gt68xx/gt68xx.CHANGES
@@ -0,0 +1,720 @@
+gt68xx.CHANGES -*-text-*-
+
+V 1.0.84 (2007-08-19)
+
+* Added Artec Ultima 2000 e+, Nortek Myscan 1200, NeatReceipts Scanalizer
+ Professional, Genius Colorpage Slim-1200.
+* Name and email address changes.
+
+V 1.0.83 (2007-01-28)
+
+* Added .conf entry for Plustek OpticPro S12 and S24. Updated .desc file.
+
+V 1.0.82 (2006-10-03)
+
+* Added support for Genius Colorpage SF600.
+
+V 1.0.81 (2006-05-21)
+
+* Added support for Plustek OpticPro S24 (some models). Added .conf entry for
+ Plustek OpticPro S12.
+
+V 1.0.80 (2006-01-02)
+
+* Added Plustek OpticPro S(T)12 (product id 0x040b). Mostly untested.
+* Print warmup message 5 seconds after starting the warm-up.
+
+V 1.0.79 (2005-12-09) sane-backends 1.0.17
+
+* Silenced warning when scan is cancelled.
+* Silenced often non-fatal check_result error messages.
+* Reduced timeout for cancelling a scan. Some scanners freeze for 30 seconds
+ otherwise. Repeat is_moving test even if an error was received.
+* Run fix_descriptors before cancelling the scan. Without that, some gt6816
+ scanners are not detected anymore after closing the device.
+* Fixed wait_lamp_stable. Wait for a maximum time of 60 seconds. Print
+ warming up message after 5 seconds. Print how long warming up took.
+* For Mustek ScanExpress A3 USB, use more intelligent warm-up mechanism. The
+ brightness for this scanner first decreases and then increases again. With the
+ previous logic the scanner always warmed up for at least 10 seconds even if it
+ wasn't necessary.
+* Warm up lamp also when changing from flatbed to transparency. Without this the
+ lamp may be too dark directly after changing the source.
+* Decreased scan width of Plustek OpticPro 1248U. This fixes some strange color
+ artifacts and results in less backtracking in some modes.
+
+V 1.0.78 (2005-10-16)
+
+* Minor modifications to sheet-fed scanner support.
+
+V 1.0.77 (2005-09-29)
+
+* Added support for Plustek OpticSlim M12 (untested). Based on patch from
+ Gerhard Jaeger <gerhard@gjaeger.de>.
+* Fixed gt68xx homepage links in man page. Changed minimum version of libusb
+ to 0.1.8.
+
+V 1.0.76 (2005-09-18)
+
+* Fixed segfault that may happen with Mustek ScanExpress A3 USB.
+
+V 1.0.75 (2005-09-01)
+
+* Genius ColorPage Vivid 1200 X is reported to work.
+* Genius ColorPage Vivid 4 XE seems to be the same as 4 X, it just doesn't have
+ buttons.
+* Cleanup of .desc file.
+* Fixed gain setting.
+* Mustek ScanExpress A3 USB 600 dpi color scanning works now.
+
+V 1.0.74 (2005-08-20)
+
+* Increased number limit of scanners that can work with this backend to 50.
+* Added support for Genius ColorPage Vivid 1200 X (untested).
+
+V 1.0.73 (2005-08-19)
+
+* Enabled GT68XX_FLAG_NO_STOP for Mustek BearPaw 2400 CU Plus. Some of these
+ scanners don't seem to like that command.
+
+V 1.0.72 (2005-08-18)
+
+* Finally fixed the problem concerning scanning on *BSD. Scanning only worked
+ once. After that, the scanner wasn't even detected anymore beacuse the config
+ descriptor returned by the device was corrupted. This is a hardware bug. When
+ filling the internal memory of the scanner completely, the config descriptor
+ is overwritten. The work-around is to ask the scanner for the device
+ descriptor before closing the device. This rewrites also the config descriptor
+ to the memory of the scanner.
+* Fixed compilation warnings.
+
+V 1.0.71 (2005-07-10) Included in sane-backends 1.0.16
+
+* Changed resolution from 75 to 100 dpi and changed 16 bit/color to 12 based on
+ a user report for the Visioneer OneTouch 7300. Updated .desc.
+* Moved check for stable lamp to its own function.
+* Mustek ScanExpress A3 USB: Use CIS calibration. Use lamp warmup.
+* Fixed CCD on GT6801 scanning (color scanning was broken due to a change in
+ motormode_2.
+
+V 1.0.70 (2005-05-29)
+
+* Start exposure with the settings from the scanner entry.
+* CIS Calibration and exposure uses a broader spectrum now.
+* Expsoure limit is increased to 50 loops.
+* Genius Vivid 4x is reported to work so the UNTESTED label is removed now.
+* Visioneer 7300 is reported to work so the UNTESTED label is removed now.
+* Genius ColorPage Vivid 1200XE: Removed UNTESTED label. Fixed
+ resolutions. Adjusted margins. Fixed color order. Fixed linedistance.
+ Adjusted AFE.
+* Mustek ScanExpress 1248 UB: Fixed margins. Adjusted AFE. Adjusted
+ exposure. Adjusted gamma. Changed status to "complete".
+* Mustek BearPaw 2400 CU Plus: Adsusted exposure and AFE parameters. Hopefully
+ stripes and similar trouble are gone now.
+* Mustek BearPaw 1200 CU: Increased exposure to avoid vertical lines.
+* Updated manual page.
+
+V 1.0.69 (2005-05-20)
+
+* Mustek BearPaw 1200 CU Plus model 0x21b works now. Fixed firmware and offset
+ settings. Calibration is not completely ok yet, however.
+* Code cleanup for setup_scan (only one function for all chipsets).
+* Simplified line mode/pixel mode setting
+* Updated TODO.
+* Mustek BearPaw 2448 TA Plus is now only "basic". Too much trouble for
+ "good".
+* Removed option "fast preview". By default for preview mode 8 bits/pixel
+ are used.
+* Fixed indentation.
+* Full scan really scans from y=0 on gt6816 scanners now.
+
+V 1.0.68 (2005-05-07)
+
+* GT68XX_FLAG_NO_STOP is needed for BearPaw 2448 TA Plus.
+* Plustek OpticSlim 2400: Fixed list of resolutions. That fixed the
+ preview. Removed "untested" warning. Adjusted scan area.
+* Updated gt68xx.TODO.
+* Find firmwares independent of capitalization (bug #301580).
+
+V 1.0.67 (2004-11-14)
+
+* Fixed test to move home sensor at the start of scan.
+* Fixed gray mode linemode test. That stopped e.g. the Plustek OpticPro U 16 B
+ from working in gray mode.
+
+V 1.0.66 (2004-10-31)
+
+* Removed unused gain and offset options.
+
+V 1.0.65 (2004-10-11)
+
+* Used new lamp option from saneopts.h.
+* Fixed typos.
+* Added Packard Bell Diamond 2450 to .conf and changed status to "good".
+* Avoid error message when closing scanner.
+* Don't print max_white warning when debugging is not enabled.
+
+V 1.0.64 (2004-10-02)
+
+* Added Trust 240TH easy Webscan Gold to list of supported devices.
+* Changed status of Visioneer 7300 to basic.
+* Changed name of Genius 1200 EX to "XE". That seems to be the real name. Fixed
+ firmware name. Changed status to "minimal."
+
+V 1.0.63 (2004-09-03)
+
+* Fixed firmware name for Mustek 1248 UB. Changed status to basic. Removed
+ "unsupported" warning.
+* Added workaround for shared memory compilation problem on Windows.
+* It's now possible to add a new vendor/product id line to gt68xx.conf to test
+ yet unsupported scanners without changing the source code.
+
+V 1.0.62 (2004-08-08)
+
+* Added detection for Mustek ScanExpress 1248 UB. It's untested however and I
+ don't even know the name of the firmware.
+* Added new id for Mustek BearPaw 1200 CU Plus (0x021b). It's completely untested.
+
+V 1.0-61 (2004-06-18)
+
+* General:
+ * Re-enabled forked reader process when fork is not disabled. That's faster
+ with high resolutions and big scan widths.
+ * In gray and lineart mode the color to be used can be selected now.
+ * Resolution and depth lists are now in the "correct" order.
+ * Fixed "move to the end" bug when full scan is enabled.
+ * Used SANE_VALUE_SCAN_MODE_* macros.
+ * Added debugging code for brightness/calibration.
+ * Changed status of Genius Colorpage Vivid4x too good.
+ * Removed special command set for U16B (and Genesys Vivid4) as those scanners
+ are quite normal GT6816 devices.
+ * Removed special test for gt6816, 600 dpi, 16 bits -> linemode. The other
+ tests should change the settings to linemode if necessary.
+ * Added flag to indicate that a scanner doesn't support linemode. Print an error
+ if linemode is activated for that sort of scanners.
+ * Adjusted various debug levels.
+ * Added options to force backtracking and to set the number of lines to
+ backtrack.
+ * Increased default lamp-warmup time to 60 seconds. Also lamp-warmup doesn't
+ stop if lamp brightness is 0.
+ * reader_process returns an error now if read fails.
+ * Added gt68xx.TODO.
+ * Removed XDBG macros. Used DBG instead.
+ * Checks for correct gain and offset are in gt68xx_generic now.
+ * Fixed gain setting (including multiplier).
+ * Check for status of read_scanned_data every 10 ms. Avoids short stops before
+ scan data comes in.
+ * Added resolution limit for using backtracking.
+ * Reduced deafult CCD backtracking to 0x10 lines.
+* CCD coarse calibration:
+ * Check if calib has succeeded per color now (fewer loops).
+ * Added loop detection now.
+ * Use the brightest CCD element as max_white now.
+ * Added debugging DEFINE to check the position of the black mark.
+ * Print which color is currently calibrated.
+ * Changed debug messages.
+* CIS coarse calibration:
+ * Removed offset multiplier.
+ * Changed limits.
+ * Changed debug messages.
+ * Incresed exposure count.
+ * Removed special lamp-warmup in CIS calibration.
+ * CIS coarse calibration now does gain and offset at the same time
+ similar to CCD calibration. This change should avoid loops.
+ * Print which color is currently calibrated.
+* Mustek ScanExpress A3 USB:
+ * Fixed black mark.
+ * Use CCD calib now.
+ * Use inverted offset.
+ * Warm up for 10 seconds minimum.
+ * Fixes for geometry.
+* Plustek OpticPro U16B (and Genius Vivid 4):
+ * Linemode is not supported
+ * Reduced vertical res to 600 dpi.
+* Mustek BearPaw 1200 TA:
+ * Fixed position of black mark.
+* Mustek BearPaw 2448 TA Plus:
+ * Fixed position of black mark.
+* Mustek BearPaw 1200 CU:
+ * Increased start of white strip.
+
+V 1.0-60 (2004-04-19)
+
+* Mustek BearPaw 2448 TA PLUS:
+ - Fixed resolution settings (added missing 200 dpi mode)
+ - Fixed margins
+ - Fixed black mark
+ - Fixed TA margins
+ - Removed untested flag
+ - Changed status to "good"
+
+V 1.0-59 (2004-04-10)
+
+* Used 0, 4, 4 as linedistance for Mustek A3 USB.
+* Other mionor fixes for A3 USB.
+* Removed "unsupported scanner warning" from Mustek A3 USB.
+* Added Genius Colorpage Vivid4 to .conf file. Changed status to good. Added
+ to man page.
+* Fixed black mark for Mustek BearPaw 2448 TA Plus. This one and the Mustek A3
+ fixes are from Jakub Dvořák <xdvorak@chello.cz>.
+* Status of BearPaw 2448 TA/CS Plus is "basic" now.
+
+V 1.0-58 (2004-04-04)
+
+* Added BGR color order for pixel mode. Until now, only line mode worked in
+ that mode.
+* Plustek U16B uses setup_scan for gt6816 now.
+* Fixed linedistance for Plustek U16B.
+* Enabled 16 bit mode for Plustek U16B.
+* Fixed margins for Plustek U16B.
+* Made 600 dpi mode for Mustek BearPaw 2400 TA Plus a bit faster.
+* Changed Mustek ScanExpress A3 linedistance correction to 1, 5, 5 (?).
+* Added detection of Visioneer Onetouch 7300.
+
+V 1.0-57 (2004-03-28)
+
+* Plustek U16B: Added GT68XX_FLAG_SE_2400. Fixed color order.
+* Increased debug level for setup_scan.
+* Fixed CCD ocarse calibration.
+
+V 1.0-56 (2004-03-19)
+
+* Genius Vivid 4xe now has color order RGB.
+* Removed 50 dpi for Mustek BearPaw 2448 as that resolution doesn't work.
+* Make sure that the lamp of the Mustek A3 USB gets warmed up. It's a CIS
+ scanner with a lamp. That code is untested.
+* Full scan starts scanning from the start position of the white strip now.
+
+V 1.0-55 (2004-03-06)
+
+* Added detection for Genius Vivid 1200 EX.
+* Fixed product id of Mustek BearPaw 2448 TA Plus.
+* Other minor updates.
+
+V 1.0-54 (2004-02-10)
+
+* Added basic support for Plustek OpticSlim 2400. Thanks to Radoslaw Grzanka and
+ Detlef Gausepohl for providing details and testing.
+* Fixed calibration debug output.
+
+V 1.0-53 (2004-01-19)
+
+* Debug options are only enabled if the debug level is 1 and higher. This may
+ stop some people from activating dangerous options.
+* Added product id 0x0402 for Plustek U16B.
+
+V 1.0-52 (2004-01-01)
+
+* gt68xx_gt6801.c: Fixed a bug in the stop scan function for Plustek U16b.
+* Added support for Genius Vivid4xe.
+
+V 1.0-51 (2003-12-14)
+
+* Changed color order to RGB vor Genius Vivid 4x. Seems to work now. Updated
+ manpage and .desc.
+* Set linedistance correction to 0, 4, 2 for ScanExpress A3 USB. Not perfect
+ yet but better than before.
+* Added Genius Colorpage Vivid3 V2 and Googlegear 2000 as supported deviced
+ to manpage and .desc.
+* Changed Genius Colorpage Vivid3x status to good as it seems to work now.
+* Changed status of Mustek BearPaw 2448 TA Plus to minimal as it seems to at
+ least scan something.
+
+V 1.0-50 (2003-11-23)
+
+* Added Mustek BearPaw 2448 TA Plus. It's completely untested.
+* Added special command set for Plustek U16B. Changed stop scan command and
+ download_firmware. Everything is untested.
+* Added Plug-n-Scan 2400 M(T) to list of devices. No positive report yet.
+* Used request for memory writes and reads instead of a fixed value of 0x04.
+* Set Genius Vivid4x to GT6816. Untested.
+
+V 1.0-49 (2003-09-30)
+
+* Fixed wrong test for allocation in gt68xx.c.
+* Added ScanMagic 1200 UB Plus to man page and .desc.
+* Added Settings for Plustek OpticSlim 1200
+* Added detection of Genius Vivid 4x. It won't work out-of-the-box, however.
+* CCD coarse calib shouldn't run into an endless loop anymore. Plustek 1248U
+ is much faster now.
+
+V 1.0-48 (2003-07-25)
+
+* Added RevScan 19200i to manpage and .desc file.
+* Updated .desc file to new :status system.
+* Added Fujitsu 1200CUS to man page, .conf and .desc.
+* Changed .conf file to be more readable.
+* Added RevScan 19200i to .conf file.
+* Added Plustek U16B to .desc and .conf, updated UT16B.
+
+V 1.0-47 (2003-06-05)
+
+* Don't check if the firmware is loaded. The check seems to confuse the USB
+ system on some UHCI chips.
+
+V 1.0-46 (2003-04-27)
+
+- Added Genius 3x as working scanner, removed testing flag.
+- Added Artec 2000 e+ to manpage.
+- Added detection for the Plustek OpticPro U16B.
+
+V 1.0-45 (2003-04-11)
+
+- Updated Mustek BearPaw 1200 CU Plus white strip value.
+- Set Mustek ScanExpress A3 USB to CCD. Black mark may be still wrong.
+- Minor formatting changes in the manpage.
+- Decreased ScanExpress A3 USB status to alpha because of CIS/CCD change.
+
+V 1.0-44 (2003-03-13)
+
+- Added Packard Bell Diamond 1200 Plus to .desc and manpage.
+- New flag to avoid running stop_scan before doing a scan. The Windows firmware
+ of the BearPaw 1200 CU Plus doesn't seem to like that.
+
+V 1.0-43 (2003-03-06)
+
+- Small requests are done with a response buffer of 8 bytes (instead of 64)
+ now. Looks like GT-6816 based scanners return 8 bytes if the firmware is
+ loaded and 64 bytes if it's not loaded.
+- Changed GT-6816 firmware check to ignore errors from above change.
+ GT-6816 scanners work with the BSDs now (at least once).
+- Updated manpage concerning the BSDs.
+
+V 1.0-42 (2003-03-02)
+
+- Make sure that the firmware for plustek-like scanners is loaded. Didn't work for
+ Genius vivid3xe.
+- Added both Genius scanners to man page.
+- Removed warning from Genius Vivid3xe.
+
+V 1.0-41 (2003-02-27)
+
+- Added Genius Colorpage Vivid3xe.
+- Added request_type and request fields to the command set. Request is 0x01
+ or 0x04.
+
+V 1.0-40 (2003-02-22)
+
+- Added vid/pid 0x07b3/0x0400 to gt68xx.conf also
+- Added indormation about Medion 4394.
+- Mention ma1509 backend.
+- Fix segfault when calling sane_open with an empty device name.
+- Explicitely initialize global variables to avoid segfaults when calling
+ sane_init/sane_exit more than once.
+
+V 1.0-39 (2003-02-16)
+
+- Added BearPaw 2400 CS Plus as supported.
+- Make fast preview the default (otherwise BP 2400 TA Plus wouldn't work with
+ 12/16 bits).
+- Added vid/pid 0x07b3/0x0400, that's another Plustek OpticPro 1248U.
+
+
+V 1.0-38 (2003-02-05)
+
+- Fixed resolutions for BearPaw 1200 TA (75 instead of 100).
+- Increase the lowest black for CCD coarse calibration to avoid too much black.
+- Adjusted internal gamma correction to avoid getting 0 for high gamma values.
+- CCD scanners use color mode for coarse+quality cal now. This fixes the
+ problem with extremly high gains and terrible quality cal in gray mode at
+ least for the BearPaw 1200 TA.
+--> Thanks to Alexei V. Mezin for reporting these bugs.
+- Preview isn't always in 8 bit mode now (can be selected by option).
+- Upper and lower limits for coarse calibration are unified now.
+- Added options for adjusting gain and offset.
+
+V 1.0-37 (2003-01-18)
+
+- Removed untested flag from A3 USB and Lexmark X70/X73.
+
+V 1.0-36 (2003-01-09)
+
+- Updated manpage and .desc concerning Lexmark X70.
+- Updated manpage concerning kernel 2.4.21-pre3 containing the 1-endpoint fix.
+- Fixed A3 USB resolution setting.
+- Updated A3 USB margins (Pedro Morais <morais@inocam.com>).
+- Added detection of Genius Colorpage Vivid3x. It's unknown if it works.
+- Updated .desc file.
+- Don't print calib line warnings by default.
+
+V 1.0-35 (2002-12-23)
+
+- Added "afe" option for gt68xx.conf for selecting default afe values.
+- Removed AFE and exposure SANE options.
+- Added documentation for afe option in gt68xx.conf.
+
+V 1.0-34 (2002-12-18)
+
+- fixed gt68xx_gt6801 -> lamp control.
+- adjusted Plustek 1248U geometry and afe values.
+- CCD gross calibration changed: start with the default value from module struct.
+ Is faster now for most cases.
+- Only 2.5 mm of calibration for GT-6801 scanners.
+
+V 1.0-33 (2002-12-10)
+
+- Updated ScanExpress 2400 USB values (from "Fan Dan" <dan_fancn@hotmail.com>).
+- Added implementation of gt6801 lamp control for CCD scanners.
+- Added flag for SE 2400 USB, added some quirks in gt68xx_gt6801.c.
+
+V 1.0-32 (2002-12-08)
+
+- "Coarse calibration for first scan only" is off by default now. As at least
+ CIS calibration is faster now, it doesn't seem to be necessary and produces
+ wrong images sometimes.
+- Added gamma table.
+- Setup gamma to 2.0 by default.
+- Fixed (hopefully) sigpipe when cancelling.
+- No geometry quantization anymore (not necessary). That should fix scanimage
+ warnings.
+- Plustek 1248U: do linemode for every resolution, fix color correction.
+- Set SANE_CAP_EMULATED for gamma value.
+- Added comments for every Model member in gt68xx_devices.
+- Added Plustek UT16B and Genius Vivid3x to .desc.
+- Added implementation for inverted offset for CCD scanners.
+- Added Mustek ScanExpress 2400 USB. Well, at least it's detected.
+- Added NEW marker to .desc.
+
+V 1.0-31 (2002-11-21)
+
+- Changed 150 to 200 dpi for Mustek BearPaw 2400 TA.
+- Fixed warnings in gt68xx_low.c
+- Used DBG instead of XDBG in gt68xx_low.c
+- Minor manpage fixes. Added man page links to other backends.
+- gt68xx_low.h: Fixed __FUNCTION__ bug on non-gcc compilers.
+- Added more details about the BSDs in the manpage.
+- Fixed color order for ScanExpress A3 USB.
+
+V 1.0-30 (2002-11-13)
+
+- Added basic support for Plustek OpticPro 1248U (from Gerhard Jaeger
+ <gerhard@gjaeger.de>). Only gray mode without calib seems to work until
+ now.
+- Removed 50 and 1200 dpi from Lexmark X73 (doesn't seem to work). Decreased
+ height.
+- Backend status is BETA now.
+
+V 1.0-29 (2002-11-07)
+
+- Changed option titles and descriptions to make them better readable.
+- Added translation markers for all options.
+- Added German translation for backend options.
+- Updated manpage and .desc file concerning scanner status.
+- Added untested flag for Mustek ScanEpress A3 USB and Lexmark X73.
+
+V 1.0-28 (2002-10-31)
+
+- Reduce scan width of 2400 TA Plus: otherwise the black mark would create
+ light vertical stripes.
+- Removed default parameters. Set AFE and exposure in every model struct.
+- Faster automatic gain setting for the CIS scanners. The default values from
+ the model struct and the last values are used for calculation.
+- Set default AFE values for ScanExpress 1200 UB Plus, BearPaw 1200 CU, BearPaw
+ 2400 CU Plus.
+
+V 1.0-27 (2002-10-25)
+
+- Bugfix: override applies to all devices found by the last usb line.
+- Individual resolutions + depth values for every scanner.
+- Bugfix: Mirroring code had an off-by-one error (garbage in the first column).
+- Artec Ultima 2000, MD 9385: Removed 1200 dpi mode (doesn't seem to work?),
+ added 100 and 200 dpi modes. Renamed model to Artec Ultima 2000, because
+ that's probably the "father" of all the clones.
+- Mustek BearPaw 1200 CU: Added 200 dpi mode.
+- Added manual page.
+- Removed override for Packard Bell (seems to be exact Bearpaw 1200 CU Plus
+ clone).
+- Removed override for Trust Copmact Scan and Medion/Tevion/Lifetec LT 9452
+ (Mustek ScanExpress 1200 UB Plus clones).
+- Removed override for Tevion MD 9458 (seems to be an Artec Ultima 2000 (e +?)
+ clone).
+
+V 1.0-26 (2002-10-22)
+
+- Several fixes for Medion MD-9385 and Artec Ultima 2000 based scanners. The
+ Cytron MD 9385 works now.
+- Diabled Plustek-like firmware check again, didn't work for MD 9385.
+- Splitted flags for mirror_x and sset_home.
+
+V 1.0-25 (2002-10-20)
+
+- Fixed segfault for GT-6801 based scanners.
+- Added override for Medion MD9385.
+- Changed firmware detection code for Plustek scanners.
+- CIS autogain seraches max white and min black now (removed segment code).
+ Hopefully no more vertical stripes.
+- Adjusted ScanExpress 1200 UB Plus and BearPaw 1200 CU geometry and white
+ strip.
+
+V 1.0-24 (2002-10-12)
+
+- Added "override" keyword for gt68xx.conf. So model settings can be changed
+ at run-time. If set up correctly, firmware lines aren't necessary any more.
+- Added support for the Mustek BearPaw 2400 CU.
+- Tevion hack (now enabled by override option) also mirrors coordinates.
+- Mustek BearPaw 1200 TA 1200 dpi is set up for the Windows firmware again.
+- Added some basic I18N markers.
+- Removed option backtrack (setup automatically now).
+
+V 1.0-23 (2002-10-10),
+
+- Added detection of Mustek BearPaw A3 USB.
+- Added auto-detection of lamp status for CCD scanners (from David Stevenson).
+ No wait for the fixed time of 40 seconds any more.
+- The scan slider of the GT-6816 bsed scanners don't move home after
+ calibration/gain. TA mode is faster therefore.
+- Added hack for Tevion MD 9458 to solve the mirror and "scan-slider doesn't
+ come home" problems.
+- Fixed BearPaw 1200 TA 1200 dpi problem.
+- Fixed manual firmware selection in gt68xx.conf.
+- Added warning if power supply isn't ok.
+
+V 1.0-22 (2002-10-07),
+
+- Mustek Bearpaw 2400 CU Plus works in gray mode again
+- Line calibration uses the bit depth of the main scan now.
+- Vendor, product ids and other information is printed when debugging is active
+- Fixed segfault in attach ().
+- Fixed endianess issues (untested).
+- Code cleanup.
+
+V 1.0-21 (2002-10-07),
+
+- Added 12 bit modes for all scanners (Sergey Vlasov).
+- Fixed 2400 TA Plus in 12/16 bit modes in 1200/2400 dpi.
+- Disable depth option in lineart mode and for some scanners in gray mode.
+- Scan preview in 8 bit.
+
+V 1.0-20 (2002-10-06)
+
+- Calibration of the CCD scanners in gray mode should work better now.
+- Added 50 dpi mode for BearPaw 2400 TA Plus. Faster preview.
+- By default, /usr/local/share/sane/gt68xx/ is checked for firmware files.
+ Manual adjustment is only necessary if the firmware name is different from
+ default or at a different path.
+- Mixed and lower-case is tried when loading the firmware.
+- Adjusted geometry of BearPaw 1200 TA and 2400 TA.
+- Automatic gain fixes for TA mode.
+- Don't show "lamp off" option for CIS scanners.
+
+V 1.0-19 (2002-10-01)
+
+- Various minor fixes and adjustments concerning calibration.
+- Fixed sane_open detection of already known devices.
+- Added missing usleep for 2400 CU Plus.
+- Adjusted scan area for 1200 TA.
+- Removed detection of Artec Umltima 2000 (product id 0x4001) as this is not
+ a GT-68xx based scanner.
+- Fixed some compilation warnings.
+- Minor misc fixes.
+
+V 1.0-18 (2002-10-01)
+
+- Added detection of Artec Ultima 2000.
+- Updated Lexmark X70 settings.
+- Fixed segfault that occured when no device was detected.
+- Changed test for loaded firmware for GT-6801 scanners.
+
+V 1.0-17 (2002-10-01)
+
+- Added support for the Lexmark X70 and X73 scanners
+- Fixed shifted columns problem for BearPaw 2400 TA Plus and maybe 2400 TA.
+- Fixed y-margin for the BearPaw 1200 TA (at least I hope so)
+- Fixed BearPaw 2400 CU Plus firmware name
+- Removed gt68xx_test program from distribution. Didn't work anymore anyway.
+
+V 1.0-16 (2002-09-29)
+
+- Added calibration and auto-gain support for transparency adapter mode.
+- In transparency adapter mode, only the usable scan area is shown.
+- Autogain is repeated when source was change.d
+- Fixed geometry of ScanExpress 1200 UB Plus.
+- Fixed freeze at the end of scan for GT-6801-based scanners.
+
+V 1.0-15 (2002-09-27)
+
+- Low level reading is done in a separate process now (shm is back). Some
+ scanners should be faster therefore.
+- Added option "force backtracking". If disabled, no backtracking occurs
+ (->faster, but lines are lost).
+- Fixed hang in reader_process.
+- Fixed "auto gain once" (which really worked only once :-/)
+
+V 1.0-14 (2002-09-25)
+
+- Added basic transaprency adapter support for the Mustek Bearpaw 2400 TA
+ Plus. Other TA models may work also. No calibration or other nice features,
+ just pure external lamp on, internal lamp of.
+- Support for the Mustek BearPaw 1200 Cu Plus (hopefully).
+- Added Lineart (black/white) mode.
+- Added warming-up for CCD lamps and an option to disable shutting off the
+ lamp.
+- Print scanning time (debug level 3).
+- Removed "safe preview". Not longer necessary.
+
+V 1.0-13 (2002-09-25)
+
+- Major rewrite of the low level scan setup functions. Probably has broken
+ some of the supported scanners.
+- Geometry in the model struct is in mm now. Values for most scanners are
+ untested.
+- Added support for Mustek Bearpaw 2400 CU Plus.
+- CCD lamp is turned on when opening the frontend and turned off when leaving.
+- Auto gain is done only for the first scan.
+- Manual gain etc. options don't show up in automatic mode.
+- Faster automatic gain.
+- Bugfixes: gain/offset options, moving top-margin and exposure control.
+
+V 1.0-12 (2002-09-23)
+
+- Fixed bug concerning too little data transferred in sane_read.
+- Added detection of the Packard Bell Diamond 1200.
+- Changed some scanner names and added support for custom names in config file.
+- Use the size of the scan area in the model struct. This value may need
+ some tweaking for the gt6816 scanners.
+- Fixed the size of scanarea for the BearPaw 1200 CU/ScanEpress 1200 UB Plus
+- Disabled 16 bit mode for GT-6801 scanners. This isn't even supported by the
+ Windows driver.
+- General code cleanup. Removed gt68xx_mustek.c and SHM support.
+- Made the .tar.gz file size smaller.
+
+V 1.0-11 (2002-09-22)
+
+- 1200 dpi works now at least for the BearPaw 1200 CU. Maybe also for the
+ other scanners.
+- Added manual and automatic offset/gain/exposure control for the CIS
+ scanners. The image should be better now.
+- Added debug option to scan the full scan area including the calibration
+ strip.
+
+V 1.0-10 (2002-09-18)
+
+- 50, 75, 150, 300, 600 work now for the GT6801 scanners
+- Preview is fast again (can be set to safe/slow mode)
+- Calibration can be disabled by option
+- Added some more safety checks for USB commands
+- The gt68xx_test program can be used again
+
+V 1.0-9 (2002-09-17)
+
+- Added option to disable automatic gain (->less ugly colors for GT-6801
+ based models)
+- Fixed segfault that occured when a scan was cancelled
+- Preview uses slow but safe (?) 300 dpi 8 bit modes now
+- Fixed bug concerning X0/Y0 coordinates
+- Started implementing dpeth option (doesn't work yet)
+- Internal changes (use high_scan's wait_for_positioning)
+
+V 1.0-8 (2002-09-16)
+
+- Fixed distortion problem in color mode
+- Selected safer default option values
+- Changed file names to be more appropriate for SANE
+
+V 1.0-7 (2002-09-16)
+
+- Initial version based on Sergey Vlasov's gt68xx backend v 0.0.6
+- Added basic SANE interface in gt68xx.c
+- Added SANE options and SANE variables to gt68xx_high.h
+- Minor adjustments to gt68xx_low.h
+- Added support for Mustek BearPaw 2400 TA Plus
diff --git a/doc/gt68xx/gt68xx.TODO b/doc/gt68xx/gt68xx.TODO
new file mode 100644
index 0000000..74aeb17
--- /dev/null
+++ b/doc/gt68xx/gt68xx.TODO
@@ -0,0 +1,105 @@
+gt68xx.TODO -*-text-*-
+
+General:
+--------
+
+- some sort of fixed lookup-table may be necessary to compensate for the
+ non-linear CCD/CIS behaviour. A gamma value is not good enough. Or maybe line
+ calibration can be used for that?
+- Some Plustek scanners are advertised with e.g. 1200x2400 but the maximum
+ vertical resolution seems to be limited to the horizontal one. Check if
+ that's really the case.
+- Keep a log of all gain/offset combinations already tested and break if
+ one is repeated to avoid endless loops.
+- Print commands that are send to the scanner in clear text.
+- Try to implement non-blocking USB bulk reads, check libusb CVS.
+
+CCD:
+----
+
+Mustek BearPaw 2400 TA Plus:
+- some lines at the beginning of each image have wrong colors (linedistance?)
+ This seems to happen with other scanners, too.
+- 600 dpi no backtrack, 1200, 2400 dpi backtrack (gray), check with windows for
+ color
+- 600 dpi 12 bit seems to work in pixel mode only (but long lines are too big!)
+
+Mustek BearPaw 1200 TA:
+- similar color problem as 2400 TA Plus, doesn't always happen?
+
+Mustek BearPaw 2448 TA Plus:
+- all modes are slow (massive backtracking). If connected to a USB2 port, the
+ backtracking ich much less despite this scanner can't do USB2. Strange.
+- Sometimes there is a USB protocol error when cancelling the scan?
+- top borders move with resolution (happened in the early days with 2400 TA!)
+- gray scans have different brightness
+- scan motor is bumpy and freezes sometimes, looks like accelaration is too big
+ (firmware problem?)
+- vertical stripes
+- TA settings are wrong
+- no backtrack >= 600 dpi (also gray!)
+- don't move before and after scan
+- check jpeg output, maybe this can be used for faster scans
+
+Plustek 1248U:
+- Linedistance seems to have problems in the first few and the last lines.
+- Gain and offset values are quite high. Optimum values are not reached. Problem
+ with coarse calib? Better algorithm needed.
+- Images in color mode sometimes look too redish (result of above problem).
+- quite slow when full width is selected. Lots of backtracking.
+- Check if pixel mode is possible.
+- Check again 600x1200 dpi.
+
+Plustek U16B:
+- 600 dpi 16 bit is limited to about half the size of the scan area because
+ only pixel mode works and 16k is the maximum buffer size.
+- After scanning, a run of sane-find-scanner leads to a protocol error and
+ scanning does no longer work.
+
+Genius ColorPage Vivid 1200XE
+- 16 bit per color is advertized but this mode doesn't seem to work
+ (only 12 bit)?
+- 1200x1200 and 1200x2400 dpi doesn't seem to work despite being advertized
+- Y-positioning varies slightly with resolution (some mm)
+
+CIS:
+----
+
+- It may be necessary to do an additional exposure calibration before the
+ offset/gain calibration to compensate for different intensities of the
+ colored leds. Especially for the Mustek 2400 CU Plus.
+- Changing exposure doesn't seem to have any effect during calibration
+ sometimes while it has an effect on the final image?
+
+Mustek BearPaw 1200 CU
+- ok
+
+Mustek BearPaw 1200 CU Plus (0x021b)
+- ok, but similar exposure problems as 2400 CU Plus
+
+Mustek BearPaw 2400 CU Plus
+- ok, but exposure setting may need to be done automatically if the intensity
+ of the colors varies for different scanners.
+- calibration/exposure has sometimes sharp jumps in intensity. Reason is
+ unknown.
+
+Mustek ScanExpress A3 USB
+- still slight vert. stripes
+- why is line distance setup necessary?
+- line distance varies with resolution (0,5,5 at 300 dpi, 0, 6, 7 with 150 dpi)
+- exposure doesn't seem to have any effect
+
+Mustek ScanExpress 1248 UB
+ok
+
+Plustek OpticSlim 2400
+- only upto 1200 dpi vertical works
+- only 8 and 12 bit work, 16 doesn't (check Windows)
+- exposure is extremely high and seems to have similar problems as with other
+ CIS scanners (reaches limit also)
+
+Mustek ScanExpress 2400 USB
+- make it work (nobody seems to have this device)
+
+Visioneer OneTouch 7300
+- 16 bit doesn't seem to work despite beeing advertized
diff --git a/doc/html.sty b/doc/html.sty
new file mode 100644
index 0000000..5b55985
--- /dev/null
+++ b/doc/html.sty
@@ -0,0 +1,232 @@
+% LaTeX2HTML Version 95.1 : html.sty
+%
+% This file contains definitions of LaTeX commands which are
+% processed in a special way by the translator.
+% For example, there are commands for embedding external hypertext links,
+% for cross-references between documents or for including
+% raw HTML.
+% This file includes the comments.sty file v2.0 by Victor Eijkhout
+% In most cases these commands do nothing when processed by LaTeX.
+
+% Modifications:
+%
+% nd = Nikos Drakos <nikos@cbl.leeds.ac.uk>
+% jz = Jelle van Zeijl <jvzeijl@isou17.estec.esa.nl>
+
+% jz 22-APR-94 - Added support for htmlref
+% nd - Created
+
+
+
+% Exit if the style file is already loaded
+% (suggested by Lee Shombert <las@potomac.wash.inmet.com>
+\ifx \htmlstyloaded\relax \endinput\else\let\htmlstyloaded\relax\fi
+
+%%% LINKS TO EXTERNAL DOCUMENTS
+%
+% This can be used to provide links to arbitrary documents.
+% The first argumment should be the text that is going to be
+% highlighted and the second argument a URL.
+% The hyperlink will appear as a hyperlink in the HTML
+% document and as a footnote in the dvi or ps files.
+%
+\newcommand{\htmladdnormallinkfoot}[2]{#1\footnote{#2}}
+
+% This is an alternative definition of the command above which
+% will ignore the URL in the dvi or ps files.
+\newcommand{\htmladdnormallink}[2]{#1}
+
+% This command takes as argument a URL pointing to an image.
+% The image will be embedded in the HTML document but will
+% be ignored in the dvi and ps files.
+%
+\newcommand{\htmladdimg}[1]{}
+
+%%% CROSS-REFERENCES BETWEEN (LOCAL OR REMOTE) DOCUMENTS
+%
+% This can be used to refer to symbolic labels in other Latex
+% documents that have already been processed by the translator.
+% The arguments should be:
+% #1 : the URL to the directory containing the external document
+% #2 : the path to the labels.pl file of the external document.
+% If the external document lives on a remote machine then labels.pl
+% must be copied on the local machine.
+%
+%e.g. \externallabels{http://cbl.leeds.ac.uk/nikos/WWW/doc/tex2html/latex2html}
+% {/usr/cblelca/nikos/tmp/labels.pl}
+% The arguments are ignored in the dvi and ps files.
+%
+\newcommand{\externallabels}[2]{}
+
+% This complements the \externallabels command above. The argument
+% should be a label defined in another latex document and will be
+% ignored in the dvi and ps files.
+%
+\newcommand{\externalref}[1]{}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Comment.sty version 2.0, 19 June 1992
+% selectively in/exclude pieces of text: the user can define new
+% comment versions, and each is controlled separately.
+% This style can be used with plain TeX or LaTeX, and probably
+% most other packages too.
+%
+% Examples of use in LaTeX and TeX follow \endinput
+%
+% Author
+% Victor Eijkhout
+% Department of Computer Science
+% University Tennessee at Knoxville
+% 104 Ayres Hall
+% Knoxville, TN 37996
+% USA
+%
+% eijkhout@cs.utk.edu
+%
+% Usage: all text included in between
+% \comment ... \endcomment
+% or \begin{comment} ... \end{comment}
+% is discarded. The closing command should appear on a line
+% of its own. No starting spaces, nothing after it.
+% This environment should work with arbitrary amounts
+% of comment.
+%
+% Other 'comment' environments are defined by
+% and are selected/deselected with
+% \includecomment{versiona}
+% \excludecoment{versionb}
+%
+% These environments are used as
+% \versiona ... \endversiona
+% or \begin{versiona} ... \end{versiona}
+% with the closing command again on a line of its own.
+%
+% Basic approach:
+% to comment something out, scoop up every line in verbatim mode
+% as macro argument, then throw it away.
+% For inclusions, both the opening and closing comands
+% are defined as noop
+%
+% Changed \next to \html@next to prevent clashes with other sty files
+% (mike@emn.fr)
+% Changed \html@next to \htmlnext so the \makeatletter and
+% \makeatother commands could be removed (they were causing other
+% style files - changebar.sty - to crash) (nikos@cbl.leeds.ac.uk)
+% Changed \htmlnext back to \html@next...
+
+\makeatletter
+\def\makeinnocent#1{\catcode`#1=12 }
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+
+\def\ThrowAwayComment#1{\begingroup
+ \def\CurrentComment{#1}%
+ \let\do\makeinnocent \dospecials
+ \makeinnocent\^^L% and whatever other special cases
+ \endlinechar`\^^M \catcode`\^^M=12 \xComment}
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \gdef\xComment#1^^M{\def\test{#1}
+ \csarg\ifx{PlainEnd\CurrentComment Test}\test
+ \let\html@next\endgroup
+ \else \csarg\ifx{LaLaEnd\CurrentComment Test}\test
+ \edef\html@next{\endgroup\noexpand\end{\CurrentComment}}
+ \else \let\html@next\xComment
+ \fi \fi \html@next}
+}
+\makeatother
+
+\def\includecomment
+ #1{\expandafter\def\csname#1\endcsname{}%
+ \expandafter\def\csname end#1\endcsname{}}
+\def\excludecomment
+ #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}%
+ {\escapechar=-1\relax
+ \csarg\xdef{PlainEnd#1Test}{\string\\end#1}%
+ \csarg\xdef{LaLaEnd#1Test}{\string\\end\string\{#1\string\}}%
+ }}
+
+\excludecomment{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% RAW HTML
+%
+% Enclose raw HTML between a \begin{rawhtml} and \end{rawhtml}.
+% The html environment ignores its body
+%
+\excludecomment{rawhtml}
+
+%%% HTML ONLY
+%
+% Enclose LaTeX constructs which will only appear in the
+% HTML output and will be ignored by LaTeX with
+% \begin{htmlonly} and \end{htmlonly}
+%
+\excludecomment{htmlonly}
+% Shorter version
+\newcommand{\html}[1]{}
+
+
+%%% LaTeX ONLY
+% Enclose LaTeX constructs which will only appear in the
+% DVI output and will be ignored by latex2html with
+%\begin{latexonly} and \end{latexonly}
+%
+\newenvironment{latexonly}{}{}
+% Shorter version
+\newcommand{\latex}[1]{#1}
+
+%%% HYPERREF
+% Suggested by Eric M. Carol <eric@ca.utoronto.utcc.enfm>
+% Similar to \ref but accepts conditional text.
+% The first argument is HTML text which will become ``hyperized''
+% (underlined).
+% The second and third arguments are text which will appear only in the paper
+% version (DVI file), enclosing the fourth argument which is a reference to a label.
+%
+%e.g. \hyperref{using the tracer}{using the tracer (see Section}{)}{trace}
+% where there is a corresponding \label{trace}
+%
+\newcommand{\hyperref}[4]{#2\ref{#4}#3}
+
+%%% HTMLREF
+% Reference in HTML version only.
+% Mix between \htmladdnormallink and \hyperref.
+% First arg is text for in both versions, second is label for use in HTML
+% version.
+\newcommand{\htmlref}[2]{#1}
+
+%%% HTMLIMAGE
+% This command can be used inside any environment that is converted
+% into an inlined image (eg a "figure" environment) in order to change
+% the way the image will be translated. The argument of \htmlimage
+% is really a string of options separated by commas ie
+% [scale=<scale factor>],[external],[thumbnail=<reduction factor>
+% The scale option allows control over the size of the final image.
+% The ``external'' option will cause the image not to be inlined
+% (images are inlined by default). External images will be accessible
+% via a hypertext link.
+% The ``thumbnail'' option will cause a small inlined image to be
+% placed in the caption. The size of the thumbnail depends on the
+% reduction factor. The use of the ``thumbnail'' option implies
+% the ``external'' option.
+%
+% Example:
+% \htmlimage{scale=1.5,external,thumbnail=0.2}
+% will cause a small thumbnail image 1/5th of the original size to be
+% placed in the final document, pointing to an external image 1.5
+% times bigger than the original.
+%
+\newcommand{\htmlimage}[1]{}
+
+%%% HTMLADDTONAVIGATION
+% This command appends its argument to the buttons in the navigation
+% panel. It is ignored by LaTeX.
+%
+% Example:
+% \htmladdtonavigation{\htmladdnormallink
+% {\htmladdimg{http://server/path/to/gif}}
+% {http://server/path}}
+\newcommand{\htmladdtonavigation}[1]{}
+
+% typeset a url:
+\newcommand{\url}[1]{\texttt{#1}}
diff --git a/doc/icons/contents.gif b/doc/icons/contents.gif
new file mode 100644
index 0000000..7b3c904
--- /dev/null
+++ b/doc/icons/contents.gif
Binary files differ
diff --git a/doc/icons/index.gif b/doc/icons/index.gif
new file mode 100644
index 0000000..b9b3108
--- /dev/null
+++ b/doc/icons/index.gif
Binary files differ
diff --git a/doc/icons/next.gif b/doc/icons/next.gif
new file mode 100644
index 0000000..7a2dbe9
--- /dev/null
+++ b/doc/icons/next.gif
Binary files differ
diff --git a/doc/icons/next_gr.gif b/doc/icons/next_gr.gif
new file mode 100644
index 0000000..1416b1c
--- /dev/null
+++ b/doc/icons/next_gr.gif
Binary files differ
diff --git a/doc/icons/previous.gif b/doc/icons/previous.gif
new file mode 100644
index 0000000..aef90f1
--- /dev/null
+++ b/doc/icons/previous.gif
Binary files differ
diff --git a/doc/icons/previous_gr.gif b/doc/icons/previous_gr.gif
new file mode 100644
index 0000000..c6acaab
--- /dev/null
+++ b/doc/icons/previous_gr.gif
Binary files differ
diff --git a/doc/icons/references.gif b/doc/icons/references.gif
new file mode 100644
index 0000000..68c6331
--- /dev/null
+++ b/doc/icons/references.gif
Binary files differ
diff --git a/doc/icons/references_gr.gif b/doc/icons/references_gr.gif
new file mode 100644
index 0000000..682548c
--- /dev/null
+++ b/doc/icons/references_gr.gif
Binary files differ
diff --git a/doc/icons/up.gif b/doc/icons/up.gif
new file mode 100644
index 0000000..3d1aebf
--- /dev/null
+++ b/doc/icons/up.gif
Binary files differ
diff --git a/doc/icons/up_gr.gif b/doc/icons/up_gr.gif
new file mode 100644
index 0000000..a8b463a
--- /dev/null
+++ b/doc/icons/up_gr.gif
Binary files differ
diff --git a/doc/leo/leo.txt b/doc/leo/leo.txt
new file mode 100644
index 0000000..4f4eb61
--- /dev/null
+++ b/doc/leo/leo.txt
@@ -0,0 +1,141 @@
+
+ BACKEND LEO
+
+Across Technologies FS-1130
+(A rebadged LEO Technologies)
+ 000: 06 31 14 01 1f 00 00 00 41 43 52 4f 53 53 20 20 .1......ACROSS
+ 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 032: 31 2e 31 36 09 f6 0d b6 01 2c 01 2c 39 36 30 30 1.16.....,.,9600
+
+
+LEO LEOScan S3:
+ 000: 06 31 14 01 1F 00 00 00 4C 45 4F 20 20 20 20 20 .1......LEO
+ 016: 4C 45 4F 53 63 61 6E 2D 53 33 20 20 20 20 20 20 LEOScan-S3
+ 032: 33 2E 30 31 09 F6 0D B6 01 2C 01 2C 39 36 30 30 3.01.....,.,9600
+
+or
+ 000: 06 00 02 02 1f 00 00 00 4c 45 4f 00 00 00 00 00 ........LEO.....
+ 016: 4c 45 4f 53 63 61 6e 2d 53 33 00 00 00 00 00 00 LEOScan-S3......
+ 032: 31 2e 31 30 1.10
+
+Genius FS1130
+ 000: 06 31 14 01 1f 00 00 00 4b 59 45 20 43 4f 52 50 .1......KYE CORP
+ 016: 43 6f 6c 6f 72 50 61 67 65 2d 43 53 20 20 20 20 ColorPage-CS
+ 032: 31 2e 31 34 1.14
+
+/*--------------------------------------------------------------------------*/
+
+SCSI commands supported by the FS-1130
+
+
+TEST UNIT READY
+00 00 00 00 00 00
+
+
+INQUIRY
+12 00 00 00 30 00
+ 8-15: vendor name
+ 16-31: product name
+ 32-35: firmware level
+ 36-37: scan area width in 1/300th of inches
+ 38-39: scan area length in 1/300th of inches
+ 40-41: max X resolution in dpi
+ 42-43: max Y resolution in dpi
+ 44-47: ?
+
+
+SCAN
+1B 00 00 00 00 00
+Start a scan
+
+
+SET WINDOW
+24 00 00 00 00 00 30 00 00 00
+Total length is 48 bytes
+ 01 = 0x2E (may be 0x30 - 2, ie total length -2)
+ 07 = length (48-8 = 40 = 0x28)
+ 10-11 = X Resolution
+ 12-13 = Y resolution
+ 14-17 = X top left corner
+ 18-21 = Y top left corner
+ 22-25 = width (size in inches * 300)
+ 26-29 = length (size in inches * 300)
+ 31 = 0x80 ?
+ 33 = scan mode
+ 0x00 = black & white
+ 0x01 = halftone
+ 0x02 = grayscale
+ 0x05 = color
+ 34 = bit depth
+ 1 or 8
+ 37 = ? RIF + other
+ 43 = ? 0x01
+
+
+READ
+28 00 00 00 00 00 00 0B 28 00
+
+
+SEND
+2A 00 03 00 00 01 00 03 00 00
+2A 00 02 00 00 0F 00 01 00 00
+ 2 = data type code
+ 0x02 = halftone pattern
+ 0x03 = gamma - 3 colors with 256 bytes each
+
+
+GET DATA BUFFER STATUS
+34 00 00 00 00 00 00 00 10 00
+ 7-8 allocation length
+
+ returned buffer is 0x10 bytes long.
+ 00 00 0D 00 00 00 03 D3 60 00 00 00 01 48 00 EE
+
+ 0-2 = additional length (0x10-3 = 0x0D)
+ 6-8 = (?) total scan length
+ 9-11 = filled data buffer
+ 12-13 = number of lines left (decrease during a scan)
+ 14-15 = bytes per line (constant during a scan)
+
+
+/*--------------------------------------------------------------------------*/
+
+Command sequence for the FS-1130
+
+Setup the scan:
+ TUR
+ SET WINDOWS
+ SEND gamma
+ SEND haltone pattern (if halftone scan)
+ SCAN
+ TUR until scanner ready
+ GET DATA BUFFER STATUS
+
+loop until all data read:
+ GET DATA BUFFER STATUS
+ READ
+
+park the CCD:
+ SET WINDOWS
+ TUR
+ SCAN
+
+/*--------------------------------------------------------------------------*/
+
+Command sequence for the S3
+
+It seems similar to the FS-1130 except that no gamma nor halftone pattern is sent.
+
+Setup the scan:
+ TUR
+ SET WINDOWS
+ SCAN
+ TUR until scanner ready
+
+loop until all data read:
+ GET DATA BUFFER STATUS
+ READ
+
+park the CCD:
+ SET WINDOWS
+ SCAN
diff --git a/doc/matsushita/matsushita.txt b/doc/matsushita/matsushita.txt
new file mode 100644
index 0000000..72b8fcd
--- /dev/null
+++ b/doc/matsushita/matsushita.txt
@@ -0,0 +1,189 @@
+Made by Kyushu Matsushita Electric, a.k.a. Panasonic
+http://www.kme.panasonic.co.jp/
+http://panasonic.com/
+
+The same twain driver handle these scanners:
+Same family as KV-SS25, KV-SS50, KV-SS55, KV-SS50EX, KV-SS55EX, KV-SS850, KV-SS855.
+
+Another driver handle the KV-S2055L, KV-S2055W.
+
+However all these scanner show similarities.
+
+/*--------------------------------------------------------------------------*/
+
+SCSI commands supported by the KV-SS25:
+
+TEST UNIT READY:
+00 00 00 00 00 00
+
+REQUEST SENSE:
+03 00 00 00 0E 00
+ a return after a short read is:
+ f0 00 60 00 00 00 02 0a 00 00 00 00 00 00 00 00
+ a return after a jam (sure?)
+ f0 00 03 00 00 00 00 0a 00 00 00 00 80 01 00 00
+ no paper
+ f0 00 03 00 00 00 00 0a 00 00 00 00 3a 00 00 00
+ jam door open:
+ f0 00 02 00 00 00 00 0a 00 00 00 00 04 81 00 00
+ paper jam
+ f0 00 03 00 00 00 00 0a 00 00 00 00 80 04 00 00
+ after a power cycle
+ f0 00 06 00 00 00 00 0a 00 00 00 00 29 00 00 00
+ after ????
+ f0 00 05 00 00 00 00 0a 00 00 00 00 2c 02 00 00
+ out of memory (scan data too big for scanner)
+ f0 00 05 00 00 00 00 0a 00 00 00 00 2c 80 00 00
+
+INQUIRY:
+12 00 00 00 60 00
+ result:
+ 06 00 02 02 5B 00 00 10 4B 2E 4D 2E 45 2E 20 20
+ 4B 56 2D 53 53 32 35 41 20 20 20 20 20 20 20 20
+ 31 2E 30 35 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+
+SET WINDOWS:
+24 00 00 00 00 00 00 00 00 00
+ reset (?)
+24 00 00 00 00 00 00 00 48 00
+ 72 bytes.
+ 6-7 = 0x40 = window descriptor length
+
+ Window Descriptor Block:
+ 0 = page side
+ 0x00 = front
+ 0x80 = back
+ 2-3 = X resolution
+ 4-5 = Y Resolution
+ 14-17 = width (size in inches * 1200)
+ 18-21 = length (size in inches * 1200)
+ 22 = 255 - brightness
+ 23 = same as 22
+ 24 = contrast
+ 25 = image composition
+ 0x00 = black&white (1 bit)
+ 0x01 = black&white with halftone pattern
+ 0x02 = grayscale
+ 26 = bits/pixel
+ 0x01, if image comp == 0
+ 0x04, if image comp == (0x01 || 0x02) -> grayscale 4 bits
+ 0x08, if image comp == 0x02 -> grayscale 8 bits
+ 28 = haltone pattern
+ 0x00 = Bayer 64
+ 0x01 = Bayer 16
+ 0x02 = Dot 32
+ 0x03 = Dot 64
+ 0x04 = Error diffusion
+ 0x80 = User downloaded pattern
+ 29 = reverse image
+ 0x00 = no reverse
+ 0x80 = reverse
+ 43 = image emphasis
+ 0x80 smooth
+ 0x00 none
+ 0x01 low
+ 0x30 medium (twain default)
+ 0x50 high
+ 44 = gamma (Gray 4/8 only)
+ 0x00 normal
+ 0x01 from CRT
+ 0x80 gamma table 0 (previously downloaded)
+ 0x81 gamma table 1 (previously downloaded)
+ 0x82 gamma table 2 (previously downloaded)
+ 0x83 gamma table 3 (previously downloaded)
+ 47 = ? (only used by the ISIS driver)
+ bit 7 = ? set by the ISIS driver
+ bit 6 = length control
+ bit 2 = ? set by the ISIS driver
+ bit 1 = ? set by the ISIS driver
+ 48-51 = width (again?, maybe paper size)
+ 52-55 = length (again?, maybe paper size)
+ 57 = feeder mode
+ 0x00 = one page
+ other = number of pages to read (TWAIN driver defaults to 0xff)
+ 58 = auto threshold
+ 0x00 = none (twain default)
+ 0x80 = mode 1
+ 0x81 = mode 2
+ 0x82 = mode 3
+ 59 = automatic separation
+ 0x00 = no (twain default)
+ 0x80 = yes
+ 60 = white level
+ 0x00 = from white stick (twain default)
+ 0x80 = from paper
+ 0x81 = automatic
+ 61 = noise reduction
+ 0x00 = none (twain default)
+ 0x01 = 1x1
+ 0x02 = 2x2
+ 0x03 = 3x3
+ 0x04 = 4x4
+ 0x05 = 5x5
+
+READ:
+28 00 80 00 00 00 00 00 10 00
+28 00 00 00 00 00 00 80 00 00
+ 2 = data type code
+ 0x00 image data
+ The TWAIN driver always reads 0x8000 bytes at the time, except for
+ the last packet where it read the size left plus 2 more bytes (and
+ thus generating a check condition).
+
+ 5: page side
+ 0x00 = front
+ 0x80 = back
+
+ 0x80 image size in dots
+ 3(?)-4: number of the page to read. Multipage mode.
+
+ returns 16 bytes:
+ 0-3: length in pixels
+ 4-7: width in lines
+
+SEND(10):
+ 2A 00 03 00 00 01 00 01 0A 00
+ 2 = data type code
+ 0x02 = halftone pattern
+ data is 10 bytes of header + 64 bytes for the matrix
+ 0x03 = gamma table
+ data is 10 bytes of header + 256 bytes for the table
+ 5 = gamma table number (data type code is 2)
+ the scanner can store 4 gamma tables (from 0 to 3)
+ 7-8 = length
+
+SET AREA (?)
+C0 00 00 00 00 00 00 00 58 00
+Total message length = 88 bytes
+ 7 = length -> 0x40 = 64 bytes
+ 14-17 = area 1 X
+ 18-21 = area 1 Y
+ 22-25 = area 1 width
+ 26-29 = area 1 length
+ 33 = image composition
+ 1 = halftone
+ 36 = haltone pattern (if image composition == 1)
+ 0x00 = Bayer 64
+ 0x01 = Bayer 16
+ 0x02 = Dot 32
+ 0x03 = Dot 64
+ 0x04 = Error diffusion
+ 50-53 = area 2 X
+ 54-57 = area 2 Y
+ 58-61 = area 2 width
+ 62-65 = area 2 length
+ 68-71 = area 3 X
+ 72-75 = area 3 Y
+ 76-79 = area 3 width
+ 80-83 = area 3 length
+
+
+Other supported commands:
+16 RESERVE UNIT
+17 RELEASE UNIT
+1D SEND DIAGNOSTIC
+31 OBJECT POSITION
+3B WRITE BUFFER
diff --git a/doc/mustek/mustek.CHANGES b/doc/mustek/mustek.CHANGES
new file mode 100644
index 0000000..b7c7e2b
--- /dev/null
+++ b/doc/mustek/mustek.CHANGES
@@ -0,0 +1,995 @@
+CHANGES for the SANE Mustek backend
+
+2005-05-05:
+ * Released Mustek backend 1.0-138
+ * Added options to set the time after which the lamp of the A3 Pro is shut
+ off and to shut it off immediately.
+
+2004-06-08
+ * Released Mustek backend 1.0-137
+ * Reduced scan area of Mustek Paragon 1200 A3 Pro. Removed warning message.
+ Increased support level to complete.
+
+2004-03-21
+ * Released Mustek backend 1.0-136
+ * Added detection of Mustek ScanExpress 1200 FS.
+
+2003-12-25
+ * Released Mustek backend 1.0-135
+ * Added support for Mustek Paragon 600 II EP (SCSI-over-parallel port). This
+ is based on a patch from James Perry. Support for libiee1284 is
+ missing until now.
+
+2003-10-29
+ * Added support for sanei_thread.
+ * Removed OS/2 specific code.
+
+2003-10-29
+ * Released Mustek backend 1.0-134
+
+2003-10-29
+ * Added support for sanei_thread.
+ * Removed OS/2 specific code.
+
+2003-10-15
+ * Added more debug messages.
+
+2003-09-21
+ * Released Mustek backend 1.0-133
+
+2003-09-21
+ * Fixed check for single quotation marks.
+
+2003-03-07
+ * Released Mustek backend 1.0-132
+
+2003-03-07
+ * Minor debug message updates.
+
+2003-02-27
+ * Fixed a little bug in sane_control_option (gamma control).
+ * Removed the signal blocking again. That only hides the segfault in sanei_scsi.
+ * Check if there are documents in ADF for Paragon 2. Otherwise return error.
+
+2003-02-25
+ * Fix some minor issues in reading the config file.
+
+2003-02-22
+ * Initialize global variables in sane_init.
+
+2003-02-17
+ * Released Mustek backend 1.0-131
+
+2003-02-17
+ * Make sure that the result of the reader_process is interpreted correctly.
+ * Block signals when waiting for a SCSI request to finish. Otherwise we may
+ get a segfault if the reader_process is terminated while waiting.
+
+2002-11-29
+ * Released Mustek backend 1.0-130
+
+2002-11-29
+ * PACKAGE_VERSION fix.
+
+2002-11-18
+ * Fixed debug message in do_stop: really print exit status of reader process.
+
+2002-11-17
+ * Fixed minor issues in mapage. Added links to plustek and gt68xx backends.
+
+2002-11-09
+ * Added link to SCSI documentation to manpage.
+
+2002-11-07
+ * Released Mustek backend 1.0-129
+
+2002-11-05
+ * Upload linear gamma table for Pro models if custom gamma is off instead
+ of uploading the composed gamma table. That avoids applying gamm twice.
+ * Minor man page update.
+
+2002-10-11
+ * Released Mustek backend 1.0-128
+
+2002-10-10
+ * Fixed lamp off time (60 minutes) for the 1200 A3 Pro.
+
+2002-07-30
+ * Released Mustek backend 1.0-127.
+
+2002-07-30
+ * Fixed some warnings.
+
+2002-07-07
+ * Released Mustek backend 1.0-126.
+
+2002-07-07
+ * Increased width and height of Paragon 800 and 600.
+
+2002-06-07
+ * Released Mustek backend 1.0-125.
+
+2002-06-07
+ * Fixed some comments.
+ * Use FORCE_GAMMA for Paragon 6000SP as 2.x versions otherwise produce
+ solid black images.
+ * Used my own address instead of sane-devel for bug reports.
+
+2002-05-31
+ * Explicitely set some arrays to 0.
+
+2002-05-28
+ * Released Mustek backend 1.0-124.
+
+2002-05-28
+ * Set X minimum value to 0 for Paragon 6000SP.
+
+2002-04-24:
+ * Released Mustek backend 1.0-122.
+
+2002-04-24:
+ * Undef MIN and MAX if they are defined in mustek.h to avoid warnings.
+
+2002-04-22:
+ * Fixed debug output in sane_control_option and sane_get_device_descriptor.
+
+2002-04-10:
+ * Released Mustek backend 1.0-121.
+
+2002-04-10:
+ * Set freed variables to 0 at sane_exit.
+ * Coding-style fixed.
+
+2002-04-06:
+ * Released Mustek backend 1.0-120.
+
+2002-04-05:
+ * For 3-pass scanners use area_wait_ready and inquiry_wait_ready. The first
+ wait doesn't seem to be enough for some scanners.
+
+2002-03-20:
+ * Released Mustek backend 1.0-119.
+
+2002-03-20:
+ * Fix halftone pattern handling. The buffer was way too small.
+
+2002-03-19:
+ * Option 0 has an empty name.
+
+2002-03-18:
+ * Better debug output for dev_cmd.
+ * Set size for group options to 0.
+ * Set size of halftone pattern to non 0.
+
+2002-02-14:
+ * Fixed some problems with wrong formats in DBG statements.
+
+2002-01-23:
+ * Fixed undefined operation warnings.
+
+2002-01-20:
+ * Released Mustek backend 1.0-118.
+
+2002-01-20
+ * Changes for 1200 Pro: Removed debug code. Calibration is done in
+ every mode. Calibration is on by default. Added some
+ scsi_sense_wait_ready commands to be sure.
+
+2002-01-16
+ * Changed option names to use only "-" not "_".
+
+2002-01-10
+ * OPT_CONTRAST_R is red, not blue.
+
+2002-01-07
+ * Released Mustek backend 1.0-117.
+
+2001-12-29
+ * Send start_stop_scan for Pro even if scan wasn't cancelled but less
+ data than expected was send (e.g. scanimage -T).
+
+2001-12-22
+ * Added Trust Imagery 1200 to man page and .desc.
+
+2001-12-15
+ * Released Mustek backend 1.0-116.
+
+2001-12-11
+ * Fixed possible segfault in sane_control_option.
+ * Added debug output of SCSI commands in dev_cmd and dev_read_req_enter.
+
+2001-11-29
+ * Released Mustek backend 1.0-115.
+
+2001-11-29
+ * Removed empty test for pro models.
+ * Added check for TL_X > BR_X or TL_Y > BR_Y.
+
+2001-11-22
+ * Released Mustek backend 1.0-114.
+
+2001-11-22
+ * Added OS/2 compatibility fixes from "Franz Bakan" <fbakan@gmx.net>.
+
+2001-11-18
+ * The Primax Compact 4800 seems to bes also supported. Added .desc and
+ manpage entries.
+
+2001-09-10
+ * Released Mustek backend 1.0-113.
+
+2001-09-10
+ * Fixed bug in gamma correction code that broke at least custom gamma
+ for the Paragon 12000SP.
+
+2001-08-26
+ * Released Mustek backend 1.0-112.
+
+2001-08-10
+ * Don't close fds[1] in case of OS/2.
+
+2001-08-01
+
+ * Send stop_scan only for ScanExpress scanners when the scan
+ wasn't cancelled.
+
+2001-07-18
+ * Released Mustek backend 1.0-111.
+
+2001-07-18
+
+ * Added warning about Aashima (Trust) scanners.
+ * Only call stop_scan if Scan was cancelled for Paragon scanners.
+
+2001-07-15
+
+ * Added message in reader_process that's printed when the kernel SCSI
+ buffer is too small for the selected buffer size.
+
+2001-07-11
+ * Released Mustek backend 1.0-110.
+
+2001-07-10
+ * Added debug output for the total amount of data transfered to the
+ frontend.
+ * Fixed bug in fix_line_distance_block which lead to too much data
+ transferred to sane_read.
+
+2001-07-09
+ * Released Mustek backend 1.0-109.
+
+2001-07-09
+ * Fixed (hopefully) problem with black images (Paragon 6000 SP).
+
+2001-07-08
+ * Fixed problem with double buffering/SCSI command queuing and
+ Linux 2.4.x. Thaks to Abel Deuring for his help.
+ * Added option to disable backtracking
+
+2001-07-07
+ * Released Mustek backend 1.0-108.
+
+2001-07-07
+ * added option to disable double-buffering
+ * don't set any options by default in mustek.conf
+ * updated manpage
+ * fixed debug statement in scsi_inquiry_wait_ready
+
+2001-05-06
+ * Fixed memory leak in sane_get_devices ()
+
+2001-04-29
+ * Fixed several memory leaks.
+
+2001-04-27
+ * Released Mustek backend 1.0-107 (in CVS).
+
+2001-04-23
+ * Add internationalization support (mark all strings that can be translated
+ with SANE_I18N()).
+
+2001-04-19
+ * Don't check for macro VERSION any longer in sane_init. Print out
+ PACKAGE_VERSION instead.
+ * Update email address and homepage.
+
+2001-08-08
+ * Released Mustek backend 1.0-106
+
+2001-04-08
+ * Backend status is "stable" now. Hopefully this doesn't mean that new
+ bugs show up now :-)
+
+2001-04-01
+ * Added detection of the Pro models TA (at least the 1200SP Pro).
+ * Added warning about real (not relabeled) Trust scanners.
+
+2001-03-31
+ * Removed comment about brightness and contrast in the description strings
+ because you can't read them anyway in color mode (at least with xsane).
+
+2001-03-31
+ * Released Mustek backend 1.0-105
+
+2001-03-31
+ * Removed compilation warning in gamma_correction.
+ * Fixed handling of tlx and brx when scanning with ADF (bug found by
+ Andreas Rathgeber <rathgeber2000@yahoo.de>).
+ * Fixed bug in linedistance correction (ld_block) concerning ADF. With ADF
+ the linedistance values are ordered in the other direction.
+ * Fixed bug concerning ld correction for the 1200SP 1.00 (frontend hangs).
+ Moved the do-nothing ld correction to its own function. With ADF this
+ scanner doesn't really work in color mode but that's probably a firmware
+ problem.
+
+2001-03-18
+ * 600 II N: Gamma correction in gray mode now works. Length must be 768
+ bytes in gray mode also, cdb size is 6 bytes. Thanks to Jakub Bogusz
+ <qboosh@prioris.mini.pw.edu.pl> who found out about that and wrote a
+ patch.
+
+2001-01-17
+ * Released Mustek backend 1.0-104
+
+2001-01-17
+ * Pro: Do calibration only in Lineart, Gray and Color 24 modes.
+
+2001-01-03
+ * Added 36 bit color mode for the Paragon Pro scanners.
+
+2000-12-31
+ * Added function little_endian (from coolscan.c) to check the endianess of
+ the current architecture (needed for 16 bit frames).
+ * Added option for Gray fast
+ * Added option for bit depth (8 and 12 bits for the Pro models)
+ * Removed "special" modes from mode option
+ * Removed 48 bit options for the SE Plus. This mode seems to use only
+ interpolated information (but I may be wrong).
+
+2000-12-31
+ * Released Mustek backend 1.0-103
+
+2000-12-30
+ * Implemented calibration (color and gray mode) for the Paragon 1200 Pro.
+ It's not perfect and needs lots of tests. It may work for the Paragon
+ A3 also but is not tested.
+ * SE 12000 SP Plus calibration is now better but not yet perfect.
+
+2000-12-27
+ * Enabled fast_preview for the Pro scanners (30 dpi).
+ * Increased scan width to 8.6" for 1200 Pro.
+
+2000-12-26
+ * Added calibration for the SE 12000 SP Plus. Doesn't fully work until now
+ (images are too dark and colored).
+
+2000-12-23
+ * Added option for Legal format (because the ScanExpress 12000 SP A4 size
+ scanner can't be distinguished from the Paragon 1200 LS Legal size scanner
+ by software).
+
+2000-12-21
+ * Added a few checks for Null-Pointers.
+ * Removed old code for SE calibration.
+ * Added option "quality calibration" for SE Plus scanners
+
+2000-12-21
+ * sane-backends 1.0.4 was released (including Mustek backend 1.0.102).
+
+2000-12-10
+ * Released Mustek backend 1.0-102
+
+2000-12-09
+ * Fixed wrong comment in encode_resolution
+ * Added missing test for return status in sane_start
+ * Fixed wrong calculation of tlx and tly for Pro series scanners
+
+2000-12-05
+ * Released Mustek backend 1.0-101
+
+2000-12-05
+ * Fixed lamp setting (avoid problems with some SE scanners).
+
+2000-12-01
+ * Reduced scan area for Paragon 1200 SP PRO (to avoid bumping the scan slider
+ at the end).
+ * Removed warning for 1200 SP PRO.
+
+2000-11-26
+ * Released Mustek backend 1.0-100
+
+2000-11-26
+ * Default for "fast preview" is "false" now because this option doesn't work
+ for all SE scanners correctly.
+ * Added more debug output for area_and_windows.
+ * Added more debug output for set_window.
+ * Set minimum tly for 8000SP to 0.
+ * Don't use block mode for Paragon 8000 SP scanners because this breaks
+ color mode with firmware 2.x.
+
+2000-11-19
+ * Paragon 6000 SP doesn't use block mode any more. It's a bit faster now.
+ * Updated sane-mustek.man concerning buffersize and blocksite.
+
+2000-11-17
+ * Updated manpage concerning force-wait. Some minor corrections and additions
+ * Added option force-wait to mustek.conf and did some minor changes.
+
+2000-11-16
+ * With option force_wait set, the backend waits also before sending the
+ inquiry command. This seems to be necessary for the 600 II N.
+
+2000-11-12
+ * Use SANE_Int, SANE_Bool, SANE_Word for int wherever this seems to
+ be appropriate.
+ * Move macros to mustek.h.
+ * Code cleanup.
+
+2000-11-11
+ * OPT_GRAY_PREVIEW is now called OPT_FAST_PREVIEW.
+ * For SE scanners use 36/38 dpi color for fast preview.
+ * use include "../include/sane/" instead of "sane/"
+ * go back to old scheme for SE scanners in color mode (faster scans
+ couldn't be reproduced)
+
+2000-11-10
+ * added more debug output in constrain_value
+
+2000-11-05
+ * Released backend version 1.0-99.
+
+2000-11-05
+ * Added support for TAIV for SE 12000 SP. Lamp is turned off while
+ scanning (seems to work for firmware >= 2.00)
+ * Adjusted transparency adapter support for all ScanExpress scanners.
+ The 12000 A3 SP can only do A4 beacuse I don't have the right TA.
+ * don't use u_int* types in mustek.h because the definitions for these
+ types are not included
+
+2000-11-04
+ * SE scanners can now scan 75, 100, 150, 200, 250, 300, 400, 500, 600,
+ 900 and 1200 dpi in color mode (the 1200 dpi models). These are fixed
+ resolutions, a resolution >= the wanted resolution is selected. This
+ makes preview and some resolutions faster than before (at least for
+ some scanners), because lower resolutions can be used.
+ * Minimum scan resolution is 60 dpi in gray and lineart and 75 dpi in
+ color mode for the SE scanners now.
+
+2000-10-29
+ * Fixed a bug concerning block LD. Paragon 1 and 2 were exchanged.
+ * Paragon 12000SP color mode works now without garbage at the end
+ * Fixed Paragon 1200 SP Pro color mode > 600 dpi (rounding problem)
+ * Temporarily disabled 48 bit color mode for release
+
+2000-10-25
+ * Detect support for TA IV (transparency adapter for ScanExpress scanners)
+ * TA IV supported now; lamp is turned off at least for SE 1200 SP Plus
+ scanners
+ * Adjusted scan area for TA: SE 12000SP Plus
+ * Simplify enlarge x
+ * Set tl-y to 0 for all ScanExpress scanners
+ * First attempt to support 48 bits color mode (SE 12000 SP Plus)
+
+2000-10-22
+ * Detect SE 12000 SP Plus properly
+ * Cover sensor only checked for SE models that support this feature
+
+2000-10-21
+ * Removed MAX_BLOCKSIZE macro (not used anymore).
+
+2000-10-03
+ * Released backend version 1.0-98.
+
+2000-10-03
+ * Fixed segmentation fault in sane_init (else statement was missing).
+ Thanks to Oliver Rauch who spotted this problem.
+ * Re-enabled double buffering.
+
+2000-10-02
+ * Zero out inquiry memory block before reading inquiry.
+
+2000-10-01
+ * Fixed fix_line_distance_block.
+ * Adjusted Paragon 12000 SP to use block LD correction if necessary.
+ * removed LD MFS (wasn't used anyway)
+
+2000-09-30
+ * Set blockbuffer size to 2 MB for Paragon series II scanners.
+ * Fix sane_cancel for Paragon series II scanners
+ * Fix speed and grain for Paragon series II scanners
+ * Backtracking is used for all scanners (removed option)
+ * included stop_scan into do_stop
+ * better integration of the wait_ready functions
+ * check that size of buffer <= size of block buffer
+
+2000-09-24
+ * Added more debug output in sane_get_option_descriptor.
+ * Added more debug output in sane_control_option.
+ * Added check for devicename and handle != 0 in sane_open
+ * Added check for handle != 0 in sane_get_option_descriptor
+ * Added check for handle != 0 in sane_get_parameters
+ * Added check for handle and val != 0 in sane_control_option
+ * Added check for handle != 0 in sane_start
+ * Added check for handle, buf and len != 0 in sane_read
+ * Added check for handle != 0 in sane_cancel
+ * Added check for handle != 0 in sane_set_io_mode
+ * Added check for handle != 0 in sane_get_select_fd
+ * Output option title in sane_get_option_descriptor if name is null
+
+2000-09-24
+ * Released backend version 1.0-97.
+
+2000-09-24
+ * Added RGB brightness and contrast for 3pass scanners
+ * Brightness and contrast is +-100% for 3pass scanners now
+
+2000-09-23
+ * Paragon 12000CX uses pixel unit now.
+ * Paragon 6000CX uses pixel unit now (MSF-06000CZ).
+ * Option "force backtracking" is enabled by default now
+ * Option "scan speed" is set to "fastest" by default now
+ * Add option "force-wait" (for mustek.conf). If enabled, wait for scan
+ head to return to start position after scan.
+ * Make DBG output in sane_control_option() more readable
+ * Better error handling and debug output in sane_get_option_descriptor()
+ * Changed Halftone handling, removed grain size
+
+2000-09-22
+ * Paragon 12000SP 1.06 uses LD_NORMAL now.
+
+2000-09-19
+ * Return sane_status_cancelled in sane_read if last scan was cancelled.
+
+2000-09-18
+ * Changed speed_code to use values between 1...5 for 3pass scanners.
+ I don't know yet if these are correct for the other scanners, too.
+ * Don't do a stop scan for 3pass scanners (only when cancelling).
+ * Set bit 0 of first byte of area_and_windows for gray + color.
+ * Paragon 6000CX uses pixel unit now (MFS-06000CX).
+ * Pixel unit for 3pass scanners is now supported
+
+2000-09-17
+ * changed maximum y range of MFS-800 II SP to 288 mm because of
+ a report of scanner touching the end.
+
+2000-09-10
+ * added some testing (result != null and arg !=0) in sense_handler
+ (found by Martin Blasczyk)
+
+2000-08-20
+ * Paragon series II is also using blockmode now.
+ * Removed warning from mustek.c.
+ * Fixed (maybe) problem in scsi_sense_wait_ready and added more
+ debug output.
+
+2000-08-18
+ * added new option blocksize to mustek.conf
+ * 800 II SP works now in new block mode (get_image_status is needed
+ before each block)
+
+2000-08-17
+ * Removed some warnings from sanei_ab306.c.
+
+2000-08-16
+ * Fixed some bugs in fix_linedistance_block. Paragon 600 models seem to
+ work now. 800 II SP freezes, however.
+ * Fixed segmentation fault for the 600 II N in ld correction code.
+
+2000-08-15
+ * Changed handling of three pass scanners (MUSTEK_FLAG_THREE_PASS instead of
+ !MUSTEK_FLAG_SINGLE_PASS).
+ * Added flags for Paragon series I and II (MUSTEK_PLAG_PARAGON_1 and
+ MUSTEK_PLAG_PARAGON_2).
+ * Distinguish between three-pass, Paragon series 1, Paragon series 2,
+ ScanExpress, Pro and N type scanners.
+ * Added support for scanning the whole image in one block without
+ backtracking for the Paragon series II scanners.
+ * Added fix_linedistance_block: like linedistance_normal but broken
+ up into several SCSI buffers.
+
+2000-08-14
+ * Changed again linedistance correction for the Paragon 12000 SP 1.11.
+ This seems to be a never ending story.
+ * Set the minimum dpi value to 30. Some scanners (e.g. the MFS 8000SP
+ v 2.04) block the SCSI bus with lower resolutions.
+
+2000-08-12
+ * Added support for Paragon 1200 SP Pro.
+ * Added support for ScanExpress A3 SP.
+ * Removed detection for " C12" and " C04" (don't seem to exist).
+ * Changed SCSI read request scheme. Now two requests with half of the
+ maximum SCSI buffer size are entered. Standard buffer size is 128 kB,
+ so the buffer sent to the scanner is 64 kB for all types of scanners.
+ * sane_read now reads more than 4096 bytes from pipe (if available).
+
+2000-08-12
+ * SANE 1.0.3 released (including Mustek backend 1.0.96).
+
+2000-07-31
+ * Released backend version 1.0-96.
+
+2000-07-30
+ * Fixed bug concerning inquiry of 3-pass scanners. ASCII values > 127
+ weren't interpreted correctly (char instead of unsigned char).
+
+2000-07-30
+ * Released backend version 1.0-95
+
+2000-07-30
+ * Removed while {wait ()} loop. Used waitpid() instead. Maybe this cures
+ some reported freezes. It's cleaner anyway.
+ * Removed dead code.
+
+2000-07-28
+ * Released backend version 1.0-94
+
+2000-07-29
+ * Use #include "sane/..." instead of #include <sane/...>.
+
+2000-07-27
+ * Released backend version 1.0-93
+
+2000-07-27
+ * removed warnings
+
+2000-07-26
+ * fixed possible segfault pointer info was not checked for 0 (found by
+ Petter Reinholdtsen)
+ * Updated comment about Paragon 600 II N linedistance correction in man
+ page
+
+2000-07-25
+ * Fixed color scanning for Paragon 600 II N firmware < 2.00.
+
+2000-07-25
+ * Released backend version 1.0-92
+
+2000-07-24
+ * Fixed ADF handling (output was mirrored in x direction). Gray and lineart
+ seems to work now. Color and halftone modes look somewhat crazy.
+ * Removed comment about lack of testing of ADFs in manpage. They are
+ tested to work now with most scanner at least basically.
+ * removed braindead test for Pro series concerning gamma table length
+ (discovered by Jan-Erik Karlsson).
+
+2000-07-22
+ * Fixed margin positions of MFS 6000CX and removed warning.
+ * Warning is printed with DBG level 0 again.
+
+2000-07-18
+ * Released backend version 1.0-91
+
+2000-07-18
+ * Removed again MUSTEK_FLAG_LD_NONE for MFS-08000SP. Maybe the automatical
+ detection works now.
+
+2000-07-15
+ * Released backend version 1.0-90
+
+2000-07-15
+ * Added MUSTEK_FLAG_LD_NONE for MFS-08000SP and removed warning for
+ this scanner. Added TA support. First report for this device from
+ Roland Koebler.
+ * Changed LD correction system. Some scanners (e.g. the 800 II SP)
+ seem to need different LD correction depending on resolution.
+ Now with LD_NORMAL max_value is checked and correction is only done
+ if it is != 0. Hope this works for all scanners.
+ * Moved the comment after the example port entry in mustek.conf to
+ the next line. Now this line should work.
+ * Updated manpage concerning PP scanners and 600 II N.
+
+2000-06-30
+ * Released backend version 1.0-89
+
+2000-06-30
+ * Fixed bug in do_stop. The scan slider didn't return after the scan
+ in some situations.
+
+2000-06-28
+ * Released backend version 1.0-88
+
+2000-06-28
+ * Changed again linedistance handling for the Paragon 1200SP. This
+ time version 1.07 seems to need a special treetment. Even with normal
+ linedistance correction the image is corrupted at buffer boundaries
+ in color mode. Maybe a firmware bug? Thanks to Michael Prechtl for
+ all his tests.
+
+2000-06-25
+ * added missing newline to mustek.conf
+
+2000-06-25
+ * Released backend version 1.0-87
+
+2000-06-25
+ * updated manpage concerning parport and USB scanners
+ * added example for 600 II N to mustek.conf
+
+2000-06-22
+ * fixed debug output bug in fix_linedistance_se (found by Jan-Erik Karlsson)
+
+2000-06-21
+ * fixed dependancy of mustek.h on sane-backends.h
+
+2000-06-19
+ * Fixed gamma correction in lineart mode for Paragon 1200 A3
+
+2000-06-18
+ * Released backend version 1.0-86
+
+2000-06-18
+ * added enlarging x resolution for Paragon 1200 A3 Pro
+ * Paragon 1200 A3 PRO is fully functional now. Thanks to Heinrich Falk, who
+ borrowed me this device.
+
+2000-06-17
+ * added calibration for Paragon 1200 A3 Pro (only dummy, doesn't work yet)
+ * adjusted options for Paragon 1200 A3 Pro
+ * added lineart support for Paragon 1200 A4 Pro
+ * removed support for color lineart and color halftone modes
+ * added color support for Paragon 1200 A3 Pro
+ * added scsi_wait_sense, this fixed 1200 A3 Pro hangs
+ * fixed gamma correction for 1200 A3 Pro. At the moment only 8 bit and
+ 24 bit per pixel are supported (12/36 are possible in hardware)
+
+2000-06-16
+ * addded debugging output in sane_control_option
+ * added gamma correction for Paragon 1200 A3 Pro (doesn't work correctly yet)
+
+2000-06-15
+ * removed old config file reading system.
+
+2000-06-14
+ * Preliminary support for the Mustek Paragon 1200 A3 Pro. Only grayscale
+ mode works so far. Missing: Gamma correction and calibration. The scanner
+ is locked after each scan.
+
+2000-06-12
+ * Fixed bug in sane_control_option. option was not checked for negative
+ values. Thanks to Jochen Eisinger.
+ * Code cleanup and reorganization for inclusion of the Paragon 1200 A3 Pro.
+
+2000-06-07
+ * Fixed bug in sane_close where the chain of handles got destroyed by
+ closing the first device. This bug is in the backend since 3 1/2 years.
+ Thanks to Jochen Eisinger for spotting this.
+
+2000-06-05
+ * Fixed some debug messages in fix_linedistance_se
+
+2000-06-04
+ * released backend version 1.0-85
+
+2000-06-04
+ * changed (again) Paragon 12000 SP linedistance handling, now 1.02 uses
+ normal LD corrections, all other use none. We'll see, if this works.
+ Thanks to Reinhard Günzel who helped to debug this.
+ * fixed some long lines (>80 chars)
+
+2000-06-03
+ * released backend version 1.0-84
+
+2000-06-03
+ * changed line-distance handling, removed ld.max_value magic (didn't work)
+ * fixed (maybe) Paragon 12000 SP color stripes problems (v 1.11 and others)
+ * simpler linedistance debug output, only for 1-pass Paragon scanners
+
+2000-06-02
+ * removed code in dev_read_start which was never called (suggestion
+ from Jan-Erik Karlsson)
+
+2000-05-21
+ * added double buffering (trying to copy the scsi buffer to the frontend
+ while getting a new one). This probably won't work on all
+ platforms and with all SCSI host adapters but in this case performance
+ shouldn't be worse than before.
+
+2000-05-21
+ * released backend version 1.0-83
+
+2000-05-21
+ * The Mustek Paragon 1200 A3 PRO is now detected. This is only a test
+ release. Be carefull and read the PROBLEMS file if you want to
+ try this scanner.
+
+2000-05-19
+ * released backend version 1.0-82
+
+2000-05-18
+ * set debug level for output of unknown Mustek scanner to 0 (suggestion
+ from Thorben Kundinger)
+
+2000-05-12
+ * fixed bug in distinguishing firmware formats
+ * added shrinked image fix to ScanExpress 12000SP models <= v2.0
+
+2000-05-08
+ * fixed remaining sane_cancel problems (in non_blocking mode)
+ * fixed color stripes and segmentation fault for Paragon MFS-12000SP
+ 1.00 (at least for me)
+ * added more debug output to inquiry
+ * added possibility to distinguish old and new firmware formats
+ * added one more debug level (5)
+ * added output of SANE version
+
+2000-05-07
+ * released backend version 1.0-81
+
+2000-05-06
+ * added transparency adapter support for the Paragon 600 II CD, 600S,
+ 800 II SP, 600 II N, ScannExpress 6000SP and 12000SP
+ * removed "color lineart" and "color halftone" for all scanners.
+ These modes didn't work for any of my scanners.
+ * added more debug output for ADF and TA
+ * fixed bug when ADF is out of documents
+ * Scan source option is only available if TA or ADF is present. For
+ SE and N models TA is always available because it can't be detected
+ by hardware
+ * removed "backtrack", "speed" and "grain" from 600 II N options,
+ the scanner doesn't support them
+ * updated mustek.desc and mustek.man
+
+2000-05-02
+ * Reduced scan area for the Paragon MFC-600S because of ugly noises at
+ the end of the scan area
+
+2000-04-29
+ * Adjusted scan area to the Windows driver defaults for ScanExpress
+ 6000SP; added MUSTEK_FLAG_ENLARGE_X for this scanner
+ * Added Warning for scanners that are not (fully) tested
+
+2000-04-26
+ * changed sane_init to use sanei_config_read () and
+ sanei_config_get_string ()
+
+2000-04-24
+ * released backend version 1.0-80
+
+2000-04-23
+ * fixed lineart and color scanning >600 dpi for the SE 12000SP
+ * added variable debug_level to be faster without debugging in attach ()
+ * fixed bug in mustek.conf handling; positional options were applied
+ to the first device only
+ * added an option to mustek.conf: "buffersize". This overwrites the
+ default scan buffer sizes. The unit is kilobytes.
+ * adjusted mustek.conf to more reasonable defaults
+ * update manpage and mustek.desc to reflect the changes
+
+2000-04-22
+ * fixed greyscale scanning >600 dpi for the SE 12000SP
+
+2000-04-21
+ * added more debug output to sane_get_parameters
+
+2000-04-20
+ * Output of scanning time now works with scanimage, too.
+ * Adjusted scan area to the Windows driver defaults for Paragon
+ MFS-6000CX
+ * Added transparency adapter support for the Paragon MFS-6000CX and
+ MFS-12000SP
+
+2000-04-19
+ * Adjusted scan area to the Windows driver defaults for Paragon
+ MFS-12000SP
+
+2000-04-17
+ * added support for the sanei_scsi_open_extended method with variable
+ buffersizes
+ * removed support for SCSI queue. Couldn't find improvements
+ for any scanner
+
+2000-04-16
+ * removed "color lineart" and "color halftone" for single pass scanners.
+ These modes didn't work for any of my scanners.
+ * fixed problems in color mode for the MFS-8000SP (gamma table is now
+ uploaded even if not selected)
+ * Output "cover open" only for ScanExpress scanners (Paragon scanners
+ don't have a cover sensor)
+ * Added transparency adapter support for the Paragon MFS-6000SP and
+ MFS-12000CX
+ * Added output of transfer speed (kb/s)
+ * maximum allocated memory for read request can be set by a #define
+ * buffer size can be set on a per scanner basis
+ * Adjusted scan area to the Windows driver defaults for Paragon
+ 800 II SP
+ * Added quotation marks to inquiry output
+
+2000-04-15
+ * Adjusted scan area to the Windows driver defaults for Paragon 8000SP,
+ ScanExpress 12000SP
+ * Fixed scan area settings (TL-X and TL-Y) for transparency adapter (TA)
+ * Added TA support for Paragon 8000SP
+
+2000-04-13
+ * Added more debug output in sane_read and some other functions
+ * removed warnings
+
+2000-04-12
+ * Added more debug output concerning buffer handling
+
+2000-04-10
+ * Adjusted scan area to the Windows driver defaults for Paragon 12000CX,
+ 6000SP, 600 II CD, 600 II N
+
+2000-04-09
+ * released backend version 1.0-79
+
+2000-04-08
+ * added output of scanning time (debuglevel 2 and higher)
+ * removed old code from sane_cancel
+
+2000-04-07
+ * fixed line-distance correction for the 600 II N
+ * rewrite of the 600 II N code
+ * documentation update for the 600 II N
+
+2000-04-06
+ * Rewrite of resolution encoding for 3-pass scanners
+ * added more comments
+ * some spelling errors corrected
+
+2000-04-03
+ * output backend and version information
+ * fixed resolution encoding for MFS12000cx
+ * Changed version system to be compatible to the SANE standard
+ (major, minor, build); 0.78 --> 1.0-78
+
+2000-04-02
+ * released backend version 0.78
+ * added MUSTEK_FLAG_DOUBLE_RES for the MFS-12000CX 3-pass scanner,
+ resolutions > 600 dpi should work now
+
+2000-04-01
+ * reduced scan area for Paragon 800 S / II SP
+
+2000-03-29
+ * released backend version 0.77
+ * inquiry is printed in full text at debug level 4
+ * more debug level tweaking
+ * man page update
+ * model name update
+
+2000-03-25
+ * corrected some spelling errors
+
+2000-03-24
+ * reduced scanarea for the MSF-6000SP
+ * restructured scanner recognition
+
+2000-03-18
+ * released backend version 0.76
+
+2000-03-17
+ * removed some compiler warnings
+ * changed the sane.model names (e.g. ScanExpress 12000SP instead of
+ C06IDW...)
+ * added SCSI information output to inquiry
+ * adjusted debug levels and debug output
+
+2000-03-15
+ * fixed typo in man page
+
+2000-03-12
+ * released backend version 0.75
+ * man page update
+ * mustek.desc update
+ * test for option < 0 in sane_get_option_descriptor (thanks to Oliver Rauch)
+ * added do_stop in sane_cancel (don't wait for next read that will
+ possibly never happen)
+ * fixed firmware version identification for newer ScanExpress models
+ (patch from Marco G. Salvagno)
+ * probably fixed linedistance correction at high resolutions for
+ MFS-1200SP firmware 1.00 and possibly others (patch from Andreas Beck)
+ * added check for ADF ready in sane_start (patch from Joerg Anders)
+ * Bug fix in the STORE makros (patch from Norbert Mueller)
+
+
+2000-03-06
+ * created mustek.CHANGES file
+ * released backend version 0.74
+ * added linedistance correction for the 600 II N + documentation updates
+ * added detection of newer ScanExpress models ("XC06" instead og " C06")
+ * bugfix for 600 II N waiting 60 s before cancelling
+
+
+Henning Meier-Geinitz <henning@meier-geinitz.de>
diff --git a/doc/mustek_usb/mustek_usb.CHANGES b/doc/mustek_usb/mustek_usb.CHANGES
new file mode 100644
index 0000000..7b01c4a
--- /dev/null
+++ b/doc/mustek_usb/mustek_usb.CHANGES
@@ -0,0 +1,421 @@
+CHANGES for the SANE Mustek USB backend
+
+2004-03-02
+ * Release of version 1.0-18.
+
+2004-03-02
+ * Added workaround for data0 toggle bug. I think this is a bug in the
+ chipset. The chipset doesn't set the toggle to data0 when the endpoints
+ are reset. As this is done whenever the device files/libusb is closed,
+ this backend worked ony once. Now we count the number of URBs and
+ just read/write some crap if the number is odd.
+
+2003-09-21
+ * Release of version 1.0-17.
+
+2003-09-21
+ * Fixed check for single quotation marks.
+
+2003-02-22:
+ * Release of version 1.0-16.
+
+2003-02-22:
+ * Iniatialize global variables explicitely.
+ * Mention ma1509.
+
+2002-11-20:
+ * Man page updated concerning The BSDs.
+
+2002-11-19:
+ * Added desc file hint to the gt68xx backend.
+
+2002-11-17:
+ * Fixed minor issues in the man page. Removed beta status. Added links
+ to other backends for Mustek scanners.
+
+2002-07-17:
+ * Release of version 1.0-15.
+
+2002-07-17:
+ * Added manufacturer comment in mustek_usb.desc.
+ * Changed brightness to threshold.
+ * Fixed some warnings.
+ * Really check the status in usb_low_open.
+
+2002-04-24:
+ * Release of version 1.0-14.
+
+2002-04-24:
+ * Undef MIN and MAX if they are defined in mustek_usb_low.h to avoid
+ warnings.
+
+2002-04-23:
+ * Free devlist in sane_exit.
+
+2002-04-10:
+ * Release of version 1.0-13.
+
+2002-04-10:
+ * sane_set_io_mode must return SANE_STAUS_GOOD if non_blocking is false.
+ Check if scanning.
+ * sane_get_select_fd: Check if scanning.
+ * sane_control_option: Cleanup. Avoid segfaults. Catch unknown options.
+ * sane_exit: set freed variable to 0.
+
+2002-03-20:
+ * Release of version 1.0-12.
+
+2002-03-19:
+ * Option 0 has an empty name now.
+ * Group options have size 0 now.
+ * Checked also for SANE_ACTION_SET_AUTO.
+ * Removed buggy output in sane_control_option.
+ * Added more debug output in sane_control_option.
+
+2002-03-17:
+ * Release of version 1.0-11.
+
+2002-03-16:
+ * mustek_usb.c: Fixed segfault when opening device again after closing.
+ * mustek_usb.c: Fixed possible segfault when name="".
+ * mustek_usb.c: Type for option 0 must be set to SANE_TYPE_INT explicitely.
+
+2002-02-14:
+ * Fixed some problems with wrong formats in DBG statements.
+
+2002-02-09
+ * Fixed wrong output in usb_low_read_reg().
+
+2002-01-23:
+ * Fixed undefined operation warnings.
+
+2002-01-11
+ * Release of version 1.0-10.
+
+2002-01-11
+ * mustek_usb_high.(c|h), mustek_usb_mid.(c|h): commented out unused CCD code.
+ * mustek_usb_mid.h: Fixed OFFSET_TABLE_SIZE.
+ * mustek_usb.c: Fixed bug concerning opening with empty name.
+ * mustek_usb.c, mustek_usb_high.c: Make sure usb_low_exit is only called once
+ per device. Fixed segfault.
+
+2002-01-10
+ * mustek_usb.desc: Status is "beta" now.
+
+2002-01-03
+ * Added link to plustek to manual page.
+
+2001-12-08
+ * Release of version 1.0-9.
+
+2001-12-08
+
+ * Added option max_block_size to limit amount of data acquired in one turn.
+
+2001-12-07
+
+ * usb_low_read_rows: Retry until all the data is received. Set maximum
+ size of data acquired in one turn.
+
+2001-11-15
+ * Release of version 1.0-8.
+
+2001-11-15
+ * Updated manual page concerning FreeBSD and kernel configuration.
+
+2001-11-14
+
+ * Added 600 USB detection. No support at all yet.
+ * Removed unneccessary calls to usb_low_open and usb_low_close. This
+ fixed the FreeBSD problems.
+ * Updated all SANE comments ("1200UB and similar").
+
+2001-11-11
+
+ * Added function usb_high_scan_adjust_mono_600_exposure.
+
+2001-10-14
+
+ * Added start values for the 1200USB.
+ * Removed load_private_profile (now in usb_high_scan_init).
+
+2001-10-07
+ * Release of version 1.0-7.
+
+2001-10-07
+
+ * usb_low: fixed output if scanner has wrong vendor/product id.
+ * usb_high: Added the detection of 300&600 sensor again. Mustek seems to
+ have used both sensors in the Mustek 1200 UB, so we must distinguish them.
+ * Disabled 1200 USB for release.
+
+2001-09-30
+ * 1200CU_Plus has Canon600 sensor (fixed).
+
+2001-09-15
+ * Added functions for sensor nec600 (1200 USB) in mustek_usb_mid.
+ * Changed init_asic and exposure times for 1200 USB.
+
+2001-09-13
+ * Release of version 1.0-6.
+
+2001-09-13
+ * Added check for negative width and height.
+ * Changed status to NEW (internaly: beta).
+ * Added check for too high gamma values (xscanimage is buggy).
+ * Return SANE_STATUS_CANCELLED in sane_read if scan was cancelled.
+ * Updated manual page.
+
+2001-09-12
+ * Added support for fitting lines (recalculation of resolution) for
+ color mode
+ * Added support for fitting lines (recalculation of resolution) for
+ lineart mode
+ * Better debug output for unmatched dpi in mustek_usb_mid.
+ * Changed default mode to "gray".
+ * Added gamma table support (software) for color + gray, stayed with
+ brightness for lineart.
+ * Added output of total bytes scanned (+ check).
+ * Decreased maximum width and height to avoid freezing the scanner.
+ * Added check for unknown options in mustek_usb.
+ * Code cleanup in mustek_usb, mustek_usb_high.
+ * Added SANE_I18N macro.
+
+2001-09-11
+ * Added support for idependent x and y resolution.
+ * Changed option resolution to constraint_range.
+ * Increased motor speed when returning back home for 600 dpi motor.
+ * Increased resolution to 1200 dpi for 1200CU, 1200CU Plus and 1200 UB.
+ * Increased resolution to 600 dpi for 600CU.
+ * Added support for fitting lines (recalculation of resolution) for
+ gray mode
+
+2001-09-10
+ * Release of version 1.0-5.
+
+2001-09-10
+ * mustek_usb_mid: Added functions for 300 dpi sensor.
+ * mustek_usb_mid: Fixed 200 dpi mode.
+ * mustek_usb_mid: added general sensor functions.
+
+2001-09-09
+ * mustek_usb_mid: Added functions for 600 dpi motor.
+ * mustek_usb_mid, usb_high: Added functions for selecting the motor
+ functions.
+
+2001-09-06
+ * Release of version 1.0-4.
+
+2001-09-06
+ * usb_high: use only lower case for functions.
+ * mustek_usb: use only lower case for variables and functions.
+ * mustek_usb: remove unnecessary functions.
+
+2001-09-01
+ * usb_high: removed unnecessary macros and types.
+ * usb_high: use only lower case for variables and upper/lower mixed for
+ types.
+
+2001-08-30
+ * usb_low, usb_mid: use only lower case for functions. Fixed some
+ spellings and debug messages.
+
+2001-08-29
+ * usb_low: use only lower case for variables and upper/lower mixed for types.
+ remove unnecessary types.
+
+2001-08-28
+ * Also include sane-usb man page in tar.gz file to avoid make errors.
+ * Only use arrays of SANE_Byte for data transfer to scanner in usb_low.
+
+2001-08-26
+ * Check the result of all mallocs.
+ * Sensor is now only in mustek_usb_low.
+ * Removed gamma functions from code (weren't used anyway).
+ * Contrast is only active for color and gray scans.
+
+2001-08-26
+ * Release of version 1.0-3.
+
+2001-08-26
+ * Set up motor600 functions using the motor1200 with double dpi. This
+ doesn't work for 200 dpi, however. Removed 200 dpi from list until I
+ understand what's going on.
+ * Updated manual page
+ * Updated .conf file
+
+2001-08-25
+ * Used proper SANE_Status return values in mustek_usb_mid for all functions.
+ * Used proper SANE_Status return values in mustek_usb for all functions.
+ * Added Trust scanner to mustek_usb.desc.
+ * Removed Mono4 and Mono1 functions.
+
+2001-08-23
+ * Removed ifdefs in mustek_usb_mid.
+
+2001-08-22
+ * Removed GREENGRAY macro and included code (didn't work anyway).
+ * Removed 36 and 48 bit calibration.
+ * Added RIE (return if error) macro.
+
+2001-08-19
+ * Removed io functions in mustek_usb_low.
+ * Used proper SANE_Status return values in mustek_usb_low for all functions.
+ * Fixed lots of debug output in mustek_usb_low.
+ * Formatting update in mustek_usb_low.
+ * Used proper SANE_Status return values in mustek_usb_high for all functions.
+ * Fixed lots of debug output in mustek_usb_high.
+ * removed unnecessary modes in mustek_usb_high.
+
+2001-08-18
+ * Added manual selection of scanner type in mustek_usb.conf
+ * It's checked now if the scanner was autodetected or manually selected
+ * Set maximum resolution to 300 for 600 CU.
+ * Changed nUSBPipe to fd, which is more appropriate.
+ * Removed #ifdef 0 code from mustek_usb_high
+ * Used proper SANE_Status return values in mustek_usb_low for
+ - io_Open
+ - Open
+ - io_WriteReg
+ - io_ReadReg
+
+2001-08-08
+ * Fixed some format issues
+ * Better debug output
+ * Added support for CANON300 sensor (for 600 CU)
+
+2001-08-07
+ * Added support for sanei_usb v2.
+ * Check vendor/product directly after sane_open.
+
+2001-08-06
+ * Added scan buffer. It's used if the buffer suplied with sane_read is
+ smaller than one scan line.
+
+2001-08-06
+ * Released mustek_usb-backend 1.0-2.
+
+2001-08-05
+ * Support more than one scanner in the .conf file
+ * Use sanei_usb functions
+ * Allow usb vendor device in .conf
+ * Only use usb statements in .conf for all three scanners, comment out
+ device files
+ * Now the correct names are returned if autodetection works
+ * Manual page updates
+
+2001-08-05
+ * Released mustek_usb-backend 1.0-1.
+
+2001-08-04
+
+ * mustek_usb_low:
+ - fixed compilation warnings
+ - fixed compilation problems
+ - fixed C++ to C transition issues (e.g. "initializer element is not
+ computable at load time")
+ - fixed debug output
+ - adjusted some names
+ - removed MEMFREE, MALLOC, LP*
+ * mustek_usb_mid:
+ - fixed compilation warnings
+ - changed printf to DBG
+ - fixed debug output
+ - reformatted
+ * mustek_usb_high:
+ - fixed some DBG statements
+ - fixed compilation warnings
+ - moved global variable to Mustek_Usb_Device
+ - reformatted
+ * mustek_usb:
+ - fixed compilation warnings
+ --> compile runs successfully for the first time since restructuring
+ - removed DWORDS etc.
+ - moved CScanner into Mustek_Usb_device
+ - removed global variables
+ * mustek_usb.conf: updated
+ * removed references to "WORD"
+ * ifdefed unused functions
+ * fixed bug concerning wrong x-resolution after the first scan for
+ low resolutions (e.g. preview). This also fixed the problems with
+ 1200 CU.
+ --> Scanning works with 1200 UB, 1200 CU and probably 1200 CU Plus.
+ * added manual page
+ * updated mustek_usb.desc
+
+2001-08-02
+
+ * mustek_usb_high:
+ - fixed lots of compilation problems.
+ - removed LP..., huge*, far*
+ - removed MEMFREE, MEMALLOC
+ - added several "return SANE_TRUE" to SANE_Bool functions
+ - changed printf to DBG
+ - changed Sleep to usleep
+
+2001-07-22
+ * mustek_usb_low: Only one data structure: ma1017.
+ * mustek_usb_mid:
+ - removed //
+ - remove SANE disclaimers
+ - use SANE types
+ - changed to use new usb_low style
+ - made everything static
+ - renamed functions to usb_mid_*
+ * mustek_usb_high:
+ - removed remaining //
+ - reformatted
+ - used SANE types
+ - made everything static
+ - renamed
+ * Fixed quite some compilation errors
+
+2001-07-08
+ * mustek_usb_low:
+ - renamed functions to usb_low/usb_low_io
+ - made all functions static
+ - used DBG instead of printf
+ - moved all status information from global to struct ma1017
+ - rename constructor/destructor
+ - included io constructor/destructor in usb_low
+
+2001-07-01
+ * Added more debug output in attach () when device file couldn't be opened.
+ * Added some tests for NULL pointers in attach ()
+ * fixed segfault in sane_exit ()
+ * indented all files
+ * fixed mustek_usb_high:
+ - changed // to /* */
+ - reformatted
+ * fixed mustek_usb_low:
+ - changed // to /* */
+ - reformatted
+ - removed most non-standard types
+
+2001-05-26
+ * Started working based on the Mustek source code from their FTP
+ server.
+ * Renamed backend to mustek_usb. All files start with this name.
+ * Created:
+ - mustek_usb(.c .h) from 1200ub(.c .h)
+ - mustek_usb_low from ma1017 and ma1017io
+ - mustek_usb_mid from ada*
+ - mustek_usb_high from scanner and calibrator
+ * Used "../include/sane" in #include statements
+ * Used /dev/usbscanner in mustek_usb.conf
+ * Fixed mustek_usb.desc
+ * Fixed mustek_usb.*:
+ - use correct names
+ - no leading "_"
+ - use only C-style comments
+ - moved defines to .h,
+ - reformatted using GNU style
+ - use /dev/usbscanner as default
+ - Fixed DBG output
+ - don't use printf
+ - added more DBG output
+ - added "static" to internal functions
+ - commented out all references to c_scanner
+ - removed references to WORD and other non-standard types
+ - moved read_rows from global to Mustek_Usb_Scanner
+ --> mustek_usb.* compiles \ No newline at end of file
diff --git a/doc/mustek_usb/mustek_usb.TODO b/doc/mustek_usb/mustek_usb.TODO
new file mode 100644
index 0000000..e52673f
--- /dev/null
+++ b/doc/mustek_usb/mustek_usb.TODO
@@ -0,0 +1,10 @@
+2004-03-02
+
+* Support more scanners
+ - 1200 USB
+ - 600 USB
+ These are both CCD scanners. Several people tried to add support until
+ now but I have never heard from the again ...
+* Remove/replace _word variables from usb_low
+* Check if low resolutions can be made faster.
+* Check fixmes.
diff --git a/doc/mustek_usb2/mustek_usb2.CHANGES b/doc/mustek_usb2/mustek_usb2.CHANGES
new file mode 100644
index 0000000..38886e8
--- /dev/null
+++ b/doc/mustek_usb2/mustek_usb2.CHANGES
@@ -0,0 +1,137 @@
+mustek_usb2.CHANGES -*-text-*-
+
+V 1.0-10 (2005-10-16)
+
+- Removed typedefs for DWORD, WORD and so on. Used int, unsigned short, ...
+ directly in the code.
+
+V 1.0-9 (2005-10-02)
+
+- Removed global variables in mustek_usb2.c:
+ Deleted the following variables (not necessary):
+ m_bIsOpen
+ Moved the following varaiables to Mustek_Scanner structure:
+ m_bIsScanning
+ m_bIsReading
+ setpara
+ getpara
+ read_rows
+ Scan_data_buf
+ Scan_data_buf_start
+ scan_buffer_len
+ Used local variables instead:
+ dpi_list;
+- Minor cleanups.
+- Fixed check for Scan_data_buf != NULL.
+- Moved check for Scan_data_buf to sane_close ().
+- Avoid typedef'ing to long int in mustek_usb2_asic.h. Used int instead.
+ Fixed DBG messages accordingly.
+- Fixed some compilation warnings on 64 bit platforms.
+
+V 1.0-8 (2005-10-01)
+
+- Added/modified checks for libpthread in acinclude.m4/configure.in. Disable
+ backend if it's not there.
+
+V 1.0-7 (2005-09-30)
+
+- Added usleep in Asic_ScanStop() to avoid freezes after cancellation of a
+ scan.
+- Added sane_constrain_value call in sane_control_option().
+- Test with tstbackend succeeded this.
+- Changed usage of perror to DBG.
+- Removed _Open and _Close. These functions didn't do much at all.
+- Removed (commented out) code that tries to read values from config file.
+
+V 1.0-6 (2005-09-29)
+
+- Commented out unused code.
+- Made all symbols that don't belong to the SANE API static.
+- Changed all fprintfs to DBG messages.
+- Used real device name. Used real model name.
+- Added manual page (sane-mustek_usb2).
+- Fixed backend name in AUTHORS.
+
+V 1.0-5 (2005-09-28)
+
+- Merged all asic-related code into mustek_usb2_asic.c and .h.
+- Merged function definitions from mustek_usb2_tarnsparent.h and
+ mustek_usb2_refelective.h to their respective .c files. Filename changes
+ are finished now.
+- Moved defines used in mustek_usb2_high.c to moustek_usb_high.h.
+- All license/comment headers name the right scanner now.
+- Fixed "already included check" of header files
+- Used indent -gnu on all files.
+- Fixed compilation warnings and several bugs ("=" instead of "==" and similar
+ stuff) in mustek_usb2_asic.c, mustek_usb2_transparent.c,
+ mustek_usb2_reflective.c, mustek_usb2_high.c, mustek_usb2.c.
+
+V 1.0-4 (2005-09-27)
+
+- Changed filenames (preliminary, may be changed again):
+ mustek_a2nu2.c --> mustek_usb2.c
+ mustek_a2nu2.h --> mustek_usb2.h
+ a2nu2/spicall/MustScanner.c --> mustek_usb2_high.c
+ a2nu2/spicall/MustScanner.h --> mustek_usb2_high.h
+ a2nu2/spicall/ScannerDefine.h --> included in mustek_usb2_high.h
+ a2nu2/spicall/ScannerReflective.c --> mustek_usb2_reflective.c
+ a2nu2/spicall/ScannerReflective.h --> mustek_usb2_reflective.h
+ a2nu2/spicall/ScannerTransparent.c --> mustek_usb2_transparent.c
+ a2nu2/spicall/ScannerTransparent.h --> mustek_usb2_transparent.h
+ a2nu2/spicall/spicall.c --> included in mustek_usb2.c
+ a2nu2/spicall/spicall_ex.h
+ a2nu2/spicall/spicall_g.h --> included in mustek_usb2_high.c
+ a2nu2/include/asic.h --> included in mustek_usb2_asic_low.h
+ a2nu2/include/debug.h --> removed
+ a2nu2/include/ini.h
+ a2nu2/include/msam.ini --> removed
+ a2nu2/include/public.h --> included in mustek_usb2_typedef.h
+ a2nu2/include/spicall.h --> included in mustek_usb2.h
+ a2nu2/include/typedef.h --> mustek_usb2_asic_low.h
+ a2nu2/conf/ini.c --> removed
+ a2nu2/asic/asic.c --> mustek_usb2_asic.c
+ a2nu2/asic/asic_libusb.c --> removed (used sanei_usb)
+ a2nu2/asic/asic_libusb.h --> removed
+ a2nu2/asic/asic_mid.c --> mustek_usb2_asic_mid.c
+ a2nu2/asic/asic_mid.h --> included in mustek_usb2_asic_mid.c
+ a2nu2/asic/asic_motor.c --> mustek_usb2_asic_motor.c
+ a2nu2/asic/asic_motor.h --> mustek_usb2_asic_motor.h
+ a2nu2/asic/asic_usb.c --> mustek_usb2_asic_low.c
+ a2nu2/asic/asic_usb.h --> included in mustek_usb2_asic_low.h
+ a2nu2/asic/DefineScanner.h --> mustek_usb2_asic_low.h
+ a2nu2/asic/ScanRegDef.h --> included in mustek_usb2_asic_low.h
+
+- Changed backend name to mustek_usb2.
+- Used dos2unix to change dos line endings to unix.
+- Added mustek_usb2.TODO.
+- Changed several occurences of "//" to "/* */".
+- Used DBG instead of XDBG.
+- Defined DBG levels in mustek_usb2_asic_low.h.
+- Changed code to use sanei_usb instead of home-grown usb functions.
+
+V 1.0-3 (2005-08-31)
+
+- Updated code from Mustek, mostly changed // to /* */
+- Enabled compilation warnings again.
+- Scanner is confirmed to work at least on Linux.
+
+V 1.0-2 (2005-08-30)
+
+- Initial version based on the code from Roy Zhou, Jack Xu, Vinci Cen.
+- This version is just to make it compile at all and to trim down the package
+ size by removing all the unneeded backends. Before inclusion into SANE can
+ be done, the sub directories, several libraries and the amount of files has
+ to be fixed (and lots of other stuff).
+- Based everything on current CVS.
+- Fixed AUTHORS.
+- Added mustek_pro.CHANGES.
+- Fixed dll.conf.
+- Fixed .desc file.
+- Adjusted configure.in to build only test, net and mustek_a2nu2 backends.
+- Adjusted backend/Makefile.in.
+- Disabled compilation warnings, otherwise the "//" comments will cause
+ errors.
+- Fixed several upper/lower case problems.
+- Removed definition of Option_Value.
+- Started renaming doc files to new backend name: msutek_usb2.
+- Added GPL+SANE exception to all remaining files.
diff --git a/doc/mustek_usb2/mustek_usb2.TODO b/doc/mustek_usb2/mustek_usb2.TODO
new file mode 100644
index 0000000..282f459
--- /dev/null
+++ b/doc/mustek_usb2/mustek_usb2.TODO
@@ -0,0 +1,9 @@
+.mustek_usb2.TODO -*-text-*-
+
+- Check if there is an easy way to avoid pthread
+- prepare for different scanners (and more than one scanner)
+- adjust debug levels (currently only DBG_FUNC is used in _high.c).
+- unify debug messages ("start"/"exit" functions etc.)
+- check all "HOLD"s in the code
+- check if 1200 x 2400 dpi modes can be added
+- try to add additional scanners
diff --git a/doc/net.tex b/doc/net.tex
new file mode 100644
index 0000000..a29fb75
--- /dev/null
+++ b/doc/net.tex
@@ -0,0 +1,479 @@
+\chapter{Network Protocol}\label{chap:net}
+
+The SANE interface has been designed to facilitate network access to
+image acquisition devices. In particular, most SANE implementations
+are expected to support a network backend (net client) and a
+corresponding network daemon (net server) that allows accessing image
+acquisition devices through a network connection. Network access is
+useful in several situations:
+\begin{itemize}
+
+\item To provide controlled access to resources that are inaccessible
+ to a regular user. For example, a user may want to access a device
+ on a host where she has no account on. With the network protocol,
+ it is possible to allow certain users to access scanners without
+ giving them full access to the system.
+
+ Controlling access through the network daemon can be useful even in
+ the local case: for example, certain backends may require root
+ privileges to access a device. Rather than installing each frontend
+ as setuid-root, a system administrator could instead install the
+ SANE network daemon as setuid-root. This enables regular users to
+ access the privileged device through the SANE daemon (which,
+ presumably, supports a more fine-grained access control mechanism
+ than the simple setuid approach). This has the added benefit that
+ the system administrator only needs to trust the SANE daemon, not
+ each and every frontend that may need access to the privileged
+ device.
+
+\item Network access provides a sense of ubiquity of the available
+ image acquisition devices. For example, in a local area network
+ environment, this allows a user to log onto any machine and have
+ convenient access to any resource available to any machine on the
+ network (subject to permission constraints).
+
+\item For devices that do not require physical access when used (e.g.,
+ video cameras), network access allows a user to control and use
+ these devices without being in physical proximity. Indeed, if such
+ devices are connected to the Internet, access from any place in the
+ world is possible.
+
+\end{itemize}
+
+The network protocol described in this chapter has been design with
+the following goals in mind:
+\begin{enumerate}
+
+\item Image transmission should be efficient (have low encoding
+ overhead).
+
+\item Accessing option descriptors on the client side must be
+ efficient (since this is a very common operation).
+
+\item Other operations, such as setting or inquiring the value of an
+ option are less performance critical since they typically require
+ explicit user action.
+
+\item The network protocol should be simple and easy to implement on
+ any host architecture and any programming language.
+
+\end{enumerate}
+The SANE protocol can be run across any transport protocol that
+provides reliable data delivery. While SANE does not specify a
+specific transport protocol, it is expected that TCP/IP will be among
+the most commonly used protocols.
+
+\section{Data Type Encoding}
+
+\subsection{Primitive Data Types}
+
+The four primitive types of the SANE standard are encoded as follows:
+\begin{description}
+
+\item[\code{\defn{SANE\_Byte}}:] A byte is encoded as an 8 bit value.
+ Since the transport protocol is assumed to be byte-orientd, the bit
+ order is irrelevant.
+
+\item[\code{\defn{SANE\_Word}}:] A word is encoded as 4 bytes (32
+ bits). The bytes are ordered from most-significant to
+ least-significant byte (big-endian byte-order).
+
+\item[\code{\defn{SANE\_Char}}:] A character is currently encoded as an 8-bit
+ ISO LATIN-1 value. An extension to support wider character sets (16 or 32
+ bits) is planned for the future, but not supported at this point.
+
+\item[\code{\defn{SANE\_String}}:] A string pointer is encoded as a
+ \code{SANE\_Char} array. The trailing NUL byte is considered part
+ of the array and a \code{NULL} pointer is encoded as a zero-length
+ array.
+
+\item[\code{\defn{SANE\_Handle}}:] A handle is encoded like a word.
+ The network backend needs to take care of converting these integer
+ values to the opaque pointer values that are presented to the user
+ of the network backend. Similarly, the SANE daemon needs to take
+ care of converting the opaque pointer values it receives from its
+ backends into 32-bit integers suitable for use for network encoding.
+
+\item[{\em\defn{enumeration types}}:] Enumeration types are encoded
+ like words.
+
+\end{description}
+
+\subsection{Type Constructors}
+
+Closely following the type constructors of the C language, the SANE network
+protocol supports the following four constructors:
+\begin{description}
+
+\item[{\em\defn{pointer}}:] A pointer is encoded by a word that indicates
+ whether the pointer is a NULL-pointer which is then followed by the
+ value that the pointer points to (in the case of a non-NULL pointer;
+ in the case of a NULL pointer, no bytes are encoded for the pointer
+ value).
+
+\item[{\em\defn{array}}:] An array is encoded by a word that indicates
+ the length of the array followed by the values of the elements in
+ the array. The length may be zero in which case no bytes are
+ encoded for the element values.
+
+\item[{\em\defn{structure}}:] A structure is encoded by simply encoding the
+ structure members in the order in which they appear in the
+ corresponding C type declaration.
+
+\item[{\em\defn{union}}:] A union must always be accompanied by a tag
+ value that indicates which of the union members is the currently the
+ active one. For this reason, the union itself is encoded simply by
+ encoding the value of the currently active member.
+
+\end{description}
+
+Note that for type constructors, the pointer, element, or member
+values themselves may have a constructed type. Thus, the above rules
+should be applied recursively until a sequence of primitive types has
+been found.
+
+Also SANE had no need for encoding of circular structures. This
+greatly simplifies the network protocol.
+
+\section{Remote Procedure Call Requests}
+
+The SANE network protocol is a client/server-style remote procedure
+call (RPC) protocol. This means that all activity is initiated by the
+client side (the network backend)---a server is restricted to
+answering requests sent by the client.
+
+The data transferred from the client to the server is comprised of the RPC code
+(as a \code{SANE\_WORD}), followed by arguments defined in the {\bf request}
+column below. The format of the server's answer is given in the {\bf reply}
+column.
+
+\subsection{\code{\defn{SANE\_NET\_INIT}}}
+
+RPC Code: 0
+
+This RPC establishes a connection to a particular SANE network daemon.
+It must be the first call in a SANE network session. The parameter
+and reply arguments for this call are shown in the table below:
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word version\_code} & \code{SANE\_Word status} \\
+ \code{SANE\_String user\_name} & \code{SANE\_Word version\_code} \\
+\end{tabular}
+\end{center}
+The \code{version\_code} argument in the request is the SANE
+version-code of the network backend that is contacting the network
+daemon (see Section~\ref{sec:saneversioncode}). The
+``build-revision'' in the version code is used to hold the network
+protocol version. The SANE network daemon receiving such a request
+must make sure that the network protocol version corresponds to a
+supported version since otherwise the encoding of the network stream
+may be incompatible (even though the SANE interface itself may be
+compatible). The \code{user\_name} argument is the name of the user
+on whose behalf this call is being performed. If the network backend
+cannot determine a user-name, it passes a \code{NULL} pointer for this
+argument. No trust should be placed in the authenticity of this
+user-name. The intent of this string is to provide more convenience
+to the user. E.g., it could be used as the default-user name in
+subsequent authentication calls.
+
+In the reply, \code{status} indicates the completion status. If the
+value is anything other than \code{SANE\_STA\-TUS\_GOOD}, the
+remainder of the reply has undefined values.\footnote{The sane network
+ daemon should be careful not to leak information in the undefined
+ portion of the reply.} The \code{version\_code} argument returns the
+SANE version-code that the network daemon supports. See the comments
+in the previous paragraph on the meaning of the build-revision in this
+version code.
+
+\subsection{\code{\defn{SANE\_NET\_GET\_DEVICES}}}
+
+RPC Code: 1
+
+This RPC is used to obtain the list of devices accessible by the SANE
+daemon.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{void} & \code{SANE\_Word status} \\
+ & \code{SANE\_Device ***device\_list} \\
+\end{tabular}
+\end{center}
+There are no arguments in the request for this call.
+
+In the reply, \code{status} indicates the completion status. If the
+value is anything other than \code{SANE\_STA\-TUS\_GOOD}, the
+remainder of the reply has undefined values. The \code{device\_list}
+argument is a pointer to a \code{NULL}-terminated array of
+\code{SANE\_Device} pointers.
+
+\subsection{\code{\defn{SANE\_NET\_OPEN}}}
+
+RPC Code: 2
+
+This RPC is used to open a connection to a remote SANE device.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_String device\_name} & \code{SANE\_Word status} \\
+ & \code{SANE\_Word handle} \\
+ & \code{SANE\_String resource} \\
+\end{tabular}
+\end{center}
+The \code{device\_name} argument specifies the name of the device to
+open.
+
+In the reply, \code{status} indicates the completion status. If the
+value is anything other than \code{SANE\_STA\-TUS\_GOOD}, the
+remainder of the reply has undefined values. The \code{handle}
+argument specifies the device handle that uniquely identifies the
+connection. The \code{resource} argument is used to request
+authentication. If it has a non-\code{NULL} value, the network
+backend should authenticate the specified resource and then retry this
+operation (see Section~\ref{sec:authorization} for details on how to
+authorize a resource).
+
+\subsection{\code{\defn{SANE\_NET\_CLOSE}}}
+
+RPC Code: 3
+
+This RPC is used to close a connection to a remote SANE device.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word handle} & \code{SANE\_Word dummy} \\
+\end{tabular}
+\end{center}
+The \code{handle} argument identifies the connection that should be
+closed.
+
+In the reply, the \code{dummy} argument is unused. Its purpose is to
+ensure proper synchronization (without it, a net client would not be
+able to determine when the RPC has completed).
+
+\subsection{\code{\defn{SANE\_NET\_GET\_OPTION\_DESCRIPTORS}}}
+
+RPC Code: 4
+
+This RPC is used to obtain {\em all\/} the option descriptors for a
+remote SANE device.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word handle} & \code{Option\_Descriptor\_Array odesc} \\
+\end{tabular}
+\end{center}
+The \code{handle} argument identifies the remote device whose option
+descriptors should be obtained.
+
+In the reply, the \code{odesc} argument is used to return the array of
+option descriptors. The option descriptor array has the following
+structure:
+\begin{quote}\index{Option\_Descriptor\_Array}
+\begin{verbatim}
+struct Option_Descriptor_Array
+ {
+ SANE_Word num_options;
+ SANE_Option_Descriptor **desc;
+ };
+\end{verbatim}
+\end{quote}
+
+
+\subsection{\code{\defn{SANE\_NET\_CONTROL\_OPTION}}}
+
+RPC Code: 5
+
+This RPC is used to control (inquire, set, or set to automatic) a
+specific option of a remote SANE device.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word handle} & \code{SANE\_Status status} \\
+ \code{SANE\_Word option} & \code{SANE\_Word info} \\
+ \code{SANE\_Word action} & \code{SANE\_Word value\_type} \\
+ \code{SANE\_Word value\_type} & \code{SANE\_Word value\_size} \\
+ \code{SANE\_Word value\_size} & \code{void *value} \\
+ \code{void *value} & \code{SANE\_String *resource} \\
+\end{tabular}
+\end{center}
+The \code{handle} argument identifies the remote device whose option
+should be controlled. Argument \code{option} is the number (index) of
+the option that should be controlled. Argument \code{action}
+specifies what action should be taken (get, set, or set automatic).
+Argument \code{value\_type} specifies the type of the option value
+(must be one of \code{SANE\_TYPE\_BOOL}, \code{SANE\_TYPE\_INT},
+\code{SANE\_TYPE\_FIXED}, \code{SANE\_TYPE\_STR\-ING},
+\code{SANE\_TYPE\_BUTTON}). Argument \code{value\_size} specifies
+the size of the option value in number of bytes (see
+Section~\ref{sec:valuesize} for the precise meaning of this value).
+Finally, argument \code{value} is a pointer to the option value. It
+must be a writeable area that is at least \code{value\_size} bytes
+large. (Note that this area must be writable even if the action is to
+set the option value. This is because the backend may not be able to
+set the exact option value, in which case the option value is used to
+return the next best value that the backend has chosen.)
+
+In the reply, argument \code{resource} is set to the name of the
+resource that must be authorized before this call can be retried. If
+this value is non-\code{NULL}, all other arguments have undefined
+values (see Section~\ref{sec:authorization} for details on how to
+authorize a resource). Argument \code{status} indicates the
+completion status. If the value is anything other than
+\code{SANE\_STA\-TUS\_GOOD}, the remainder of the reply has undefined
+values. The \code{info} argument returns the information on how well
+the backend was able to satisfy the request. For details, see the
+description of the corresponding argument in
+Section~\ref{sec:control}. Arguments \code{value\_type} and
+\code{value\_size} have the same values as the arguments by the same
+name in corresponding request. The values are repeated here to ensure
+that both the request and the reply are self-contained (i.e., they can
+be encoded and decoded independently). Argument \code{value} is holds
+the value of the option that has become effective as a result of this
+RPC.
+
+
+\subsection{\code{\defn{SANE\_NET\_GET\_PARAMETERS}}}
+
+RPC Code: 6
+
+This RPC is used to obtain the scan parameters of a remote SANE
+device.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word handle} & \code{SANE\_Status status} \\
+ & \code{SANE\_Parameters params} \\
+\end{tabular}
+\end{center}
+The \code{handle} argument identifies the connection to the remote
+device whose scan parameters should be returned.
+
+In the reply, \code{status} indicates the completion status. If the
+value is anything other than \code{SANE\_STA\-TUS\_GOOD}, the
+remainder of the reply has undefined values. The argument
+\code{params} is used to return the scan parameters.
+
+\subsection{\code{\defn{SANE\_NET\_START}}}
+
+RPC Code: 7
+
+This RPC is used to start image acquisition (scanning).
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word handle} & \code{SANE\_Status status} \\
+ & \code{SANE\_Word port} \\
+ & \code{SANE\_Word byte\_order} \\
+ & \code{SANE\_String resource} \\
+\end{tabular}
+\end{center}
+The \code{handle} argument identifies the connection to the remote
+device from which the image should be acquired.
+
+In the reply, argument \code{resource} is set to the name of the
+resource that must be authorized before this call can be retried. If
+this value is non-\code{NULL}, all other arguments have undefined
+values (see Section~\ref{sec:authorization} for details on how to
+authorize a resource). Argument, \code{status} indicates the
+completion status. If the value is anything other than
+\code{SANE\_STA\-TUS\_GOOD}, the remainder of the reply has
+undefined values. The argument \code{port} returns the port number
+from which the image data will be available. To read the image data,
+a network client must connect to the remote host at the indicated port
+number. Through this port, the image data is transmitted as a
+sequence of data records. Each record starts with the data length in
+bytes. The data length is transmitted as a sequence of four bytes.
+These bytes should be interpreted as an unsigned integer in big-endian
+format. The four length bytes are followed by the number of data
+bytes indicated by the length. Except for byte-order, the data is in
+the same format as defined for \code{sane\_read()}. Since some
+records may contain no data at all, a length value of zero is
+perfectly valid. The special length value of \code{0xffffffff} is
+used to indicate the end of the data stream. That is, after receiving
+a record length of \code{0xffffffff}, the network client should close
+the data connection and stop reading data.
+
+Argument \code{byte\_order} specifies the byte-order of the image
+data. A value of 0x1234 indicates little-endian format, a value of
+0x4321 indicates big-endian format. All other values are presently
+undefined and reserved for future enhancements of this protocol. The
+intent is that a network server sends data in its own byte-order and
+the client is responsible for adjusting the byte-order, if necessary.
+This approach causes no unnecessary overheads in the case where the
+server and client byte-order match and puts the extra burden on the
+client side when there is a byte-order mismatch. Putting the burden
+on the client-side improves the scalability properties of this
+protocol.
+
+\subsection{\code{\defn{SANE\_NET\_CANCEL}}}
+
+RPC Code: 8
+
+This RPC is used to cancel the current operation of a remote SANE
+device.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_Word handle} & \code{SANE\_Word dummy} \\
+\end{tabular}
+\end{center}
+The \code{handle} argument identifies the connection whose operation
+should be cancelled.
+
+In the reply, the \code{dummy} argument is unused. Its purpose is to
+ensure proper synchronization (without it, a net client would not be
+able to determine when the RPC has completed).
+
+\subsection{\code{\defn{SANE\_NET\_AUTHORIZE}}}\label{sec:authorization}
+\index{network authorization}
+
+RPC Code: 9
+
+This RPC is used to pass authorization data from the net client to the
+net server.
+\begin{center}
+\begin{tabular}{ll}
+ {\bf request:} & {\bf reply:} \\
+ \code{SANE\_String resource} & \code{SANE\_Word dummy} \\
+ \code{SANE\_String username} & \\
+ \code{SANE\_String password} & \\
+\end{tabular}
+\end{center}
+The \code{resource} argument specifies the name of the resource to be
+authorized. This argument should be set to the string returned in the
+\code{resource} argument of the RPC reply that required this
+authorization call. The \code{username} and \code{password} are the
+name of the user that is accessing the resource and the password for
+the specified resource/user pair.
+
+Since the password is not encrypted during network transmission, it is
+recommended to use the following extension:
+
+If the server adds the string `\code{\$MD5\$}' to the resource-name followed
+by a random string not longer then 128 bytes, the client may answer with the
+MD5 digest of the concatenation of the password and the random string. To
+differentiate between the MD5 digest and a strange password the client prepends
+the MD5 digest with the string `\code{\$MD5\$}'.
+
+In the reply, \code{dummy} is completely unused. Note that there is
+no direct failure indication. This is unnecessary since a net client
+will retry the RPC that resulted in the authorization request until
+that call succeeds (or until the request is cancelled). The RPC that resulted
+in the authorization request continues after the reply from the client and may
+fail with \code{SANE\_STATUS\_ACCESS\_DENIED}.
+
+
+\subsection{\code{\defn{SANE\_NET\_EXIT}}}
+
+RPC Code: 10
+
+This RPC is used to disconnect a net client from a net server. There
+are no request or reply arguments in this call. As a result of this
+call, the connection between the client and the server that was
+established by the \code{SANE\_NET\_INIT} call will be closed.
+
+% Local Variables:
+% mode: latex
+% TeX-master: "sane.tex"
+% End:
diff --git a/doc/niash/niash.TODO b/doc/niash/niash.TODO
new file mode 100644
index 0000000..ded62ca
--- /dev/null
+++ b/doc/niash/niash.TODO
@@ -0,0 +1,64 @@
+To do:
+======
+- implement coarse calibration to determine settings for analog-front-end
+ All CCDs encountered so far seem to need about the same settings however.
+
+- Store analog calibration data somewhere.
+ Use currently used values as default.
+
+- Suggestions by Marcin Cieslak:
+ - clean up structures
+ - clean up namespace
+ - clean up source formatting ('indent --gnu' ?)
+
+
+- implement real calibration, using 12 bit data at 600 dpi
+ instead of 8 bit data.at 150 dpi.
+ -> is now at 600 dpi, not yet at 12 bit
+
+- design a mechanism to set the scan and calibration areas
+ a) part of HWProps structure, or
+ b) set by user at first scan
+
+- further investigate scanner registers
+ a) study backtracking register more
+ b) identify bits in bit-oriented registers.
+
+- add more error checking ('sanity checking') on parameters
+
+- figure out what the USB interrupts mean that sometimes occur.
+
+
+
+Done
+====
+
+- Get rid of mytypes.h / fix types
+ Now an int is implicitly assumed to be 32 bit.
+
+- make backend comply with tstbackend
+-> all externs and publics removed when compiling towards sane
+
+- implement sane_cancel properly
+-> done by ullsig
+
+- implement timing mechanism for scanner lamp
+ so scanning can only start if the lamp was already on for 30 seconds
+Possible implementation:
+On startup: if lamp is off, turn it on and start timer
+On scan: if lamp is off, turn it on and start timer. Wait for timer expiry.
+On exit: if scanner chip is niash00012 then turn off lamp,
+ otherwise let the scanner turn it off automatically
+-> Implemented by Ullrich Sigwanz
+
+- try out parallel port scanning on HP3400/4300
+-> parallel port support will be dropped, no people to test/develop it
+
+- investigate vertical resolution setting of hp3400/4300.
+-> experiment with the motor table, formula is already known to generate it
+-> 600 dpi is possible by doubling most values in the table
+-> 150 dpi can be done by using register 0x06 to skip every other line
+
+- Add separate gamma tables for R, G, B. This should be easy (look at how
+ other backends do it) but is not really required yet.
+-> not required
diff --git a/doc/plustek/FAQ b/doc/plustek/FAQ
new file mode 100644
index 0000000..7d65f41
--- /dev/null
+++ b/doc/plustek/FAQ
@@ -0,0 +1,385 @@
+Plustek-Driver TROUBLESHOOTING/FAQ - 19.04.2001
+-----------------------------------------------
+
+The driver exists now since March 2000, this is the first trial to setup
+a FAQ. This leads into the following:
+First we have a part, which is more a troubleshooting section and the second
+one is the FAQ.
+To search through this text, search for "SYMPTOM" or "Q:".
+
+If you have some more FAQ entries, let me know <gerhard@gjaeger.de>
+
+THANKS to Jochen <jochen@puchalla-online.de>, who roamed through the
+mailing-list and gathered the different questions.
+
+
+*******************************************************************************
+* TROUBLE-SHOOTING *
+* *
+* DRIVER TOPICS *
+*******************************************************************************
+
+
+SYMPTOM: "kernel-module version mismatch"
+--------
+"When I try to "make load" I get an error"
+
+/sbin/modprobe pt_drv || exit 1
+/lib/modules/2.2.14-6.0.6/misc/pt_drv.o: kernel-module version mismatch
+/lib/modules/2.2.14-6.0.1/misc/pt_drv.o was compiled
+for kernel version 2.2.14-5.0
+while this kernel is version 2.2.14-6.0.1.
+
+PROBLEM:
+--------
+You're using the wrong Kernel-header files.
+
+The path
+/usr/include/linux is a link to
+/usr/src/linux/include/linux and
+/usr/src/linux is normally a link to your current
+kernel, i.e:
+/usr/src/linux-2.2.14
+
+If you now upgrade your kernel and you have
+forgotten to correct the link /usr/src/linux, then
+every kernel-module you build outside the
+kernelsource structure will include the wrong
+version information.
+
+SOLUTION:
+---------
+Set the link /usr/src/linux
+to your current kernel-source tree before recompiling
+kernel-modules like pt_drv, then your version mismatch
+problem should be solved.
+
+
+
+SYMPTOM: "Device or resource busy"
+--------
+Any attempt to "modprobe" or "make load" the driver leads
+to this message.
+
+PROBLEM:
+--------
+The driver refuses to load. During startup, the driver performs
+some tests according to the parallel port and the connected
+scanners.
+If the parallel port is not supported or the scanner cannot be
+found, the driver returns an error and the system will report
+"device or resource busy"
+
+SOLUTION:
+---------
+There's no way to provide a general solution. First of all
+you should check your connections and the parallel port.
+Also check power for your scanner.
+If the problem still exists, enable the debug-messages of the
+pt_drv module (see INSTALL).
+Then check the messages after loading or send the output to
+the mailing list.
+Most of these problems are related to HW-problems. Before
+giving up, check the scanner under Windows (not really a
+good advice I know, but it helps to find HW-damage).
+There was also one case were the internal plugs of the parport
+connection were wrong...
+
+
+
+SYMPTOM: "Unresolved symbols"
+--------
+"make load" or "modprobe pt_drv" produces this message:
+
+/sbin/modprobe pt_drv || exit 1
+/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_unregister_device
+/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_enumerate
+/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_register_device
+/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_claim
+/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_release
+/lib/modules/2.2.14-5.0/misc/pt_drv.o: insmod
+/lib/modules/2.2.14-5.0/misc/pt_drv.o failed
+
+
+PROBLEM:
+--------
+The driver needs at least the parport_pc and the parport modules
+to work. They MUST be loaded prior to pt_drv. If these modules
+are not loaded you get this message.
+
+SOLUTION:
+---------
+Simply load the parport module. You can add this dependency to
+your /etc/modules.conf (or /etc/conf.modules) file (see INSTALL).
+Then everytime you load pt_drv with modprobe, parport will be loaded
+automatically. After modifying this file, call
+depmod -va
+
+
+
+SYMPTOM: Scanner makes awful noise
+--------
+
+PROBLEM:
+--------
+This can have two major causes:
+- You have an ASIC96001/3 based scanner, then the sensor hits the
+ scanbed: !!! TURN OFF SCANNER POWER !!!
+
+- You have an ASIC98001 based scanner, then the motor control does
+ not work correctly --> hit the cancel button
+
+SOLUTION:
+---------
+For the first case (ASIC 96001/3), there's no solution available. This
+happens, when the driver can't keep track of the stepper motor. The image
+you get is normally unusable.
+The second case is often reported when the printer driver lp.o is
+already loaded. So remove lp.o before loading pt_drv.
+
+
+
+SYMPTOM: Printer starts to print while scanning
+--------
+
+PROBLEM:
+--------
+It has been reported, that some printers (esp. HP printers) start to
+print, even during startup of the driver. This is a problem to printers
+which use a bidirectional protocol for talking with the system.
+
+
+SOLUTION:
+---------
+There is no possibility to handle this problem inside the driver.
+One possibility is to switch off the bidirectional communication of the
+printer. The other one is to connect the printer to another parallel port.
+
+
+*******************************************************************************
+* SANE-topics *
+*******************************************************************************
+
+Here you will not find how to setup xscanimage to work with GIMP or
+how to compile sane to obtain xscanimage, for such questions, please
+refer to the mailing lists at SANE (http://www.sane-project.org)
+
+
+SYMPTOM: error in loading shared libraries: libsane.so.1: cannot open
+-------- shared object file: No such file or directory
+
+PROBLEM:
+--------
+The shared libraries for SANE have been installed to a
+directory which is not in your "library path"
+
+SOLUTION:
+---------
+SANE installs its shared libraries to PREFIX/lib/sane.
+PREFIX is in general /usr or /usr/local. You should
+either add the path to your /etc/ld.so.conf file or
+set links to the libraries from a wellknown lib-path.
+(i.e. ln -s /usr/lib/sane/libsane.so.1 /usr/lib/libsane.so.1)
+In any case you should run "ldconfig -v"
+
+
+
+SYMPTOM: "no SANE devices found"
+--------
+While testing with "scanimage -L" nothing happens. And when starting scanimage
+this message is displayed.
+
+PROBLEM:
+--------
+The frontend cannot find any sane-device, this might have several causes:
+- the driver is not loaded
+- you have no access to the driver
+- the backend is not enabled
+- the driver is not specified
+- version conflict between the loaded driver and the backend
+
+SOLUTION:
+---------
+Driver not loaded: check "cat /proc/pt_drv" if this does not exist, load
+the driver (see INSTALL)
+
+No access to the driver: check "ls -l /dev/pt_drv*" and you should get
+
+crw-rw-r-- 1 root root 40, 0 Aug 29 15:18 /dev/pt_drv
+crw-rw-r-- 1 root root 40, 0 Aug 29 15:18 /dev/pt_drv0
+crw-rw-r-- 1 root root 40, 1 Aug 29 15:18 /dev/pt_drv1
+crw-rw-r-- 1 root root 40, 2 Aug 29 15:18 /dev/pt_drv2
+crw-rw-r-- 1 root root 40, 3 Aug 29 15:18 /dev/pt_drv3
+
+If not, call "make load" in the driver source directory. This call sometimes
+fails, so you might create the entries by using mknod:
+mknod -m 0664 /dev/pt_drv c 40 0
+mknod -m 0664 /dev/pt_drv0 c 40 0
+mknod -m 0664 /dev/pt_drv1 c 40 1
+mknod -m 0664 /dev/pt_drv2 c 40 2
+mknod -m 0664 /dev/pt_drv3 c 40 3
+
+The backend is not enabled: Check the SANE configuration in /etc/sane.d,
+/usr/etc/sane.d or /usr/local/etc/sane.d (depending on your installation).
+Your dll.conf MUST include an enabled "plustek" entry (no "#" in front of
+that line)
+
+The driver is not specified: Check the sane configuration (see above)
+for the file plustek.conf and make sure that it contains at least
+/dev/pt_drv as entry.
+
+Version conflict: After enabling the SANE debug messages you will
+get something like upon starting scanimage:
+ioctl PT_DRV_OPEN_DEVICE failed(-9019)
+Version problem, please recompile driver!
+In this case, you MUST recompile the backend AND the driver and reinstall
+both. This feature makes sure, that both always will use the same ioctl
+interface.
+
+
+PROBLEM:
+--------
+I have SANE-1.0.4 and there's no backend-directory after unpacking, so
+what to do?
+
+SOLUTION:
+---------
+You're wrong there is a backend directory!!!
+Since SANE-1.0.4, there are two packages:
+sane-backends
+sane-frontends
+For the installation, you need the backend tarball. This should give
+you something like:
+sane-1.0.4/sane-backends
+and there below sane-backends is the backend directory. So you have
+to unpack the plustek-sane...tgz in sane-backends.
+
+
+
+*******************************************************************************
+* F A Q *
+*******************************************************************************
+
+Q: What does "Turbo" mean ?
+
+A: Turbo does not mean, that the scanner is faster ;-)
+ There are currently three OpticPro9636P Scanners.
+ OP9636P
+ OP9636P+
+ OP9636PTurbo
+ The + and the Turbo models are quite the same and the difference between
+ the Turbo and the non-Turbo is the scan-sensor. The Turbo uses the same
+ like the newer OP9636T/12000T and the non-Turbo uses the older ones
+ from the OP9630....
+
+
+Q: Is it possible to use the front-button of my Plustek 9630P ?
+
+A: It is possible since version 0.37. After loading the driver,
+ use the proc filesystem to get the button value:
+ cat /proc/pt_drv/device0/button0
+
+
+Q: Is it possible to use the scanner in gimp ?
+
+A: You should be able to use xscanimage with gimp:
+ 1. Login as root
+ 2. Go into the gimp plug-in directory
+ (on SuSE it is: /usr/lib/gimp/1.1/plug-ins/ )
+ 3. Find xscanimage : which xscanimage
+ 4. Create a symbolic link to xscanimage :
+ ln -s "/path/to/"xscanimage xscanimage
+ 5. logout as root
+ Now call gimp, in the xtns menu you should find
+ now the Acquire Image menu entry. That's all.
+ If not, start gimp from an xterm and have a look at the output.
+
+
+Q: Is there any way to load the plustek_driver at bootup-time?
+
+A: Normally, there is no need to do so, because once you
+ altered your /etc/conf.modules file (or /etc/modules.conf)
+ and added the suggested stuff (see INSTALL file), you won't
+ have to worry about loading the driver. It happens automagically. ;-)
+ The driver will be loaded when needed (and eventually
+ removed after a specific time of not using it).
+
+ Nevertheless, another possibility is to do a modprobe pt_drv in the
+ /etc/rc.d/boot.local (using SuSE) or
+ /etc/rc.d/rc.local (using RedHat or Mandrake) file
+ So the driver will be loaded at bootup-time...
+ !!! YOUR SCANNER MUST BE ONLINE during power-up then !!!
+
+
+Q: I wonder if Mandrake 7.1's sane rpm file has this support already built in.
+ My scanner light is coming on yet Xscanimage seems to report that there
+ is no scanner present.
+
+A: The backend code will be included in Version 1.0.3 of sane and
+ AFAIK Mandrake 7.1 only includes 1.0.2.
+ Anyway go to the plustek-driver download page at
+ http://home.t-online.de/home/g-jaeger/plustek.html
+ download and install the driver.
+
+
+Q: Mandrake installs sane by default at install-time.
+ Is there a way to install the driver with the preinstalled sane
+ or should the preinstalled sane be removed first?
+ If so, how do I remove the preinstalled sane?
+
+A: I recommend to uninstall the previous one.
+ I think Mandrake uses RPM for managing the packages. To remove sane
+ do the following (as root)
+
+ Ask for all installed packages and filter sane:
+ rpm -qa | grep sane
+ you should get something like this:
+ sane-1.0.1-94
+ Now remove this package:
+
+ rpm -e sane-1.0.1-94
+
+ After theses steps, sane should be removed.
+ I'm not sure, but you might have to remove the /etc/sane.d manually...
+ Now got to your sane-1.0.3 stuff and reinstall this
+ as described. Before using, you might have a look
+ at the dll.conf and enable only the plustek backend.
+
+
+Q: Now that there's a sane 1.0.3, how do i uninstall sane 1.0.2?
+ Or can i install it over?
+
+A: In general you can install it over. BUT this has caused
+ quite a lot of trouble, so I recommend to remove the 1.0.2
+ completely and install 1.0.3...
+
+ try the rpm-tool:
+ Get a list of the installed packages and filter out sane:
+
+ rpm -qa | grep sane
+
+ You should get something like:
+
+ sane-1.0.2-48
+
+ Then use rpm to remove sane:
+
+ rpm -e sane-1.0.2-48
+
+ The other way is:
+
+ rm -rf /etc/sane.d
+ rm -rf /usr/lib/sane
+ rm -rf /usr/lib/libsane*
+ rm -rf /usr/include/sane
+ rm -rf /usr/etc/sane.d
+ rm -rf /usr/share/sane*
+ rm -rf /usr/local/lib/sane
+ rm -rf /usr/local/lib/libsane*
+ rm -rf /usr/local/include/sane
+ rm -rf /usr/local/etc/sane.d
+ rm -rf /usr/local/share/sane*
+
+ This should cover all the directories where maybe some
+ sane files are installed...
+
diff --git a/doc/plustek/MakeModule.sh b/doc/plustek/MakeModule.sh
new file mode 100644
index 0000000..b684f0d
--- /dev/null
+++ b/doc/plustek/MakeModule.sh
@@ -0,0 +1,116 @@
+#!/bin/bash
+#******************************************************************************
+#
+# Bash-Script to create Plustek-Scannerdriver modules for Kernel 2.4, 2.6 and 3.x
+# out of the backend sources...
+#
+
+BUILD_DIR=$PWD/build
+SRC_DIR=$PWD/../../backend
+MAKEFILE=$PWD/Makefile.kernel26
+KERNEL_V=`uname -r`
+OSMINOR=`uname -r | cut -b 3`
+OSMAJOR=`uname -r | cut -b 1`
+
+#
+# some intro ;-)
+#
+echo "This script will try and build a suitable kernel-module for your system."
+echo "If you'd like to make the module WITH debug output, restart this script"
+echo "with as follows:"
+echo "./MakeModule.sh DEBUG=y"
+echo "Press <ENTER> to continue or <CTRL><C> to cancel."
+read
+
+#
+# we need to be root user...
+#
+echo -n "Check for root..."
+if [ $EUID -ne 0 ]; then
+ echo -e "\b\b\b - failed"
+ echo "Please retry as root user."
+ exit -1
+fi
+echo -e "\b\b\b - done."
+
+#
+# Version checks...
+#
+echo -e "\nCheck for kernelversion:"
+if [ "$OSMAJOR" == "3" ];then
+ echo "Using makefile for kernel 2.6.x - okay for kernel 3 as well..."
+ MAKEFILE=$PWD/Makefile.kernel26
+elif [ "$OSMINOR" == "6" ]; then
+ echo "Using makefile for kernel 2.6.x"
+ MAKEFILE=$PWD/Makefile.kernel26
+elif [ "$OSMINOR" == "4" ]; then
+ echo "Using makefile for kernel 2.4.x"
+ MAKEFILE=$PWD/Makefile.kernel24
+else
+ echo "Your kernelversion >"$OSMAJOR"."$OSMINOR"< is probably not supported"
+ exit -2
+fi
+
+#
+# Setup...
+#
+echo -e "Build-directory: \n"$BUILD_DIR
+echo -n "Removing build-directory..."
+rm -rf $BUILD_DIR
+echo -e "\b\b\b - done."
+
+echo -n "Creating build-directory..."
+mkdir $BUILD_DIR
+cd $BUILD_DIR
+echo -e "\b\b\b - done.\n"
+
+echo -n "Linking source files..."
+C_FILES=`ls $SRC_DIR/plustek-pp_*.c`
+H_FILES=`ls $SRC_DIR/plustek-pp_*.h`
+
+for F in $C_FILES $H_FILES $SRC_DIR/plustek-pp.h $SRC_DIR/plustek_pp.c; do
+ ln -s $F .
+done
+echo -e "\b\b\b - done."
+
+echo -n "Copying Makefile to build-directory..."
+cp $MAKEFILE Makefile
+echo -e "\b\b\b - done."
+
+#
+# Building the module...
+#
+echo "Making the module..."
+if [ "$OSMAJOR" == "2" -a "$OSMINOR" == "4" ]; then
+ make all $1
+else
+ make -C /lib/modules/$KERNEL_V/build/ SUBDIRS=$BUILD_DIR modules $1
+fi
+RES=$?
+cd ..
+if [ $RES != 0 ]; then
+ echo "There were some build errors..."
+ exit -1
+fi
+echo "done."
+
+echo "Should I install the module?"
+echo "Press <ENTER> to continue or <CTRL><C> to cancel."
+read
+
+make -C $BUILD_DIR install
+
+echo "Should I try and load the module?"
+echo "If this step fails, check the kernel-log."
+echo "Press <ENTER> to continue or <CTRL><C> to cancel."
+read
+
+make -C $BUILD_DIR load
+echo "done."
+
+echo "Should I remove the build directory?"
+echo "Press <ENTER> to continue or <CTRL><C> to cancel."
+read
+
+rm -rf $BUILD_DIR
+echo "done."
diff --git a/doc/plustek/Makefile.kernel24 b/doc/plustek/Makefile.kernel24
new file mode 100644
index 0000000..207ef39
--- /dev/null
+++ b/doc/plustek/Makefile.kernel24
@@ -0,0 +1,251 @@
+# Makefile for the plustek scanner driver (kernel-module)
+#
+###############################################################################
+#
+# define the directories
+#
+HOME_DIR := .
+SRC_DIR := $(HOME_DIR)
+INC_DIR := $(SRC_DIR)
+OBJ_DIR := $(HOME_DIR)/obj
+DOC_DIR := $(HOME_DIR)/doc
+BACKEND := $(SRC_DIR)
+
+#
+# define the used tools
+#
+MD = mkdir -p
+CC = gcc
+TAR = tar
+REF = cxref
+
+#
+# Comment/uncomment the following line to disable/enable debugging
+# can also be set by commandline parameter: make all DEBUG=y
+#
+#DEBUG = y
+
+#
+# common compiler options
+#
+OPT = -fomit-frame-pointer -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
+
+#
+# cxref options
+#
+REFOPT = -xref-all -index-all -html32
+
+#
+# Comment out if you are not running SMP. Someone take this out of here
+# when the SMP stuff gets moved out of the kernel Makefile.
+# SMP = 1
+# SMP_PROF = 1
+
+#
+# add the following to get assembly listing
+# -Wa,-alh,-L -g
+
+#
+# get some version numbers
+#
+ifeq ($(LINUXVERSION),)
+ LINUXVERSION = $(shell uname -r)
+endif
+
+VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SRC_DIR)/plustek_pp.c | cut -b25-50 )
+
+# Change it here or specify it on the "make" commandline
+ifeq ($(HEADER_PATH),)
+MACHTYPE = $(shell env | grep debian-linux | wc -l | sed 's/ //g')
+ifeq ($(MACHTYPE),1)
+# debian
+ HEADER_PATH = /usr/src/kernel-headers-$(LINUXVERSION)/include
+else
+# redhat, slackware
+ HEADER_PATH = /usr/src/linux/include
+endif
+# HEADER_PATH = /usr/include
+endif
+
+ifeq ($(DEBUG),y)
+ DEBFLAGS = -O -g -DDEBUG # "-O" is needed to expand inlines
+else
+ DEBFLAGS = -O2
+endif
+
+#
+# the new style reference
+#
+K24_HEADER_PATH = /lib/modules/$(LINUXVERSION)/build/include
+
+#
+# try to autodetect if we can use the new style header include references
+#
+KERNEL_HEADERS = $(shell if test -d $(K24_HEADER_PATH); then \
+ echo $(K24_HEADER_PATH); \
+ else \
+ echo $(HEADER_PATH); \
+ fi; )
+
+#
+# seems to be necessary for kernels 2.4.x
+#
+MODVERFILE = $(shell if [ -e $(KERNEL_HEADERS)/linux/modversions.h ]; then \
+ echo $(KERNEL_HEADERS)/linux/modversions.h ; \
+ else \
+ echo $(KERNEL_HEADERS)/linux/modsetver.h ; \
+ fi )
+
+MODFLAGS = -DMODULE
+
+#
+# set MODVERSIONS if the kernel uses it
+#
+VERSUSED = $(shell grep 'define CONFIG_MODVERSIONS' \
+ $(KERNEL_HEADERS)/linux/autoconf.h | wc -l | sed 's/ //g')
+ifeq ($(VERSUSED),1)
+ MODFLAGS += -DMODVERSIONS -include $(MODVERFILE)
+endif
+
+
+WARNFLAGS = -Wall -Wstrict-prototypes
+CFLAGS = $(WARNFLAGS) $(OPT) -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(DEBFLAGS) $(MODFLAGS)
+MODLIB = /lib/modules/$(LINUXVERSION)
+
+ifdef SMP
+CFLAGS += -D__SMP__
+
+ifdef SMP_PROF
+CFLAGS += -D__SMP_PROF__
+endif
+endif
+
+TARGET = pt_drv
+
+OBJ = $(TARGET).o
+NAMES := dac detect genericio image map misc models io procfs
+NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
+NAMES := $(addprefix plustek-pp_, $(NAMES))
+SRCS := $(addprefix $(SRC_DIR)/, $(NAMES))
+SRCS := $(addsuffix .c, $(SRCS))
+OBJS := $(addprefix $(OBJ_DIR)/, $(NAMES))
+OBJS := $(addsuffix .o, $(OBJS))
+INCS := scan dbg types scandata procs hwdefs sysdep
+INCS := $(addsuffix .h, $(INCS))
+HDRS = $(addprefix $(INC_DIR)/plustek-pp_, $(INCS))
+
+#
+# the header files we need from the backend
+#
+BACKINCS := plustek-pp.h
+BACKINCS := $(addprefix $(BACKEND)/, $(BACKINCS))
+
+group = "root"
+mode = "644"
+INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/char
+
+info:
+ @clear
+ @echo "Makefile to create the Plustek-Scanner kernel-module:"
+ @echo "all ... builds the module"
+ @echo "all DEBUG=y ... builds the module with debug-messages enabled"
+ @echo "clean ... cleans up the show"
+ @echo "install ... installs the module to the library path"
+ @echo "uninstall ... removes the module from the library path"
+ @echo "load ... tries to load the module and creates device nodes"
+ @echo "unload ... unloads the module"
+
+
+all: .depend chkdir $(OBJ)
+
+#
+# create object directory
+#
+.PHONY : chkdir
+chkdir:
+ @-$(MD) $(OBJ_DIR)
+ @-$(MD) $(DOC_DIR)
+
+$(OBJ): $(OBJS)
+ $(LD) -r $^ -o $@
+
+$(OBJS): Makefile $(HDRS) $(BACKINCS)
+
+$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
+ $(CC) $(CFLAGS) -c $< -o $@
+
+$(OBJ_DIR)/$(OBJ): VERSION1 VERSION0
+
+#
+# copy the driver to the modules directory
+#
+install:
+ mkdir -p $(INST_DIR)
+ install -c -m $(mode) $(OBJ) $(INST_DIR)
+ /sbin/depmod -a
+
+#
+# remove it
+#
+uninstall:
+ rm -f $(INST_DIR)/$(OBJ)
+
+#
+# use modprobe to load the driver, remember to set the
+# parameter in /etc/modules.conf (see sane-plustek_pp.man for more details)
+#
+load: $(INST_DIR)/$(OBJ)
+# invoke modprobe with all arguments we got
+ /sbin/modprobe $(TARGET) || exit 1
+
+# Remove stale nodes and replace them, then give gid and perms
+ rm -f /dev/$(TARGET)*
+
+# when using the devfs support, we check the /dev/scanner entries
+# and only create links to the devfs nodes
+# at least we create one link
+ @if [ -e /dev/scanner/$(TARGET)* ]; then \
+ ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
+ for name in `ls /dev/scanner | grep $(TARGET)`; do \
+ ln -s /dev/scanner/$$name /dev/$$name ; \
+ done \
+ else \
+ mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
+ mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
+ mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
+ mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
+ mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
+ \
+ chgrp $(group) /dev/$(TARGET)*; \
+ chmod $(mode) /dev/$(TARGET)*; \
+ fi
+
+#
+# unload the driver
+#
+unload:
+ /sbin/modprobe -r $(TARGET) || exit 1
+
+# Remove stale nodes
+ rm -f /dev/$(TARGET)*
+
+#
+# create reference docu
+#
+doc: chkdir
+ $(REF) $(REFOPT) $(INC_DIR)/*.h $(SRC_DIR)/*.c $(BACKEND)/plustek-share.h \
+ -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(MODFLAGS) \
+ -D_PTDRV_V1=$(VERSION1) -D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD) -O$(DOC_DIR)
+
+clean:
+ @-rm -f $(OBJ_DIR)/*.o .depend depend dep $(REF).* *.html $(TARGET).o
+ @-rm -rf $(OBJ_DIR)
+ @-rm -rf $(DOC_DIR)
+
+depend .depend dep:
+ $(CC) $(CFLAGS) -M $(SRCS) > $@
+
+ifeq (.depend,$(wildcard .depend))
+#include .depend
+endif
+
diff --git a/doc/plustek/Makefile.kernel26 b/doc/plustek/Makefile.kernel26
new file mode 100644
index 0000000..43a71ad
--- /dev/null
+++ b/doc/plustek/Makefile.kernel26
@@ -0,0 +1,124 @@
+# Makefile for the plustek scanner driver (kernel-module)
+#
+###############################################################################
+
+#
+# retrieve the version numbers
+#
+ifeq ($(LINUXVERSION),)
+ LINUXVERSION = $(shell uname -r)
+endif
+LINUXRELEASE = $(shell uname -r | cut -d'.' -f3)
+
+ifeq ($(VERSIONSTR),)
+ ifeq ($(SUBDIRS),)
+ VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(M)/plustek_pp.c | cut -b25-50 )
+ else
+ VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SUBDIRS)/plustek_pp.c | cut -b25-50 )
+ endif
+endif
+
+#
+# extra flags
+#
+EXTRA_CFLAGS += -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
+
+ifeq ($(DEBUG),y)
+ EXTRA_CFLAGS += -DDEBUG
+endif
+
+#
+# the module name
+#
+TARGET := pt_drv
+MODULE := $(TARGET).ko
+
+#
+# our files...
+#
+NAMES := dac detect genericio image map misc models io procfs
+NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
+NAMES := $(addprefix plustek-pp_, $(NAMES))
+OBJS := $(addsuffix .o, $(NAMES))
+
+#
+# now the kernel magic
+#
+ifneq ($(KERNELRELEASE),)
+obj-m := $(TARGET).o
+
+$(TARGET)-objs := $(OBJS)
+
+else
+KDIR := /lib/modules/$(shell uname -r)/build
+PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KDIR) M=$(PWD) modules
+endif
+
+#
+# the installation stuff
+#
+group = "root"
+mode = "644"
+INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/parport
+
+#
+# copy the driver to the modules directory
+#
+install:
+ mkdir -p $(INST_DIR)
+ install -c -m $(mode) $(MODULE) $(INST_DIR)
+ /sbin/depmod -a
+
+#
+#
+#
+uninstall:
+ rm -f $(INST_DIR)/$(MODULE)
+
+#
+# use modprobe to load the driver, remember to set the
+# parameter in /etc/conf.modules (see INSTALL for more details)
+#
+load: $(INST_DIR)/$(MODULE)
+# invoke modprobe with all arguments we got
+ /sbin/modprobe $(TARGET) || exit 1
+
+# Remove stale nodes and replace them, then give gid and perms
+ rm -f /dev/$(TARGET)*
+
+# when using the devfs support, we check the /dev/scanner entries
+# and only create links to the devfs nodes
+# at least we create one link
+ @if [ -e /dev/scanner/$(TARGET)* ]; then \
+ ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
+ for name in `ls /dev/scanner | grep $(TARGET)`; do \
+ ln -s /dev/scanner/$$name /dev/$$name ; \
+ done \
+ else \
+ mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
+ mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
+ mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
+ mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
+ mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
+ \
+ chgrp $(group) /dev/$(TARGET)*; \
+ chmod $(mode) /dev/$(TARGET)*; \
+ fi
+
+#
+# unload the driver
+#
+unload:
+ /sbin/modprobe -r $(TARGET) || exit 1
+
+# Remove stale nodes
+ rm -f /dev/$(TARGET)*
+
+#
+# cleanup the show
+#
+clean:
+ @-rm -f *.o .depend depend dep $(MODULE) $(TARGET).o $(TARGET).mod.c .*.cmd
diff --git a/doc/plustek/Plustek-PARPORT-TODO.txt b/doc/plustek/Plustek-PARPORT-TODO.txt
new file mode 100644
index 0000000..94ef5f7
--- /dev/null
+++ b/doc/plustek/Plustek-PARPORT-TODO.txt
@@ -0,0 +1,38 @@
+Plustek-PARPORT-TODO.txt (2003-29-10) Gerhard Jäger <gerhard@gjaeger.de>
+========================================================================
+
+TODO (in general):
+ - more documentation/comments on the different functions
+ - remove/check the CHECK marks
+ - add additional button handler
+ - adding adjustment of the scan area
+ - checking timeout conditions (MiscCheckTimer !) and handle them correctly
+ - let the 96001/3 based models work with the highest available
+ phys. resolution
+ - Create the modes out of the capability list of each device
+
+(USER-MODE):
+ - line by line feedback to the backend
+
+
+KNOWN BUGS/Limitations:
+
+Model Description Workaround
+------------------------------------------------------------------------------
+
+OpticPro P9636 detected as OP12000 none
+Genius VividPro II Film Halftone/Gray > 450 dpi didn't work none
+OpticPro P4830 binary scanning does not work none
+OpticPro A3I bad picture quality none
+Genius HR6 negative scanning not okay none
+
+********************************* DONE ***************************************
+
+- PS/2 bidi does not work (libieee1284)
+- Update the IOCTL interface and remove some old structs (CmdBlk)
+
+******************************** SKIPPED *************************************
+
+better dither maps nobody needs halftone scanning
+make the backtrace work for ASIC 96001/3 not possible due to ASIC limits
+based models
diff --git a/doc/plustek/Plustek-PARPORT.changes b/doc/plustek/Plustek-PARPORT.changes
new file mode 100644
index 0000000..0e7d73b
--- /dev/null
+++ b/doc/plustek/Plustek-PARPORT.changes
@@ -0,0 +1,180 @@
+Version 0.1 10/20/98
+ 1.0 Initial release
+Version 0.2 10/26/98
+ 1.0 Fix Red/Green swap, optimize ppm output for black and white.
+Version 0.3 10/28/98
+ 1.0 Merge code with SANE
+ 2.0 Put GPL/SANE license info in all files
+Version 0.4 10/31/98
+ 1.0 Have driver report ASIC ID up to backend.
+ 2.0 Put NT stuff back in so that driver may be built under NT, try to
+ test build under NT but run out of memory in link.
+Version 0.5 10/31/98
+ 1.0 Fix parameters not getting reflected from crop.
+Version 0.6 11/1/98
+ 1.0 Take out unused stuff from ioctl_pt_drv.h.
+ 2.0 Put in VERSION info in Makefile and archiver.
+Version 0.7 11/4/98
+ 1.0 Fix model string when -L option is given. Add in driver version
+ string to model.
+ 2.0 Change Makefile so it builds without MODVERSIONS on distributions
+ that don't have it (Slackware).
+Version 0.8 11/5/98
+ 1.0 Change output when -L option is given to add status byte to try
+ to determine any differences between the 4830 and the 9630.
+Version 0.9 11/6/98
+ 1.0 Fix 4800 problem of inverse image when not in Binary mode.
+ 2.0 Put more debug stuff in, print out all read
+ reg's.
+Version 0.10 11/6/98
+ 1.0 Get halftone working.
+ 2.0 Put in hooks for kernel 2.1
+Version 0.11 11/17/98
+ 1.0 Put in sysdep-2.1.h to Makefile distrib
+Version 0.20 3/7/99
+ 1.0 Lots of changes to support 9630/12000.
+-------------------------------------------------------------------------------
+Version 0.3 02/29/2000
+ 1.0 Completely rewritten, does now support Plustek OpticPro 9636T scanner
+
+Version 0.31 03/20/2000
+ 1.0 Fix a bug in the autodetection routine
+ 2.0 Enhanced backend, to reflect the different modes the OpticPro 9636T
+ supports
+
+Version 0.32 - never released
+ 1.0 Corrected warmup-behaviour
+ 2.0 Fixed "first picture corrupted"-bug for transparency mode
+ 3.0 Fixed a bug that causes seg-faults when using cat /dev/pt_drv
+ 4.0 Added SCALE.C
+ 5.0 Made 4830P work
+
+Version 0.33 - never released
+ 1.0 Now using parport-module info for par-mode detection
+ 2.0 Made 9630P work
+
+Version 0.34 05/10/2000
+ 1.0 Data-recovery code for heavy load systems
+
+Version 0.35 05/19/2000
+ 1.0 Made 12000P/96000P work
+ 2.0 Merged parallel port code from Kevin Sisson
+ 3.0 Added new parameter "legal"
+
+Version 0.36 07/22/2000
+ 1.0 Improved data-recovery mechanism for ASIC96001/3 based models
+ 2.0 Added code for OP4800 shading
+ 3.0 Improved backend code to allow canceling the scan process
+ 4.0 OP600 and Primax 4800 Direct are working now
+ 5.0 Added new parameter "mov" (Model OVerride)
+ 6.0 Removed parameter "legal", use now "mov"
+ 7.0 Moved common headers for backend and driver to backend directory
+ and prepared the backend for SANE distribution
+ 8.0 OP6000 is working
+ 9.0 added man-page
+ 10.0 added multi-device support
+ 11.0 added support for 12-bit scans (SANE-1.0.3 and scanimage!!)
+
+Version 0.37 11/09/2000
+ 1.0 Added file io.c for parallel port I/O
+ 2.0 Added file procfs.c for proc-filesystem support
+ 3.0 Code cleanup
+ 4.0 Added A3I support
+ 5.0 Added Michaels backend patches
+
+Version 0.38 11/30/2000
+ 1.0 Started integration of ASIC98003 specific stuff
+ 2.0 renamed file transform.c tpa.c
+ 3.0 removed portmode stuff (I decided to support SPP/BPP and EPP, that's all)
+ 4.0 again code-cleanup
+ 5.0 PT12 is working
+ 6.0 Removed gray-mode scanning for TPA modes
+ 7.0 some minor changes according to kernel 2.4.x
+
+Version 0.39 08/11/2001
+ 1.0 Added slowIO switch
+ 2.0 Fixed some minor bugs
+ 3.0 Added forceMode switch
+ 4.0 Fixed a problem in the PT12 code that causes I/O timeouts
+ 5.0 Added Genius Colorpage Vivivd III V2 stuff
+ 6.0 Added A3I stuff aquired from Plustek
+ 7.0 Fixed a bug, that causes some seg-faults
+
+Version 0.40 12/17/2001
+ 1.0 The USB stuff has been included
+ 2.0 Fixed some minor problems
+ 3.0 Added Kernel 2.4.17 specific stuff
+ 4.0 Disabled A3I stuff as this refuses ASIC96003 based devices to work
+
+Version 0.41 01/10/2002
+ 1.0 Changed IOCTL interface to the kernel module to allow adjustment of some
+ driver internal variables
+ 2.0 Changed plustek.conf configuration fileformat to reflect the enhanced
+ capabilites
+
+Version 0.42 02/12/2002
+ 1.0 Added custom gamma table support
+ 2.0 Added configuration-file options to preset some stuff
+ 3.0 Changed all eMail entries to gerhard@gjaeger.de
+
+Version 0.42-11 09/17/2003
+ 1.0 Some Kernel 2.6.x additions
+ 2.0 Added Primax 4800Direct 30Bit override switch
+
+Somewhere on the way to 0.43 I decided to split parport & usb
+backends, so the parport backend now is also able to run complete
+in userspace by using either direct port I/O or libieee1248
+
+Version 0.43-2 04/15/2004
+ 1.0 Fixed some kernel 2.6 issues
+
+Version 0.43-3 07/14/2004
+ 1.0 User-space code has now the same version as the module code
+
+Version 0.43-4 07/15/2004
+ 1.0 DevFS support for kernel 2.6
+ 2.0 Removed floating point operations (Thanx to Rafal Rzepecki)
+ 3.0 More cleanup work
+ 4.0 bumped up build number
+
+Version 0.43-5 10/06/2004
+ 1.0 Change some scanmode definitions to match the SANE predefined
+ ones
+
+Version 0.43-6 04/25/2005
+ 1.0 Removed inline stuff from kernel module code, as GCC3.4 will
+ make some trouble
+
+Version 0.43-7 05/11/2005
+ 1.0 Fixed timer issues in user-space (Thanx to Rod Roark)
+
+Version 0.43-8 08/10/2005
+ 1.0 Fixed problem on ASIC96003/1 based devices, when scanning
+ lineart at 200 and 300 dpi
+
+Version 0.43-9 11/14/2005
+ 1.0 Fixed sizeof(long) issue for 64bit platforms, see
+ bug #302195
+
+Version 0.43-10 02/16/2006
+ 1.0 Fixed bug, that prevents backend from working, when the
+ device is connected to parport1 or higher, parport0 works.
+ Bug spotted by Christoph Steinbruchel.
+
+Version 0.43-11 08/09/2006
+ 1.0 Changed sane.type to "flatbed scanner" only
+
+Version 0.43-12 08/29/2006
+ 1.0 Fixed "not homing" problem, the sensor did not
+ return when the driver gets the _IOCTL_STOP command
+ 2.0 Fixed compilation issue for kernels > 2.6.15
+ 3.0 Fixed compiler warning conditions
+
+Version 0.43-13 06/18/2007
+ 1.0 Removed DEVFS stuff for Kernels > 2.6.15
+ 2.0 Added class stuff
+
+Version 0.44-1 02/13/2013
+ 1.0 Fixed issues for Kernels > 2.6.35
+ 2.0 Define ULong and friends to uint32_t to make the driver
+ work in a 64 bit environment \ No newline at end of file
diff --git a/doc/plustek/Plustek-PARPORT.txt b/doc/plustek/Plustek-PARPORT.txt
new file mode 100644
index 0000000..e5b6097
--- /dev/null
+++ b/doc/plustek/Plustek-PARPORT.txt
@@ -0,0 +1,49 @@
+Plustek-PARPRORT.txt (2004-03-28) Gerhard Jäger <gerhard@gjaeger.de>
+====================================================================
+
+
+Beginning with SANE-1.0.13, there's a backend called plustek_pp.
+This is for controlling Plustek parallel-port scanner and compatible
+devices. For a full listing, see plustek_pp.desc.
+
+This code formerly was available for creating the Linux kernelmodule
+pt_drv. This should no longer be necessary. You should be able to use
+the backend out of the box.
+
+
+The kernel module
+-----------------
+
+As it might be helpful to create and use the kernel-module, this way still
+exists. It's possible to create this module out of the backend sources
+in sane-backends/backend. Simply do (as root user)
+
+./MakeModule.sh
+
+Then the module should be compiled, installed and loaded.
+
+Add the following three lines to file /etc/modules.conf
+
+alias char-major-40 pt_drv
+pre-install pt_drv modprobe -k parport
+options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=1
+
+See man page for sane-plustek_pp ("man sane-plustek_pp") for explanation of
+these options.
+
+Now "scanimage -L" should show something like this:
+device `plustek:/dev/pt_drv' is a Plustek 9630P flatbed scanner
+
+
+Known Problems:
+---------------
+
+Sometimes it is necessary to change the ioctl-interface between the
+driver and the backend, in this case the version number of the communication
+protocol will be changed and newer drivers won't work with older backends
+and vice versa.
+In this case (error -9019 in the SANE debug output!!) you have to recompile SANE
+AND the driver (have a look at the installation procedure above).
+
+
+
diff --git a/doc/plustek/Plustek-USB-TODO.txt b/doc/plustek/Plustek-USB-TODO.txt
new file mode 100644
index 0000000..0ea7e8b
--- /dev/null
+++ b/doc/plustek/Plustek-USB-TODO.txt
@@ -0,0 +1,53 @@
+Plustek-USB-TODO.txt (2007-12-13) Gerhard Jaeger <gerhard@gjaeger.de>
+=====================================================================
+
+TODO (in general):
+- more documentation/comments for the different functions
+- replace mclk_fast stuff and use instead values from 75DPI grayscale
+
+
+KNOWN BUGS/Limitations:
+
+Model Description Workaround
+------------------------------------------------------------------------------
+
+HP 2100c Straight Line Bug none
+Bearpaw1200 works only once restart backend each time
+All with TPA Negative Scanning quality bad none
+CIS devices Skip calibration does not work none
+
+********************************* DONE ***************************************
+
+all add plustek.conf presettings to done
+ interface for frontends
+
+all Auto-warmup done
+all Sensor movement speedup ffw/rev done
+
+Canon fine calibration does not work fixed
+Canon 650 color modes >=600 dpi too dark fixed
+Canon 660 add support done
+Canon 1220 image quality not very good fixed
+Canon 1240 gray mode too bright fixed
+
+HP 2100c hits against scan-bed fixed
+Genius Devices not recognized fixed
+EPSON Photo Permanently warmup on TPA scanning fixed
+EPSON Photo Transparency mode does not work fixed
+ correctly
+all binary mode does not work correctly done
+Canon 16bit gray mode does not work done
+EPSON 1250/60 Motor control settings are wrong fixed
+CanoScan 1240 added
+EPSON + HP vertical line bug fixed
+HP blooming on 42bit >=400dpi fixed
+UMAX5400 bad picture quality fixed
+UMAX3400 Straight Line Bug fixed
+all problems on ARM and XScale fixed
+
+Make the color modes > 8bit work correctly done
+make mono/gray modes work on Canon scanners done
+copy picture line by line to backend done
+cancel function does not work correctly in large resolutions fixed
+Move documents to its correct SANE place done
+
diff --git a/doc/plustek/Plustek-USB.changes b/doc/plustek/Plustek-USB.changes
new file mode 100644
index 0000000..8ed5cc8
--- /dev/null
+++ b/doc/plustek/Plustek-USB.changes
@@ -0,0 +1,307 @@
+Plustek.changes - Gerhard Jaeger <gerhard@gjaeger.de>
+=====================================================
+
+Note: All other not mentioned builds have never been released.
+
+V 0.52-11 (2013-02-13)
+---------------------
+Added support for Q-Scan A6 scanner (see report #312073)
+
+V 0.52-10 (2012-03-19)
+---------------------
+Fixed batch scanning
+
+V 0.52-9 (2009-04-27)
+---------------------
+Tweaked highspeed settings for Epson 1260
+
+V 0.52-8 (2008-08-25)
+---------------------
+Added preliminary support for Visioneer XP100
+Tweaked entry for LM9831 version of Plustek UT12
+
+V 0.52-7 (2007-12-13)
+---------------------
+Fixed alignment issues for archs like XScale/ARM
+Fixed dumppic function to get valid grayscale pictures
+
+V 0.52-6 (2007-11-23)
+---------------------
+Tweaked TravelScan464 settings.
+Improved AFE gain calculation for CIS devices. This should avoid
+stripes in the scanned images.
+
+V 0.52-4 (2007-11-16)
+---------------------
+Tweaked TravelScan464 settings
+Added possibility to disable dark-calibration with lamp on
+(touches devices like CanoScan1220 etc)
+Use attribute packed for data access structs
+
+V 0.52-4 (2007-11-07)
+---------------------
+Added support for Syscan TravelScan464
+
+V 0.52-3 (2007-07-26)
+---------------------
+Checked UMAX3400/3450 models
+Force output bit set (MIO), when lamp is switched
+
+V 0.52-2 (2007-07-10)
+---------------------
+Added flag to allow only 1- and 8-bit scanmodes. The Q-Scan does
+not seem to support 14-bit modes.
+
+V 0.52-1 (2007-06-29)
+---------------------
+
+Added sheetfed device Q-Scan USB001 from Portable Peripherals
+Fixed Mustek Bearpaw and did some speedup (bugreports #304343 and
+#301763)
+Fixed calibration for senororders other that RGB
+
+V 0.51-16 (2007-03-05)
+----------------------
+
+Added CanoScan to all Canon device strings.
+Identified one more Plustek device as U24.
+Fixed button handling for Plustek/KYE devices and
+added some more debug messages.
+
+V 0.51-15 (2006-11-22)
+----------------------
+Fixed option descriptors (bugreport #303786)
+
+V 0.51-14 (2006-08-11)
+----------------------
+Lowered speed for LiDE20/30 models in low resolution mode (<75dpi)
+
+V 0.51-13 (2006-08-09)
+----------------------
+Changed sane.type to "flatbed scanner" only
+Fixed motorsettings for LiDE30 (bugreport #303722)
+Fixed LiDE20 settings. Got some reports of non-working devs, although
+my N670U is working fine. Lowered the max speeds and increased the
+MCLK-div for fast movement. (bugreport #303695)
+
+V 0.51-12 (2006-06-30)
+----------------------
+Fixed bit-depth selection
+
+V 0.51-11 (2006-06-08)
+----------------------
+Fixed calibration: All modes will be coarse calibrated now, fine calibration
+will be done only for 8 bit modes.
+Fixed paper eject during startup.
+
+V 0.51-10 (2006-05-28)
+---------------------
+Released
+
+V 0.51-8 (2006-04-09)
+---------------------
+Added cache for fine calibration (CIS devices only)
+Added support for sheet-fed scanner (CIS devices only)
+Added support for Syscan TravelScan662
+
+V 0.50-10 (2006-01-31)
+---------------------
+Fixed CanoScan N1220U settings.
+
+V 0.50-9 (2006-01-19)
+---------------------
+Added high-speed setting for HP2200.
+Fixed constraint_type for OPT_BUTTON.
+
+V 0.50-8 (2006-01-18)
+---------------------
+Fixed CanoScan N670U settings (bugreport #302433).
+
+V 0.50-7 (2005-10-28)
+---------------------
+Changed high-speed setting for UMAX 3400, due to bugreport #302317.
+Added disable speeup feature (as option).
+Fixed CanoScan N650U settings (bugreport #302433).
+
+V 0.50-6 (2005-10-25)
+---------------------
+Fixed segfault in fine calibration for CIS devices.
+Tweaked LiDE25 settings (thanks to Gerd Cendelin for lending me
+his LiDE25).
+Let 1200DPI CIS devices use now the green-channel for gray scans.
+
+V 0.50-5 (2005-10-21)
+---------------------
+Fixed high-speed feature of CanoScan D660U.
+
+V 0.50-4 (2005-10-02)
+---------------------
+Updated motor settings for Canoscan LiDE25, thanks to
+Stephan February <stephanf@singnet.com.sg> for providing these
+values.
+
+V 0.50-3 (2005-08-22)
+---------------------
+Fixed problem, when trying to scan at resolutions beyond the
+optical one (sensor stops too early)
+
+V 0.50-2 (2005-08-19)
+---------------------
+More cleanup.
+Removed obsolete _WAF_BLACKFINE.
+LiDE20 does not seem to have a reliable black calibration area,
+so the devices now will switch off the lamp for dark calibration.
+Fixed line statistics and added calibration data output.
+
+V 0.50-1 (2005-08-15)
+---------------------
+Cleanup
+Activated IPC between reader-process and parent
+Added button support for Plustek/Genius devices
+Did some whitespace cleanup and removed those *p typedefs
+Tried to improve CIS calibration (somewhat back to 1.0.13)
+Added _TWEAK_GAIN definition to allow CIS calibration increase
+gain values during basic lamp setup phase
+Added call to speedtest to CIS calibration
+Fixed CanoScan startup problem (the way misc I/Os will be set
+after power-up has done the trick)
+
+V 0.49-8 (2005-08-08)
+---------------------
+Added LiDE25 settings
+
+V 0.49-7 (2005-07-21)
+---------------------
+Bugfix release - fixed lampsettings for CIS calibration
+
+V 0.49-6 (2005-07-07)
+---------------------
+Bugfix release - calibration and segfault :(
+
+V 0.49-5 (2005-07-04)
+---------------------
+Added IPC between reader-process and parent process to
+be pepared for sharing calibration info.
+Added button support for backend
+
+V 0.49-4 (2005-06-27)
+---------------------
+Fixed "double free" problem during sane_exit.
+
+V 0.49-3 (2005-04-18)
+---------------------
+Fixed backtracking problem, when sensor-speedup is active.
+
+V 0.49-2 (2005-01-12)
+---------------------
+Tweaked some device settings
+Updated copyright info
+Using now PhyDpi.y as selector for the motor MCLK range
+
+V 0.49-1 (2004-11-19)
+---------------------
+Improved multi-device capability
+
+V 0.48-10 (2004-10-30)
+----------------------
+- Fixed a bug in buffer calculation for CIS devices
+
+V 0.48-9 (2004-10-19)
+---------------------
+- Use the same option names for RGB gain as umax_pp backend
+
+V 0.48-8 (2004-10-06)
+---------------------
+- split scanmodes & bit-depths
+
+V 0.48-7 (2004-10-04)
+---------------------
+- changed some strings according to bug #300963
+
+V 0.48-6 (2004-09-07)
+---------------------
+- fixed UMAX lamp-off bug
+
+V 0.48-4 (2004-07-26)
+---------------------
+- added speedup parameters for UMAX3400/3450
+- added disableSpeedup option
+- added UMAX3400/3450 TPA autodetection
+
+V 0.48-3 (2004-07-16)
+---------------------
+- improved autowarmup feature
+- improved speedup feature
+
+V 0.48-2 (2004-07-07)
+---------------------
+- fixed binary mode for CanoScan D660U
+
+V 0.48-1 (2004-07-02)
+---------------------
+- added more options to the frontend interface
+- added UMAX 3400 with product ID 0x0050
+- added support for the UMAX 3450
+- added autowarmup for CFL (most CCD-scanner)
+- added speedup for sensor for some devices
+- fixed lamp switching problem for D660U
+- fixed negative scanning lamp problem
+- fixed Gray 16 mode for CanoScan D660U
+- code cleanup
+
+V 0.47-11 (2004-04-21)
+----------------------
+- minor fixes, esp. for MacOSX
+- added lamp-off and warmup options to be configurable by backends
+
+V 0.47-8 - 0.47-10
+------------------
+- never released
+
+V 0.47-7 (2004-02-08)
+---------------------
+- fixed bypass calibration function for CIS devices
+- added lampoff stuff to config file
+
+V 0.47-6 (2004-01-21)
+---------------------
+- Cleanup work
+- Changed lamp off timer for non-setitimer systems
+
+V 0.47-5 (2004-01-09)
+---------------------
+- Added big-endian code to support also PPC architectures
+- Added mov (model override) to support various devices using
+ the same product ID (namely Mustek BearPaw 1200)
+- Added per-model gamma values
+- Fixed a bug in the coarse CIS-lamp calibration
+- Cleanup work
+
+V 0.47-1 - 0.47-4
+-----------------
+- never released
+
+V 0.46-9 (2003-11-03)
+---------------------
+- Added alternate calibration for CIS devices
+- Added coarse calibration data-cache
+- Moved parallelport code to extra backend file plustek_pp
+- Fixed some minor bugs
+- Fixed problem with CIS devices using FreeBSD
+
+V 0.46-1 - 0.46-8
+-----------------
+- never released
+
+V 0.45 (2003-08-05)
+-------------------
+- Starting this changelog
+- Updates since V 0.44:
+ * better CIS device support
+ * added CanoScan N1220U, N1240U
+ * made CanoScan N650U and N670U work
+ * fixed EPSON 1260 motor killer-bug
+ * improved TPA scanning
+ * fixed TPA warmup bug on EPSON 1260/Photo
+ * fixed Genius device detection problem
+ * Added Compaq S4-100 (identical to UMAX3400)
diff --git a/doc/plustek/Plustek-USB.txt b/doc/plustek/Plustek-USB.txt
new file mode 100644
index 0000000..e1ee793
--- /dev/null
+++ b/doc/plustek/Plustek-USB.txt
@@ -0,0 +1,457 @@
+Plustek-USB.txt (2005-08-08) Gerhard Jäger <gerhard@gjaeger.de>
+===============================================================
+
+NOTE:
+-----
+
+ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED. THERE'S
+NO NEED TO INSTALL THE KERNEL MODULE pt_drv. THIS ONE IS ONLY NEEDED
+FOR THE PLUSTEK PARALLELPORT SCANNER.
+
+
+List of all currently implemented devices
+-----------------------------------------
+
+Quite a lot of them are not tested or even identified. Please send me the ids
+of your device...
+
+
+PLUSTEK
+=======
+Vendor ID: 0x07B3
+
+Product ID Device-description and status
+0x0005 not identified yet
+0x0007 not identified yet
+0x000F not identified yet
+0x0010 U12 - working
+0x0011 U24 (LM9831) - working
+0x0012 not identified yet
+0x0013 UT12 (LM9831) - working
+0x0014 not identified yet
+0x0015 U24 (LM9832) - working
+0x0016 not identified yet
+0x0017 UT12 - working, UT16 - working, UT24 - working
+
+MUSTEK
+======
+BearPaw vendor ID: 0x0400 (They use the NationalSemiconductors ID!!!)
+
+Product ID Device-description and status
+0x1000 BearPaw 1200 (LM9831) - working
+0x1001 BearPaw 1200 (LM9832) - not tested
+0x1001 BearPaw 2400 (LM9832) - mostly working
+
+KYE (Genius)
+============
+Vendor ID: 0x0458
+
+Product ID Device-description and status
+0x2007 ColorPage-HR6 V2 - working
+0x2008 ColorPage-HR6 V2 - not tested
+0x2009 ColorPage-HR6A - not tested
+0x2013 ColorPage-HR7 - working
+0x2015 ColorPage-HR7LE - not tested
+0x2016 ColorPage-HR6X - not tested
+
+Hewlett Packard
+===============
+Vendor ID: 0x03F0
+
+Product ID Device-description and status
+0x0505 HP Scanjet 2100c - working
+0x0605 HP Scanjet 2200c - working
+
+EPSON
+=====
+Vendor ID: 0x04b8
+
+Product ID Device-description and status
+0x010F EPSON Perfection 1250/Photo - working
+0x011D EPSON Perfection 1260/Photo - working
+
+UMAX
+====
+Vendor ID: 0x1606
+
+Product ID Device-description and status
+0x0050 UMAX 3400 - working
+0x0060 UMAX 3400/3450 - working
+0x0160 UMAX 5400 - working
+
+COMPAQ
+======
+Vendor ID: 0x049F
+
+Product ID Device-description and status
+0x001A S4-100 - working, identical with UMAX 3400
+
+CANON
+=====
+Vendor ID: 0x04A9
+
+Product ID Device-description and status
+0x???? FB620U - not integrated
+0x2206 N650U - working
+0x2207 N1220U - working
+0x2208 D660U - working
+0x220D N670U/LiDE20 - working
+0x2220 LiDE25 - working
+0x220E N1240U/LiDE30 - working
+
+
+How to use and configure the Plustek USB backend
+------------------------------------------------
+
+Please note, that the following is only needed, if you need to upgrade
+a SANE version...
+
+
+Preparations
+------------
+
+What do we need ?
+
+a SANE backends archive (i.e. sane-backends-1.0.9.tar.gz)
+a driver archive (i.e. plustek-sane-0.45-1.tar.gz)
+
+The latest SANE archive can be obtained at:
+http://www.sane-project.org
+and the latest backend at:
+http://www.gjaeger.de/scanner/plustek.html
+
+Assumptions
+-----------
+
+Our starting point is your home-directory:
+
+:~>
+
+The packages (here sane-backends-1.0.9.tar.gz und plustek-sane-0.45-1.tar.gz)
+are in the /tmp directory.
+
+Let's go:
+---------
+
+Change to your home directory and create a sane directory
+cd ~
+mkdir sane
+
+unpack your sane tar-ball (here "sane-backends-1.0.9.tar.gz")
+to this "sane" directory
+
+cd sane
+tar xvzf /tmp/sane-backends-1.0.9.tar.gz
+
+Now unpack your plustek-sane tarball (here "plustek-sane-0.45-1.tar.gz")
+to the backends directory:
+
+cd sane-backends-1.0.9
+tar xvzf /tmp/plustek-sane-0.45-1.tar.gz
+
+Now do the ./configure step...
+Especially for SuSE with a preinstalled SANE-RPM:
+./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man --infodir=/usr/share/info
+
+Then do the make step and after that as root user perform the make install
+step.
+
+That's all!
+
+Before using, make sure that the USB scanner device driver is loaded:
+modprobe scanner
+or
+modprobe scanner vendor=0x7b3 product=0x17
+
+You might need to add the following line to /etc/modules.conf, if the scanner is not
+supported directly - vendor and product must match your device!
+options scanner vendor=0x7b3 product=0x17
+
+If you're not sure about the vendor and product id of your device, simply load
+the USB subsystem and plug in your scanner. Then do a
+cat /proc/bus/usb/devices
+and look for the scanner
+
+Now you have to configure the backend. Edit the file /etc/sane.d/plustek.conf
+and fill in the appropriate vendor and product id (see there for examples)
+
+This is it...
+
+
+Autoloading scanner.o
+---------------------
+
+To perform an automatic load of the scanner module, you might add the modprobe
+line to your boot.local file.
+i.e. on SuSE system > 7.x
+/etc/init.d/boot.local
+An alternative way is to use the hotplug utilities.
+
+
+Using hotplug utilities and libusb
+----------------------------------
+
+When using libusb with SANE, then you should also use the hotplug utilities to
+automatically setup your device nodes (at least the permissions) and prevent
+scanner.o from loading.
+
+Assuming, that these utilites are properly installed on your box, you have
+to tweak and add some files.
+
+In directory (where of course the config files reside):
+/etc/hotplug
+
+Append the line
+scanner
+to file
+blacklist
+
+This prevents the scanner module from the usb-subsystem to be loaded.
+
+Next thing is to add a new line in
+usb.usermap:
+
+usbscanner 0x0003 0x1606 0x0160 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00 000000
+
+The example line shows the vendor ID of UMAX 0x1606 and the product ID of the 5400
+0x0160 - these values must match the ones of your scanner.
+
+Last step is adding a script in
+/etc/hotplug/usb/
+It is called "usbscanner" (don't forget the executable rights)
+
+-------------------------------------------------
+# !/bin/bash
+
+if [ "${ACTION}" = add ] && [ -f "${DEVICE}" ]
+then
+ chgrp users "${DEVICE}"
+ chmod ug+rw "${DEVICE}"
+fi
+-------------------------------------------------
+
+This script will correct the access right to your scanner device when the device
+is plugged in.
+
+
+Debugging your USB scanner (written by Kev Green)
+-------------------------------------------------
+
+Firstly, are you running the latest version of SANE, and the Plustek USB driver?
+
+Double check at http://www.gjaeger.de/scanner/plustek.html
+(Plustek USB driver) and http://www.sane-project.org (SANE Suite) to
+make sure you are.
+
+Now, in order to test and utilise your scanner with the Scanner Access Now Easy
+(SANE) system, there are basically two programs that you will need to use from
+the sane-frontends (versions post 1.0.3) or sane (versions pre 1.0.3) packages.
+
+Firstly, the sane-find-scanner program will allow you to locate your scanner,
+and help you work out if sane knows where it is. This is not definite however,
+as (you'll see this too when using sane-find-scanner) it will find all the
+scanners on your USB and SCSI bus, whereas sane will only work when you have
+the relevant sane backend installed and configured correctly for the relevant
+scanner.
+
+So, if sane-find-scanner can find your scanner, but scanimage doesn't work,
+then you need to check, double check, and even triple-check your SANE
+configuration file for plustek scanners (plustek.conf, usually in
+/etc/sane.d
+or maybe in /usr/local/sane/ or somewhere, a "find" will be able to tell you
+where. It may take a while though!).
+
+If sane-find-scanner doesn't find your scanner, then you should check to see if
+the kernel recognises it at all, which you can do with the following command,
+as mentioned above:
+
+cat /proc/bus/usb/devices
+
+If your scanner doesn't appear in there, then the kernel has not recognised it.
+There may however be a crypic-looking entry in there which doesn't name itself
+as plustek, in which case it is recognised as being there by the kernel, but is
+not know to the kernel's USB device database, in which case this should be
+mentioned on the plustek list (<plustek@linuxhacker.org>), from where
+the "powers that be" will deal with it.
+
+If that file does not exist in the /proc filesystem, then you don't have the
+"Preliminary USB filesystem" option set in your kernel, and you will need to
+recompile your kernel to allow you to do this step in debugging. If it
+exists, but is empty, you will have to make sure (use the kernel configure
+help information and the details of your motherboard to ascertain this!)
+you have the right one of UHCI or OHCI USB modules installed or compiled into
+your kernel.
+
+Once you've established that the kernel has recognised your scanner, you can
+start pointing the finger at SANE, or simply the "scanner" module. You will
+need to have selected the "USB Scanner" option in your kernel compilation as
+a module, or compiled into the kernel. If you have done neither, then SANE will
+simply not be able to recognise your scanner. Rectify that, if you are missing
+it.
+
+If you have carried out all of the above steps, then sane-find-scanner should
+be able to recognise your scanner correctly.
+
+sane-find-scanner probes all of the devices on the SCSI and USB busses, and
+so you may find that it outputs "unable to get minor data" errors or similar
+to your terminal, or to your error logs, you can safely ignore these as long
+as it does that, and has recognised your scanner.
+
+Once you have found your scanner okay using sane-find-scanner, then you are
+ready to start messing around with the actual scanimage program to attempt
+to scan an image in.
+
+Obviously (although this may turn out to be premature) you should now have
+something in your scanner ready to scan for verification.
+
+At this stage, you should begin to be warey, because while the USB stuff for
+Plustek scanners is in development it may (like any kernel/module related software)
+crash your system with a kernel panic, or simply just segfault, so for your own sake,
+close down all the applications you are running and ONLY use text console, rather
+than X-Windows at this point, as you will certainly want to avoid any
+potential filesystem corruption.
+
+At this point it's probably also good to ensure that you have selected the
+"Magic SysRq Key" option in the kernel hacking section of the kernel config,
+and done:
+
+echo 1 > /proc/sys/kernel/sysrq
+
+And of course read the readme for that in /usr/src/linux/Documentation, as that
+should allow you to avoid filesystem corruption during any crashes that might
+happen.
+
+Now, before running scanimage, you should enable the maximum levels of
+debugging possible in both the SANE core and in the Plustek scanner
+backend.
+
+To do this you should do:
+
+export SANE_DEBUG_PLUSTEK=12
+export SANE_DEBUG_DLL=12
+
+Now, if you run scanimage, you should be able to see the maximum debugging
+messages.
+
+If those messages don't tell you what is wrong, then take note of your scanner
+type, the contents of /proc/bus/usb/devices, and the contents of your error
+log, as well as (where possible) the output of the scanimage command (if
+you can't capture it directly, an as-accurate-as-possible description is
+MUCH better than nothing!), and try and get all of the activity that
+your scanner did as well (light
+came on? didnt? motors came on? etc?) and email that to the plustek list
+(<plustek@linuxhacker.org>).
+
+For the particularly adventurous only...
+
+You might want to try running the scanimage program through strace or
+gdb to see if you can go some or all of the way to debugging the problem
+yourself, and post the relevant (ie. last!) parts of those utilities
+output to the plustek-help list. If you don't know what strace or gdb
+are, then you should probably not try that.
+
+It's probably safe to run your scanner in a normal operating environment
+under Linux once you have got it working once in a text console.
+
+
+How to add a new LM9831/2 based device description
+--------------------------------------------------
+
+If you have a LM9831 or LM9832 based scanner and your vendor and product id did
+not appear in the list above and you're willing to do some experiments, then
+simply add your device to the file plustek-devs.c at the end of the list.
+See the list at the end of the file how this works...
+
+
+Thanx guys for helping:
+-----------------------
+
+Henning Meier-Geinitz henning@meier-geinitz.de for Mustek Bearpaw testing, ideas and patches
+Stefan Nilsen stefan.nilsen@telia.com for HP2200c testing and patches
+Kev Green kyrian@ore.org for Documentation, UT12 testing and RPMS.
+Holger Bischof bischof@cs.tu-berlin.de for OpticPro U12 testing
+Abhijit Sovakar a.sovakar@gmx.de for OpticPro UT24 testing
+Peter Koellner peter@mezzo.net for OpticPro U24 testing
+Gene Heskett gene_heskett@iolinc.net for EPSON 1250 testing and patches
+Tasnim Ahmed tasnim_ahmed@yahoo.com for KYE Colorpage HR6 testing
+Reinhard Max max@suse.de for EPSON 1250 testing and patches
+Allan N. Hessenflow allan@kallisti.com for UMAX 3400 testing and patches
+Craig Smoothey craig@smoothey.org for HP2100c testing and patches
+Till Kamppeter till.kamppeter@gmx.net for EPSON1260 testing
+Christopher Montgomery monty@xiph.org for CanoScan calibration works
+Olaf Leidinger leidola@newcon.de for CanoScan LiDE25 testing
+
+and a lot of other guys not named here...
+
+
+Some equations which are used to calculate some stuff
+-----------------------------------------------------
+
+The stuff is used in plustek_usbscan.c to get the correct register settings
+out of the hardware descriptions:
+
+Crystalfrequency is 48MHz
+
+
+Pixel Period (seconds/pixel)
+----------------------------
+
+ MCLK_DIV x 8 x CM
+PixelPeriod = -----------------
+ 48MHz
+
+
+Integration Time (seconds)
+--------------------------
+
+Tint = PixelPeriod X LineLength
+
+ MCLK_DIV x 8 x CM X LineLength
+Tint = ------------------------------
+ 48MHz
+
+
+Ideal MCLK Divider
+------------------
+ 48MHz (DataPixelsEnd - DataPixelStart)
+MCLK_DIV = --------------------------- x --------------------------------
+ HostIORate x 8 x LineLength HDPI_ADJ x PP
+
+ 48MHz (DataPixelsEnd - DataPixelStart) CM
+ = ------------------------------- x -------------------------------- x ----
+ BytesPerSecond x 8 x LineLength HDPI_ADJ x PP CM
+
+ 48MHz 1
+ = --------------------------- x Tint x ---------
+ 8 x LineLength CM
+
+ 48MHz (Tint * 1000)
+ = ----------------------- x --------------------
+ 1000 x 8 x LineLength CM
+
+
+Ideal Scan Speed (inches/second)
+
+ 1 1 1
+ScanSpeed = ----------- x -------- x --------
+ PixelPeriod FSPI x 4 StepSize
+
+ 48MHz 1 1
+ScanSpeed = ----------------- x -------- x --------
+ MCLK_DIV x 8 x CM FSPI x 4 StepSize
+
+
+ 48MHz
+MCLK_DIV = ------------------------------------------
+ ScanSpeed x 8 x CM x FSPI x 4 x StepSize
+
+
+
+----------------
+Symbols:
+
+CM - Color Mode (unitless), 3 for channel pixel rate color, else 1
+
+
+-------------------------
+
diff --git a/doc/releases.txt b/doc/releases.txt
new file mode 100644
index 0000000..320c8a0
--- /dev/null
+++ b/doc/releases.txt
@@ -0,0 +1,81 @@
+2009-05-05
+
+This text summarizes some points to pay attention to when a new release
+of sane-backends is planned.
+
+Timetable (approximate periods):
+
+Day 0: Announcement of upcoming release on sane-devel including timetable
+Day 14: Feature freeze (only bugfixes + documentation updates)
+Day 28: Code freeze (only fixes for bugs that can destroy hardware, can cause
+ compilation problems or render a backend completely unusable, and
+ documentation updates are allowed)
+Day 35: Release
+
+Before the release:
+
+* set :new :yes on any new backend .desc files
+* Make sure that config.guess and config.sub are up-to-date (get them from
+ savannah.gnu.org/projects/config)
+* configure.in: increase version number
+* configure.in: remove 'git' from textual version number
+* configure.in: set is_release=yes
+* OPTIONAL: aclocal.m4: recreate by running aclocal
+* OPTIONAL: include/sane/config.h.in: recreate (autoheader in root of checkout)
+* DONT run autoreconf, it will overwrite our custom ltmain.sh
+* configure: recreate by running autoconf
+* NEWS: update and enter date of release
+* sane-backends.lsm: update
+* ChangeLog: set release marker
+* git commit -a
+* tag git with release tag; e.g.: 'git tag -a RELEASE_1_0_15'
+* probably DONT want to git push here, cause alioth will rebuild it's local
+ checkout needlessly
+
+Making the release:
+
+* make tar.gz, sane-backends-x.y.z.lsm, and .md5sum with "make sane-backends"
+* unpack tar.gz in temporary directory
+* make diff from last release by unpacking it also in temporary directory
+ and running e.g.
+ diff -uNr sane-backends-1.0.14 sane-backends-1.0.15 > sane-backends-1.0.14-1.0.15.diff
+* check that the diff applies cleanly to the old version
+* gzip the diff
+* install devel headers required to build optional backends (1284,gphoto,etc)
+* check that the new version .tar.gz can be compiled
+* upload these files together with the .diff.gz to the FTP/HTTP servers
+ (at the moment: alioth.debian.org, ftp files are in
+ /srv/alioth.debian.org/chroot/ftproot/pub/sane/ )
+
+Announcing the release:
+
+* checkout the sane/website.git module and:
+* copy sane-backends.html to sane-backends-"old-version".html
+* update sane-supported-devices.html with link to above "old" file
+* rebuild sane-backends.html and sane-mfgs.html (make -C doc html-pages)
+* use man2html from http://hydra.nac.uci.edu/indiv/ehood/man2html.html
+ to rebuild html man pages (make -C doc html-man) (no other version works)
+* add md5 sum to sane-md5sum.txt
+* check and update platforms page (sane-support.html)
+* add announcement to index.html
+* git commit -a && git push
+* check that website was updated automatically. if not, see:
+ /org/alioth.debian.org/chroot/home/groups/sane/bin/update-htdocs.sh
+* rebuild descriptions.db (make -C doc descriptions.db)
+* scp doc/descriptions.db to alioth:
+ /org/alioth.debian.org/chroot/home/groups/sane/search/release
+* write announcements sane-devel, maybe others (e.g. freshmeat),
+ include the md5 hash
+
+After the release:
+
+* move ChangeLog to ChangeLog-"version"
+* start a new ChangeLog
+* add ChangeLog-"version" to EXTRA_DIST in Makefile.in and Makefile.am
+* configure.in: bump textual version & add 'git' suffix
+* configure.in: bump V_REV
+* configure.in: set is_release=no
+* configure: regenerate with autoconf
+* remove the ':new' tag from any new backends .desc files
+* git add new files and commit
+* git push --tags
diff --git a/doc/sane-abaton.man b/doc/sane-abaton.man
new file mode 100644
index 0000000..84d8997
--- /dev/null
+++ b/doc/sane-abaton.man
@@ -0,0 +1,126 @@
+.TH sane\-abaton 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-abaton
+.SH NAME
+sane\-abaton \- SANE backend for Abaton flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-abaton
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Abaton flatbed scanners. At present, only the Scan
+300/GS (8bit, 256 levels of gray) is fully supported, due to the
+absence of programming information. The Scan 300/S (black and white)
+is recognized, but support for it is untested.
+.PP
+If you own a Abaton scanner other than the ones listed above that
+works with this backend, or if you own an Abaton scanner that does not
+work with this backend, please contact
+.IR sane\-devel@lists.alioth.debian.org
+with the model number, so that arrangements can be made to include
+support for it. Have a look at http://www.sane\-project.org/mailing\-lists.html
+concerning subscription to sane\-devel.
+.PP
+Abaton is out of business, and these scanners are not supported by
+Everex (the parent company of Abaton), nor is there any programming
+information to be found. This driver is therefore based on
+information obtained by running Abaton's scanning desk accessory under
+MacsBug and tracing the MacOS SCSI Manager calls it made during image
+acquisition.
+.PP
+However, the protocol is very similar to, though not compatible with,
+the one used by the Apple scanners, therefore, if this backend is ever
+extended to support the other Abaton models (they also made a color
+flatbed scanner), it may be possible to fill in some "missing pieces"
+from the (quite detailed) Apple scanner documentation.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the path-name for the special device that corresponds to a SCSI
+scanner. For SCSI scanners, the special device name must be a generic
+SCSI device or a symlink to such a device. Under Linux, such a device
+name takes a format such as
+.I /dev/sga
+or
+.IR /dev/sg0 ,
+for example. See sane\-scsi(5) for details.
+.SH CONFIGURATION
+The contents of the
+.I abaton.conf
+file is a list of device names that correspond to Abaton scanners.
+Empty lines and lines starting with a hash mark (#) are ignored. See
+sane\-scsi(5) on details of what constitutes a valid device name.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/abaton.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-abaton.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-abaton.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_ABATON
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller
+levels reduce verbosity.
+
+.SH BUGS
+There are a few known ones, and definitely some unknown ones.
+.TP
+.B Scan area miscalculations
+For the sake of programmer efficiency, this backend handles all
+measurements in millimetres, and floors (rather than rounds) values to
+avoid possible damage to the scanner mechanism. Therefore, it may not
+be possible to scan to the extreme right or bottom edges of the page.
+.TP
+.B Cancelling the scan
+This might not work correctly, or it might abort the frontend. The
+former is more likely than the latter.
+.PP
+If you have found something that you think is a bug, please attempt to
+recreate it with the SANE_DEBUG_ABATON environment variable set to
+255, and send a report detailing the conditions surrounding the bug to
+.IR sane\-devel@lists.alioth.debian.org .
+
+.SH TODO
+.TP
+.B Implement non-blocking support
+.TP
+.B Finish reverse-engineering the MacOS driver
+This will allow me to add support for other models with reasonable
+confidence that it will work, as well as to fully exploit the
+information returned by the INQUIRY command.
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5), scanimage(1)
+
+.SH AUTHOR
+The sane\-abaton backend was partially written by David Huggins-Daines,
+based on the sane\-apple backend by Milon Firikis.
diff --git a/doc/sane-agfafocus.man b/doc/sane-agfafocus.man
new file mode 100644
index 0000000..f4c1852
--- /dev/null
+++ b/doc/sane-agfafocus.man
@@ -0,0 +1,175 @@
+.TH sane\-agfafocus 5 "10 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-agfafocus
+.SH NAME
+sane\-agfafocus \- SANE backend for AGFA Focus flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-agfafocus
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to AGFA Focus flatbed scanners. At present, the following
+scanners are supported from this backend:
+.PP
+.RS
+AGFA Focus GS Scanner (6 bit gray scale) (untested)
+.br
+AGFA Focus Lineart Scanner (lineart) (untested)
+.br
+AGFA Focus II (8 bit gray scale) (untested)
+.br
+AGFA Focus Color (24 bit color 3-pass)
+.br
+AGFA Focus Color Plus (24 bit color 3-pass)
+.br
+.PP
+Siemens S9036 (8 bit gray scale) (untested)
+.br
+.RE
+.PP
+The driver supports line art, 6bpp and 8bpp gray, 18bpp and 24bpp
+color scans.
+.PP
+If you own a scanner other than the ones listed above that works with
+this backend, please let us know by sending the scanner's model name,
+SCSI id, and firmware revision to
+.IR sane\-devel@lists.alioth.debian.org .
+Have a look at http://www.sane\-project.org/mailing\-lists.html
+concerning subscription to sane\-devel.
+.PP
+All of these scanners are pre-SCSI-2, and do not even report properly
+to SCSI Inquiry. This is typically evident in SCSI bus scans, where
+the scanner will come up with only garbage as vendor and models strings.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is either the path-name for the special device that corresponds to a
+SCSI scanner. For SCSI scanners, 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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+.SH CONFIGURATION
+The contents of the
+.I agfafocus.conf
+file is a list of device names that correspond to AGFA Focus
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+/dev/scanner
+.br
+# this is a comment
+.br
+/dev/sge
+.RE
+
+.PP
+.SH FILES
+.TP
+.I /etc/sane.d/agfafocus.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I /usr/lib/libsane\-agfafocus.a
+The static library implementing this backend.
+.TP
+.I /usr/lib/libsane\-agfafocus.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"/etc/sane.d" being searched (in this order).
+.TP
+.B SANE_DEBUG_AGFAFOCUS
+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.
+SANE_DEBUG_AGFAFOCUS values:
+
+.sp
+.ft CR
+.nf
+Number Remark
+\
+ 0 print important errors (printed each time)
+ 1 print errors
+ 2 print sense
+ 3 print warnings
+ 4 print scanner-inquiry
+ 5 print information
+ 6 print less important information
+ 7 print called procedures
+ 8 print reader_process messages
+ 10 print called sane\-init-routines
+ 11 print called sane\-procedures
+ 12 print sane infos
+ 13 print sane option-control messages
+.fi
+.ft R
+
+.SH MISSING FUNCTIONALITY
+
+Uploading of dither matrices and tonecurves has been implemented, but
+so far has not proven to be useful for anything. For this reason
+these options have been disabled.
+
+.SH BUGS
+The scanners that do not support disconnect have problems with SCSI
+timeouts if the SCSI bus gets loaded, eg. if you do a kernel build at
+the same time as scanning. To see if your scanner supports
+disconnect, run "SANE_DEBUG_AGFAFOCUS=128 scanimage \-L" in sh and look
+for the "disconnect:" line)
+
+.SH DEBUG
+If you have problems with SANE not detecting your scanner, make sure the
+Artec backend is disabled. Somehow, this backend causes at least my scanner
+not to respond correctly to SCSI inquiry commands.
+.PP
+If you encounter a bug please set the environment variable
+SANE_DEBUG_AGFAFOCUS to 128 and try to regenerate the problem. Then
+send me a report with the log attached.
+.PP
+If you encounter a SCSI bus error or trimmed and/or displaced images please
+also set the environment variable SANE_DEBUG_SANEI_SCSI to 128 before sending
+me the report.
+
+.SH TODO
+.TP
+.B More scanners?
+
+The AGFA ACS and ARCUS scanners are similar to the FOCUS scanners.
+The driver could probably be extended to support these scanners
+without too many changes. I do not have access to such scanners, and
+cannot add support for it. However, if you are in possession of such
+a scanner, I could be helpful in adding support for these scanners.
+
+The AGFA HORIZON scanners are SCSI-2 scanners, and it would probably
+be easier to support these scanners in a SCSI-2 compliant backend.
+.SH SEE ALSO
+sane(7), sane\-scsi(5)
+
+.SH AUTHOR
+
+Ingo Schneider and Karl Anders \[/O]ygard.
+
diff --git a/doc/sane-apple.man b/doc/sane-apple.man
new file mode 100644
index 0000000..2d388bf
--- /dev/null
+++ b/doc/sane-apple.man
@@ -0,0 +1,252 @@
+.TH sane\-apple 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-apple
+.SH NAME
+sane\-apple \- SANE backend for Apple flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-apple
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Apple flatbed scanners. At present, the following
+scanners are supported from this backend:
+.PP
+.br
+.ft CR
+.nf
+--------------- ----- ------------------ ------
+AppleScanner 4bit 16 Shades of Gray
+OneScanner 8bit 256 Shades of Gray
+ColorOneScanner 24bit RGB color 3-pass
+.fi
+.ft R
+
+.PP
+If you own a Apple scanner other than the ones listed above that
+works with this backend, please let us know by sending the scanner's
+model name, SCSI id, and firmware revision to
+.IR sane\-devel@lists.alioth.debian.org .
+See http://www.sane\-project.org/mailing\-lists.html for details on how to subscribe to
+sane\-devel.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is either the path-name for the special device that corresponds to a
+SCSI scanner. For SCSI
+scanners, 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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+.SH CONFIGURATION
+The
+.I apple.conf
+file is a list of options and device names that correspond to Apple
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. See sane\-scsi(5) on details of what constitutes a valid
+device name.
+.PP
+Options come in two flavors: global and positional ones. Global
+options apply to all devices managed by the backend, whereas positional
+options apply just to the most recently mentioned device. Note that
+this means that the order in which the options appear matters!
+
+.SH SCSI ADAPTER TIPS
+SCSI scanners are typically delivered with an ISA SCSI adapter.
+Unfortunately, that adapter is not worth much since it is not
+interrupt driven. It is sometimes possible to get the supplied card
+to work, but without an interrupt line, scanning will put so much load on
+the system that it becomes almost unusable for other tasks.
+.SH FILES
+.TP
+.I @CONFIGDIR@/apple.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-apple.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-apple.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+This environment variable is list of directories where SANE looks
+for the configuration file. Under UNIX directory names are
+separated by a colon (`:'), under OS/2 by a semi-colon (`;').
+If SANE_CONFIG_DIR is not set, SANE defaults to
+searching the current working directory (".") and then /etc/sane.d.
+If the value of $SANE_CONFIG_DIR ends with the separator
+character, the default directories are searched after the directory list.
+For example, setting
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in that order).
+.TP
+.B SANE_DEBUG_APPLE
+Controls the debug level. A value of 255 prints
+all debug output. Smaller values reduce verbosity. Requires a
+library compiled with debug support.
+
+.SH CURRENT STATUS
+The apple backend is now in version 0.3 (Tue Jul 21 1998). Since
+I only have the AppleScanner and not the other models (OneScanner,
+ColorOneScanner) I can only develop/test for the AppleScanner effectively.
+However with this release I almost completed the gui part of all scanners.
+Most of the functionality is there. At least OneScanner should scan
+at the AppleScanner's compatible modes (LineArt, HalfTone, Gray16). My
+personal belief is that with a slight touch of debugging the OneScanner
+could be actually usable. The ColorOneScanner needs more work. AppleScanner
+is of course almost fully supported.
+
+.SH MISSING FUNCTIONALITY
+Currently all three models lack upload/download support.
+.TP
+.B AppleScanner
+Cannot up/download a halftone pattern.
+.TP
+.B OneScanner
+Cannot up/download halftone patterns or calibration vectors.
+.TP
+.B ColorOneScanner
+Cannot up/download halftone patterns, calibration vectors,
+custom Color Correction Tables (CCT) and of course custom gamma tables.
+.TP
+.B Park/UnPark (OneScanner, ColorOneScanner)
+.PP
+The above functionalities are missing because I don't
+have the hardware to experiment on. Another reason is my lack
+of understanding as to how or if the SANE API provide means
+to describe any array type besides gamma.
+
+
+.SH UNSUPPORTED FEATURES
+The following "features" will never be supported, at least while I maintain
+the sane\-apple backend.
+.TP
+.B NoHome (AppleScanner)
+The scanner lamp stays on and the carriage assembly remains where it stops
+at the end of the scan. After two minutes, if the scanner does not receive
+another SCAN command, the lamp goes off and the carriage returns to the home
+position.
+.TP
+.B Compression (AppleScanner)
+The Scanner can compress data with CCITT Group III one dimensional algorithm
+(fax) and the Skip White Line algorithm.
+.TP
+.B Multiple Windows (AppleScanner)
+AppleScanner may support multiple windows. It would be a cool feature
+and a challenge for me to code if it could intermix different options
+for different windows (scan areas). This way it could scan a document
+in LineArt mode but the figures in it in Gray and at a different resolution.
+Unfortunately this is impossible.
+.TP
+.B Scan Direction (OneScanner)
+It controls the scan direction. (?)
+.TP
+.B Status/Reset Button (OneScanner)
+This option controls the status of the button on the OneScanner model. You can
+also reset the button status by software.
+
+.SH BUGS
+SANE backend bugs are divided in two classes. We have
+.B GUI
+bugs and
+.B scanner specific
+bugs.
+.PP
+We know we have a GUI bug when a parameter is not showing up when it
+should (active) or vice versa. Finding out which parameters are active
+across various Apple modes and models from the documentation
+.B ftp://ftpdev.info.apple.com/devworld/Technical_Documentation/Peripherals_Documentation/
+is an interesting exercise. I may have missed some dependencies. For example
+of the threshold parameter the Apple Scanners Programming Guide says
+nothing. I had to assume it is valid only in LineArt mode.
+.PP
+Scanner specific bugs are mostly due to mandatory round-offs in order to
+scan. In the documentation in one place states that the width of the
+scan area should be a byte multiple. In another place it says that the
+width of the scan area should be an even byte multiple. Go figure...
+.PP
+Other sources of bugs are due to scsi communication, scsi connects and
+disconnects. However the classical bugs are still there. So you may
+encounter buffer overruns, null pointers, memory corruption and
+.B SANE
+API violations.
+.TP
+.B SIGSEGV on SliceBars
+When you try to modify the scan area from the slice bar you have a nice
+little cute core dump. I don't know why. If you select the scan area from
+the preview window or by hand typing the numbers everything is fine. The
+SIGSEGV happens deep in gtk library (gdk). I really cannot debug it.
+.TP
+.B Options too much
+It is possible, especially for the ColorOneScanner, for the backend's
+options panel to extend beyond your screen. It happens with mine
+and I am running my X Server at 1024x768. What can I say? Try smaller
+fonts in the X server, or virtual screens.
+.TP
+.B Weird SCSI behaviour
+I am quoting David Myers Here...
+
+>> OS: FreeBSD 2.2.6
+.br
+>> CC: egcs-1.02
+.br
+Just wanted to follow up on this... I recently changed my SCSI card from
+the Adaptec 2940UW to a dual-channel Symbios 786 chipset. When I started up
+SANE with your driver, I managed to scan line art drawings okay, but Gray16
+scans led to a stream of SCSI error messages on the console, ultimately
+hanging with a message saying the scanner wasn't releasing the SCSI bus.
+This may be that the Symbios is simply less tolerant of ancient
+hardware, or may be bugs in your driver or in SANE itself...
+
+.SH DEBUG
+If you encounter a GUI bug please set the environmental variable
+SANE_DEBUG_APPLE to 255 and rerun the exact sequence of keystrokes
+and menu selections to reproduce it. Then send me a report with the
+log attached.
+.PP
+If you have an Apple Macintosh with the AppleScanners driver installed,
+reporting to me which options are grayed out (inactive) in what modes
+would be very helpful.
+.PP
+If you want to offer some help but you don't have a scanner, or you
+don't have the model you would like to help with, or you are
+a SANE developer and you just want to take a look at how the apple backend
+looks like, goto to apple.h and #define the NEUTRALIZE_BACKEND
+macro. You can select the scanner model through the APPLE_MODEL_SELECT
+macro. Available options are APPLESCANNER, ONESCANNER, COLORONESCANNER.
+.PP
+If you encounter a SCSI bus error or trimmed and/or displaced images please
+set the environment variable SANE_DEBUG_SANEI_SCSI to 255 before sending me
+the report.
+
+.SH TODO
+.TP
+.B Non Blocking Support
+Make sane\-apple a non blocking backend. Properly support
+.B sane_set_io_mode
+and
+.B sane_get_select_fd
+.TP
+.B Scan
+Make scanning possible for all models in all supported modes.
+.TP
+.B Missing Functionality
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+
+.SH AUTHOR
+The sane\-apple backend was written not entirely from scratch by
+Milon Firikis. It is mostly based on the mustek backend from
+David Mosberger and Andreas Czechanowski
diff --git a/doc/sane-artec.man b/doc/sane-artec.man
new file mode 100644
index 0000000..5f700a8
--- /dev/null
+++ b/doc/sane-artec.man
@@ -0,0 +1,178 @@
+.TH sane\-artec 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-artec
+
+.SH NAME
+sane\-artec \- SANE backend for Artec flatbed scanners
+
+.SH DESCRIPTION
+The
+.B sane\-artec
+library implements a SANE (Scanner Access Now Easy) backend
+that provides access to Artec/Ultima SCSI flatbed scanners. At present,
+the following scanners are known to work at least partially with this backend:
+.PP
+.RS
+* Artec A6000C
+.br
+* Artec A6000C PLUS
+.br
+* Artec ViewStation AT3
+.br
+* BlackWidow BW4800SP (rebadged Artec AT3)
+.br
+* Artec ViewStation AT6
+.br
+* Artec ViewStation AT12
+.br
+* Artec AM12S
+.br
+* Plustek 19200S (rebadged Artec AM12S)
+.RE
+.PP
+Although this manual page is generally updated with each release,
+up-to-date information on new releases and extraneous helpful hints
+are available from the backend homepage:
+.br
+.br
+.RS
+.B http://www4.infi.net/~cpinkham/sane/
+.RE
+
+.SH DOCUMENTATION
+
+
+.SH CONFIGURATION
+
+The contents of the
+.I artec.conf
+file are a list of device names that
+correspond to Artec scanners. Empty lines and lines starting with a
+hash mark (#) are ignored. See
+.I sane\-scsi(5)
+on details of what constitutes a valid device name.
+
+Sample file:
+.br
+.br
+.nf
+# artec.conf
+#
+# this is a comment.
+#
+# this line says search for any SCSI devices which are scanners and have
+# a vendor string of 'ULTIMA'
+scsi ULTIMA
+#
+# the next line forces the backend to assume the next scanner found has
+# the specified vendor string (useful for testing rebadged models).
+vendor ULTIMA
+#
+# the next line forces the backend to assume the next scanner found has
+# the specified model string (useful for testing rebadged models).
+model AT3
+#
+# now a line that actually specifies a device. The backend is going to
+# assume this is an Artec/Ultima AT3 because we forced the vendor and
+# model above.
+/dev/scanner
+#
+# once we hit a scanner device line, the forced vendor and model
+# string are
+# 'forgotten', so the vendor and model for this next device will be
+# determined from the result of a SCSI inquiry.
+/dev/sge
+#
+.fi
+
+.SH SCSI ADAPTER TIPS
+
+Some Artec scanners come with an included SCSI adapter. If your scanner came
+with a DTC ISA scsi cards, you can probably use it with recent (>= 2.2.0)
+kernels using the generic NCR5380 support. You must pass the following
+boot argument to the kernel: "dtc3181e=0x2c0,0"
+.br
+I do not have any information on the PCI SCSI adapter included with some
+newer Artec scanners.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/artec.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-artec.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-artec.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 direc-
+tory (".") and then in @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_ARTEC
+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:
+SANE_DEBUG_ARTEC values
+
+.ft CR
+.nf
+Number Remark
+\
+ 0 print important errors
+ 1 print errors
+ 2 print sense
+ 3 print warnings
+ 4 print scanner-inquiry
+ 5 print information
+ 6 print less important information
+ 7 print major called procedures
+ 8 print all called procedures
+ 9 print procedure info/data messages
+ 10 print called sane\-init-routines
+ 11 print called sane\-procedures
+ 12 print sane infos
+ 13 print sane option-control messages
+\
+ 50 print verbose data/debug messages
+\
+ == 100 print software RGB calibration data
+ == 101 print raw data from scanner to artec.data.raw file
+\
+ == 128 print out all messages
+.fi
+.ft R
+.PP
+Example:
+export SANE_DEBUG_ARTEC=13
+
+.SH BUGS
+
+Known bugs in this release: A6000C+ users with firmware v1.92 or
+earlier have problems with the backend, the cause has not been determined.
+Sometimes the backend is not particularly robust, you can possibly lock up
+the SCSI bus (and/or machine) by not having patience enough when scanning.
+3-channel gamma correction is not implemented and single-channel gamma
+correction is not totally working on models other than the AT3.
+
+.SH "SEE ALSO"
+
+sane(7), sane\-scsi(5)
+
+.SH AUTHOR
+
+Chris Pinkham (cpinkham@corp.infi.net)
diff --git a/doc/sane-artec_eplus48u.man b/doc/sane-artec_eplus48u.man
new file mode 100644
index 0000000..19f461c
--- /dev/null
+++ b/doc/sane-artec_eplus48u.man
@@ -0,0 +1,144 @@
+.TH sane\-artec_eplus48u 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE"
+.SH NAME
+sane\-artec_eplus48u \- SANE backend for the scanner Artec E+ 48U and re-badged models
+.SH DESCRIPTION
+The
+.B sane\-artec_eplus48u
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to several USB flatbed scanners using the GT6816 chipset like the Artec E+ 48U.
+These scanners have a contact image sensor (CIS) and an USB interface.
+.PP
+A complete list of supported devices can be found on
+.IR http://www.sane\-project.org/sane\-supported\-devices.html .
+.PP
+This is ALPHA software. Especially if you test new or untested scanners, keep
+your hand at the scanner's plug and unplug it, if the head bumps at the end of
+the scan area.
+.PP
+If you own a scanner other than the ones mentioned on the list that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and product ids (e.g. from /proc/bus/usb/devices,
+sane\-find\-scanner or syslog) to me. Even if the scanner's name is only
+slightly different from the models mentioned above, please let me know.
+.PP
+.SH KERNEL ISSUES
+If libusb-0.1.6 or later is installed, this section can be skipped. The
+scanner should be found by sane\-find\-scanner without further actions. For
+setting permissions and general USB information look at sane\-usb(5).
+.PP
+When you are using the scanner module, a Linux kernel 2.4.12 or newer is
+required.
+
+.SH FIRMWARE FILE
+You need a firmware file for your scanner. That's a small file containing
+software that will be uploaded to the scanner's memory. For the scanners
+mentioned above, it's usually named Artec48.usb or 1200.usb. You can find it on
+the installation CD that was provided by the manufacturer, normally in the
+directory Win98, WinMe or similar. If the Windows-driver is installed on your
+computer, then you can also find the firmware file under
+c:\\windows\\system32\\drivers.
+.SH CONFIGURATION
+The contents of the
+.I artec_eplus48u.conf
+file is a list of usb lines containing vendor and product ids that correspond
+to USB scanners. The file can also contain option lines. Empty lines and
+lines starting with a hash mark (#) are ignored. The scanners are
+autodetected by
+.I usb vendor_id product_id
+statements which are already included into
+.I artec_eplus48u.conf .
+"vendor_id" and "product_id" are hexadecimal numbers that identify the
+.B scanner.
+.PP
+Every usb section can have additional options
+.TP
+.B artecFirmwareFile @DATADIR@/sane/artec_eplus48u/Artec48.usb
+The path to the firmware file. This option is required.
+.TP
+.B redGamma 1.0
+.TP
+.B greenGamma 1.0
+.TP
+.B blueGamma 1.0
+.TP
+.B masterGamma 1.9
+These are the default gamma values. If you set the "Defaults" option with a frontend,
+then the gamma options are reset to the values specified here.
+.TP
+.B redOffset 0x28
+.TP
+.B greenOffset 0x2f
+.TP
+.B blueOffset 0x2f
+.TP
+.B redExposure 0xa7
+.TP
+.B greenExposure 0x116
+.TP
+.B blueExposure 0xdc
+These are the default values for offset and exposure time. You can e.g. change them to speed up calibration,
+if you don't want to save the calibration data to disk.
+.TP
+.B vendorString "Artec"
+.TP
+.B modelString "E+ 48U"
+By default, the scanner is reported as "Artec E+ 48U". If you don't like this, e.g.
+because you have an Tevion MD 9693, then change the options accordingly.
+.SH FILES
+.TP
+.I /usr/local/etc/sane.d/artec_eplus48u.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I /usr/local/lib/sane/libsane\-artec_eplus48u.a
+The static library implementing this backend.
+.TP
+.I /usr/local/lib/sane/libsane\-artec_eplus48u.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 /usr/local/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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"/usr/local/etc/sane.d" being searched (in this order).
+.TP
+.B SANE_DEBUG_ARTEC_EPLUS48U
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_ARTEC_EPLUS48U=3
+
+.SH "SEE ALSO"
+sane(7), sane\-usb(5)
+
+.SH AUTHOR
+Michael Herder
+.br
+This backend is based on the gt68xx test-program written by Sergey Vlasov, Andreas Nowack, and
+David Stevenson. Thanks to everyone who tested the backend or reported bugs.
+.br
+This man page is based on man sane\-gt68xx, written by Henning Meier-Geinitz.
+.SH BUGS
+This backend has been tested on Linux only. If you are using it on a different platform, please
+contact us.
+.PP
+Interpolation with 1200 dpi is weak.
+.PP
+Support for buttons is missing due to missing support in SANE.
+.PP
+Please contact us if you find a bug:
+.IR http://www.sane\-project.org/bugs.html .
+
diff --git a/doc/sane-as6e.man b/doc/sane-as6e.man
new file mode 100644
index 0000000..efaf0d5
--- /dev/null
+++ b/doc/sane-as6e.man
@@ -0,0 +1,45 @@
+.TH sane\-as6e 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+
+.SH NAME
+sane\-as6e \- SANE backend for using the Artec AS6E parallel port interface scanner.
+
+.SH DESCRIPTION
+The
+.B sane\-as6e
+library implements a SANE (Scanner Access Now Easy) backend
+that provides access to Artec AS6E flatbed scanner.
+.B It requires the as6edriver program in order to operate.
+The as6edriver program is
+.B not
+included with the SANE package.
+It can be found at
+.BR http://as6edriver.sourceforge.net.
+See the as6edriver documentation for technical information.
+.PP
+The
+.I as6edriver
+program must be in the path for executables ($PATH). Especially if you run
+.I saned
+(the SANE network scanning daemon), take care to setup the path for
+.I inetd
+or
+.I xinetd
+correctly or place the program in a directory that is in the path.
+
+.PP
+
+.SH FILES
+.B as6edriver
+\- driver program that controls the scanner.
+
+.SH SEE ALSO
+.BR sane (7),
+.BR as6edriver (5),
+.BR saned (8),
+.B http://as6edriver.sourceforge.net
+
+.SH AUTHOR
+Eugene S. Weiss
+
+.SH EMAIL-CONTACT
+yossarian@users.sourceforge.net
diff --git a/doc/sane-avision.man b/doc/sane-avision.man
new file mode 100644
index 0000000..805d342
--- /dev/null
+++ b/doc/sane-avision.man
@@ -0,0 +1,165 @@
+.TH sane\-avision 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-avision
+
+.SH NAME
+sane\-avision \- SANE backend for original Avision and Avision OEM scanners
+(HP, Minolta, Mitsubishi, UMAX and possibly more) flatbed and film scanners.
+
+.SH ABOUT THIS FILE
+
+This file is a short description for the avision-backend shipped with SANE.
+
+.SH DESCRIPTION
+The
+.B sane\-avision
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to various Avision scanners and the Avision OEM
+scanners labelled by HP, Minolta, Mitsubishi or Fujitsu.
+
+It is fully big-endian aware and in every-day use on PowerPC and SPARC
+systems.
+
+.B I suggest you hold one hand on the power-button of the scanner while
+you try the first scans \- especially with film-scanners!
+
+.SH CONFIGURATION
+
+The configuration file for this backend resides in
+.IR @CONFIGDIR@/avision.conf .
+
+Its contents is a list of device names that correspond to Avision and Avision
+compatible scanners and backend-options. Empty lines and lines starting with
+a hash mark (#) are ignored. A sample configuration file is shown below:
+
+.nf
+ # this is a comment
+\
+ option force\-a4
+ option force\-a3
+ option disable\-gamma\-table
+ option disable\-calibration
+\
+ #scsi Vendor Model Type Bus Channel ID LUN
+ scsi AVISION
+ scsi HP
+ scsi /dev/scanner
+ usb 0x03f0 0x0701
+.fi
+
+.TP
+force\-a4:
+Forces the backend to overwrite the scanable area
+returned by the scanner to ISO A4. Scanner that are
+known to return bogus data are marked in the backend
+so if you need this option please report this to the
+backend maintainer. USE WITH CARE!
+.TP
+force\-a3:
+Forces the backend to overwrite the scanable area
+returned by the scanner to ISO A3. Scanner that are
+known to return bogus data are marked in the backend
+so if you need this option please report this to the
+backend maintainer. USE WITH CARE!
+.TP
+disable\-gamma\-table:
+Disables the usage of the scanner's gamma-table. You
+might try this if your scans hang or only produces
+random garbage.
+.TP
+disable\-calibration:
+Disables the scanner's color calibration. You
+might try this if your scans hang or only produces
+random garbage.
+.TP
+Note:
+Any option above modifies the default code-flow
+for your scanner. The options should only be used
+when you encounter problems with the default be-
+haviour of the backend. Please report the need of
+options to the backend-author so the backend can
+be fixed as soon as possible.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I scsi scsi-spec
+
+.I usb usb-spec
+.RE
+.PP
+Where
+.I scsi-spec
+is the path-name to a special device or a device ID for the device that
+corresponds to a SCSI scanner. The special device name must be a generic
+SCSI device or a symlink to such a device, for example on Linux "/dev/sga"
+or "/dev/sg0". The device ID is the ID returned by the scanner, for example
+"HP" or "AVISION". See sane\-scsi(5) for details.
+.TP
+Note:
+Since the backend now includes native USB access,
+it is no longer needed \- even considered obsolete \-
+to access USB scanner via the SCSI emulation (named
+hpusbscsi on Linux) for Avision USB devices such as
+the HP 53xx, HP 74xx or Minolta film-scanners.
+.PP
+.I usb-spec
+is the USB device name, the vendor/product ID pair or the name used by
+libusb corresponding to the USB scanner. For example "0x03f0 0x0701" or
+"libusb:002:003". See sane\-usb(5) for details.
+
+The program
+.IR sane\-find\-scanner
+helps to find out the correct scsi or usb device name.
+
+A list with supported devices is built into the avision backend so
+normally specifying an ID should not be necessary.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/avision.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-avision.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-avision.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_AVISION
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend.
+Higher debug levels increase the verbosity of the output. The debug
+level 7 is the author's preferred value to debug backend problems.
+
+Example:
+export SANE_DEBUG_AVISION=7
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5), sane\-usb(5)
+.br
+http://skull.piratehaven.org/~mike/sane/avision.html
+
+.SH MAINTAINER
+Mike Kelly
+.SH AUTHOR
+Ren\['e] Rebe and Meino Christian Cramer
diff --git a/doc/sane-bh.man b/doc/sane-bh.man
new file mode 100644
index 0000000..8306976
--- /dev/null
+++ b/doc/sane-bh.man
@@ -0,0 +1,547 @@
+.TH sane\-bh 5 "10 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-bh
+.SH NAME
+sane\-bh \- SANE backend for Bell+Howell Copiscan II series document
+scanners
+.SH DESCRIPTION
+The
+.B sane\-bh
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Bell+Howell Copiscan II series document
+scanners. The Copiscan II 6338 has been the primary scanner model
+used during development and testing, but since the programming interface
+for the entire series is consistent the backend should work for the
+following scanner models.
+.PP
+.RS
+COPISCAN II 6338 Duplex Scanner with ACE
+.br
+COPISCAN II 2135 Simplex Scanner
+.br
+COPISCAN II 2137(A) Simplex Scanner (with ACE)
+.br
+COPISCAN II 2138A Simplex Scanner with ACE
+.br
+COPISCAN II 3238 Simplex Scanner
+.br
+COPISCAN II 3338(A) Simplex Scanner (with ACE)
+.br
+.RE
+.PP
+If you have a Bell+Howell scanner and are able to test it with this
+backend, please contact
+.IR sane\-devel@lists.alioth.debian.org
+with the model number and testing results. Have a look at
+http://www.sane\-project.org/mailing\-lists.html concerning subscription to
+sane\-devel. Additionally, the author is curious as to the likelihood of using
+this backend with the newer 4000 and 8000 series scanners. If you have such a
+beast, please let me know.
+.PP
+The Bell+Howell Copiscan II series document scanners are high
+volume, high throughput scanners designed for document scanning
+applications. As such, they are lineart/grayscale scanners supporting
+a fixed number of fairly low resolutions (e.g. 200/240/300dpi).
+However, they do have a number of interesting and useful features
+suited to needs of document imaging applications.
+This backend attempts to support as many of these features as possible.
+.PP
+The main technical reference used in writing this backend is the
+.B Bell and Howell Copiscan II Remote SCSI Controller (RSC) OEM
+.B Technical Manual Version 1.5.
+The Linux SCSI programming HOWTO, the SANE API documentation, and
+SANE source code were also extremely valuable resources.
+
+.PP
+The latest backend release, additional information and helpful hints
+are available from the backend homepage:
+.br
+.RS
+.B http://www.martoneconsulting.com/sane\-bh.html
+.RE
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the path-name for the special device that corresponds to a SCSI
+scanner. For SCSI scanners, the special device name must be a generic
+SCSI device or a symlink to such a device. Under Linux, such a device
+name takes a format such as
+.I /dev/sga
+or
+.IR /dev/sg0 ,
+for example. See sane\-scsi(5) for details.
+.SH CONFIGURATION
+The contents of the
+.I bh.conf
+file is a list of device names that correspond to Bell+Howell
+scanners. See sane\-scsi(5) on details of what constitutes a valid device name.
+Additionally, options can be specified; these lines begin with the word "option".
+Each option is described in detail below. Empty lines and lines starting
+with a hash mark (#) are ignored.
+
+.SH OPTIONS
+The following options can be specified in the
+.I bh.conf
+file.
+.TP
+.B disable\-optional\-frames
+This option prevents the backend from sending any optional frames. This
+option may be useful when dealing with frontends which do not support these
+optional frames. When this option is in effect, the data is sent in a
+SANE_FRAME_GRAY frame. The optional frames sent by this backend are:
+SANE_FRAME_G31D, SANE_FRAME_G32D, SANE_FRAME_G42D and SANE_FRAME_TEXT.
+These frames are generated based on the compression and barcode options.
+These frames are never sent in preview mode.
+.TP
+.B fake\-inquiry
+This option is used for debugging purposes and its use is not encouraged.
+Essentially, it allows the backend to initialize in the absence of
+a scanner. This is useful for development and not much else.
+This option must be specified earlier in the configuration file than
+the devices which are to be "faked".
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/bh.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-bh.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-bh.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_BH
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller
+levels reduce verbosity.
+
+.SH "SUPPORTED FEATURES"
+.TP
+.B ADF support
+With document scanners, automatic document feeder (ADF) support is a key
+feature. The backend supports the ADF by default and returns
+.B SANE_STATUS_NO_DOCS
+when the out-of-paper condition is detected. The SANE frontend
+.B scanadf
+is a command line frontend that supports multi-page scans. It has been
+used successfully with this backend. The SANE frontend
+.B xsane
+is an improved GUI frontend by Oliver Rauch. Support for multi-page
+scans is included in xsane version 0.35 and above.
+
+.TP
+.B Duplex scanning
+Some models, such as the COPISCAN II 6338, support duplex scanning. That
+is, they scan both sides of the document during a single pass through the
+scanner (the scanner has two cameras). This backend supports duplex
+scanning (with the
+.B \-\-duplex
+option). The front and back page images are delivered consecutively
+as if they were separately scanned pages.
+
+.TP
+.B Hardware compression
+The scanner is capable of compressing the data into several industry
+standard formats (CCITT G3, CCITT G3-2D, CCITT G4). This results in
+increased performance as less data is passed from the scanner to the
+host over the SCSI bus. The backend supports these compression formats
+via the
+.B \-\-g31d, \-\-g32d, \-\-g42d
+options, respectively. Many SANE frontends are not equipped to deal with
+these formats, however. The SANE frontend
+.B scanadf
+supports these optional frame formats. The compressed image data
+is written directly to a file and can then be processed by a scan-script
+using the
+.B \-\-scan\-script
+option. Examples of this are given on the scanadf homepage.
+
+.TP
+.B Automatic Border Detection
+The scanner can automatically detect the paper size and adjust the
+scanning window geometry appropriately. The backend supports this
+useful feature with the
+.B \-\-autoborder
+option. It is enabled by default.
+
+.TP
+.B Batch Mode Scanning
+The batch scan mode allows for maximum throughput. The Set Window
+parameters must remain constant during the entire batch.
+
+.TP
+.B Icon Generation
+The Icon function generates a thumbnail of the full page image, that can be
+transferred as if it were a separate page. This allows the host to
+quickly display a thumbnail representation during the scanning operation.
+Perhaps this would be a great way of implementing a preview scan, but
+since a normal scan is so quick, it might not be worth the trouble.
+
+.TP
+.B Multiple Sections
+Multiple sections (scanning sub-windows) can be defined for the front and
+back pages. Each section can have different characteristics (e.g. geometry,
+compression). The sections are returned as if they were separately
+scanned images. Additionally sections can be used to greatly enhance the
+accuracy and efficiency of the barcode/patchcode decoding process by
+limiting the search area to a small subset of the page. Most Copiscan II
+series scanners support up to 8 user-defined sections.
+
+.TP
+.B Support Barcode/Patchcode Decoding
+The RSC unit can recognize Bar and Patch Codes of various types embedded
+in the scanned image. The codes are decoded and the data is returned to
+the frontend as a text frame. The text is encoded in xml and contains
+a great deal of information about the decoded data such as the location
+where it was found, its orientation, and the time it took to find.
+Further information on the content of this text frame as well as some
+barcode decoding examples can be found on the backend homepage.
+
+.SH LIMITATIONS
+.TP
+.B Decoding a single barcode type per scan
+The RSC unit can search for up to six different barcode types at a time.
+While the code generally supports this as well, the
+.B \-\-barcode\-search\-bar
+option only allows the user to specify a single barcode type.
+Perhaps another option which allows a comma separated list of barcode
+type codes could be added to address this.
+.TP
+.B Scanning a fixed number of pages in batch mode
+The separation of front and back end functionality in SANE presents a
+problem in supporting the 'cancel batch' functionality in the scanner.
+In batch mode, the scanner is always a page ahead of the host. The host,
+knowing ahead of time which page will be the last, can cancel batch mode
+prior to initiating the last scan command. Currently, there is no mechanism
+available for the frontend to pass this knowledge to the backend.
+If batch mode is enabled and the \-\-end\-count terminates a scanadf session,
+an extra page will be pulled through the scanner, but is neither read
+nor delivered to the frontend. The issue can be avoided by specifying
+\-\-batch=no when scanning a fixed number of pages.
+.TP
+.B Revision 1.2 Patch detector
+There is an enhanced patchcode detection algorithm available in the RSC
+with revision 1.2 or higher that is faster and more reliable than the
+standard Bar/Patch code decoder. This is not currently supported.
+
+.SH OPTIONS
+.TP
+.B Scan Mode Options:
+.TP
+.B \-\-preview[=(yes|no)] [no]
+Request a preview-quality scan. When preview is set to yes image
+compression is disabled and the image is delivered in a
+SANE_FRAME_GRAY frame.
+.TP
+.B \-\-mode lineart|halftone [lineart]
+Selects the scan mode (e.g., lineart,monochrome, or color).
+.TP
+.B \-\-resolution 200|240|300dpi [200]
+Sets the resolution of the scanned image. Each scanner model supports
+a list of standard resolutions; only these resolutions can be used.
+.TP
+.B \-\-compression none|g31d|g32d|g42d [none]
+Sets the compression mode of the scanner. Determines the type of data
+returned from the scanner. Values are:
+.RS
+.br
+.B none
+\- uncompressed data \- delivered in a SANE_FRAME_GRAY frame
+.br
+.B g31d
+\- CCITT G3 1 dimension (MH) \- delivered in a SANE_FRAME_G31D frame
+.br
+.B g32d
+\- CCITT G3 2 dimensions (MR, K=4) \- delivered in a SANE_FRAME_G32D frame
+.br
+.B g42d
+\- CCITT G4 (MMR) \- delivered in a SANE_FRAME_G42D frame
+.br
+NOTE: The use of g31d, g32d, and g42d compression values causes the backend
+to generate optional frame formats which may not be supported by all SANE
+frontends.
+.RE
+
+.TP
+.B Geometry Options:
+.TP
+.B \-\-autoborder[=(yes|no)] [yes]
+Enable/Disable automatic image border detection. When enabled, the RSC unit
+automatically detects the image area and sets the window geometry to match.
+.TP
+.B \-\-paper\-size Custom|Letter|Legal|A3|A4|A5|A6|B4|B5 [Custom]
+Specify the scan window geometry by specifying the paper size of the
+documents to be scanned.
+.TP
+.B \-\-tl\-x 0..297.18mm [0]
+Top-left x position of scan area.
+.TP
+.B \-\-tl\-y 0..431.8mm [0]
+Top-left y position of scan area.
+.TP
+.B \-\-br\-x 0..297.18mm [297.18]
+Bottom-right x position of scan area.
+.TP
+.B \-\-br\-y 0..431.8mm [431.8]
+Bottom-right y position of scan area.
+.TP
+.B Feeder Options:
+.TP
+.B \-\-source Automatic Document Feeder|Manual Feed Tray [Automatic Document Feeder]
+Selects the scan source (such as a document feeder). This option is provided
+to allow multiple image scans with xsane; it has no other purpose.
+.TP
+.B \-\-batch[=(yes|no)] [no]
+Enable/disable batch mode scanning. Batch mode allows scanning at maximum throughput
+by buffering within the RSC unit. This option is recommended when performing multiple
+pages scans until the feeder is emptied.
+.TP
+.B \-\-duplex[=(yes|no)] [no]
+Enable duplex (dual-sided) scanning. The scanner takes an image of each side
+of the document during a single pass through the scanner. The front page is
+delivered followed by the back page. Most options, such as compression,
+affect both the front and back pages.
+.TP
+.B \-\-timeout\-adf 0..255 [0]
+Sets the timeout in seconds for the automatic document feeder (ADF).
+The value 0 specifies the hardware default value which varies based
+on the scanner model.
+.TP
+.B \-\-timeout\-manual 0..255 [0]
+Sets the timeout in seconds for semi-automatic feeder. The value 0 specifies
+the hardware default value which varies based on the scanner model.
+.TP
+.B \-\-check\-adf[=(yes|no)] [no]
+Check ADF Status prior to starting scan using the OBJECT POSITION command.
+Note that this feature requires RSC firmware level 1.5 or higher and dip
+switch 4 must be in the on position. NOTE: This option has not been tested
+extensively and may produce undesirable results.
+.TP
+.B Enhancement:
+.TP
+.B \-\-control\-panel[=(yes|no)] [yes]
+Enables the scanner's control panel for selecting image enhancement
+parameters. When the option is set to no the following options are
+used to control image enhancement. See the Bell+Howell scanner users'
+guide for complete information on ACE functionality.
+.TP
+.B \-\-ace\-function \-4..4 [3]
+Specify the Automatic Contrast Enhancement (ACE) Function.
+.TP
+.B \-\-ace\-sensitivity 0..9 [5]
+Specify the Automatic Contrast Enhancement (ACE) Sensitivity.
+.TP
+.B \-\-brightness 0..255 [0]
+Controls the brightness of the acquired image. Ignored for ACE
+capable scanners.
+.TP
+.B \-\-threshold 0..255 [0]
+Select minimum-brightness to get a white point. Ignored for ACE
+capable scanners.
+.TP
+.B \-\-contrast 0..255 [inactive]
+Controls the contrast of the acquired image. This option is not
+currently used by the scanner (and perhaps never will be).
+.TP
+.B \-\-negative[=(yes|no)] [no]
+Swap black and white, yielding a reverse-video image.
+.TP
+.B Icon:
+.TP
+.B \-\-icon\-width 0..3600pel (in steps of 8) [0]
+Width of icon (thumbnail) image in pixels.
+.TP
+.B \-\-icon\-length 0..3600pel (in steps of 8) [0]
+Length of icon (thumbnail) image in pixels.
+.TP
+.B Barcode Options:
+.TP
+.B \-\-barcode\-search\-bar <see list> [none]
+Specifies the barcode type to search for. If this option is
+not specified, or specified with a value of none, then the barcode decoding
+feature is completely disabled. The valid barcode type are:
+.RS
+.br
+.B none
+.br
+.B ean\-8
+.br
+.B ean\-13
+.br
+.B reserved\-ean\-add
+.br
+.B code39
+.br
+.B code2\-5\-interleaved
+.br
+.B code2\-5\-3lines\-matrix
+.br
+.B code2\-5\-3lines\-datalogic
+.br
+.B code2\-5\-5lines\-industrial
+.br
+.B patchcode
+.br
+.B codabar
+.br
+.B codabar\-with\-start\-stop
+.br
+.B code39ascii
+.br
+.B code128
+.br
+.B code2\-5\-5lines\-iata
+.br
+.RE
+.TP
+.B \-\-barcode\-search\-count 1..7 [3]
+Number of times that the RSC performs the decoding algorithm. Specify
+the smallest number possible to increase performance. If you are having
+trouble recognizing barcodes, it is suggested that you increase this option
+to its maximum value (7).
+.TP
+.B \-\-barcode\-search\-mode <see list> [horiz\-vert]
+Chooses the orientation of barcodes to be searched. The valid orientations
+are:
+.RS
+.br
+.B horiz\-vert
+.br
+.B horizontal
+.br
+.B vertical
+.br
+.B vert\-horiz
+.RE
+.TP
+.B \-\-barcode\-hmin 0..1660mm [5]
+Sets the barcode minimum height in millimeters (larger values increase
+recognition speed). Of course the actual barcodes in the document must be
+of sufficient size.
+.TP
+.B \-\-barcode\-search\-timeout 20..65535us [10000]
+Sets the timeout for barcode searching in milliseconds. When the timeout
+expires, the decoder will stop trying to decode barcodes.
+.TP
+.B \-\-section <string> []
+Specifies a series of image sections. A section can be used to gather
+a subset image or to provide a small area for barcode decoding.
+Each section is specified in the following format (units are in millimeters):
+.PP
+.B <width>x<height>+<top-left-x>+<top-left-y>[:functioncode...]
+.PP
+Multiple sections can be specified by separating them with commas.
+.PP
+For example
+.B 76.2x25.4+50.8+0:frontbar
+identifies an area 3 inches wide and 1 inch high with a top left corner
+at the top of the page two inches from the left hand edge of the page.
+This section will be used for barcode decoding on the front page only.
+.PP
+For example
+.B 50.8x25.4+25.4+0:frontbar:front:g42d
+identifies an area 2 inches wide and 1 inch high with a top left corner
+at the top of the page one inch from the left hand edge of the page.
+This section will be used for barcode decoding on the front page as well
+as generating an image compressed in g42d format.
+.PP
+Ordinarily barcodes are searched in the entire image. However, when you
+specify sections all barcode searching is done within the specific sections
+identified. This can significantly speed up the decoding process.
+
+The following functioncodes are available:
+.RS
+.br
+.B front
+\- generate an image for the front page section
+.br
+.B back
+\- generate an image for the back page section
+.br
+.B frontbar
+\- perform barcode search in front page section
+.br
+.B backbar
+\- perform barcode search in back page section
+.br
+.B frontpatch
+\- perform patchcode search in front page section
+.br
+.B backpatch
+\- perform patchcode search in back page section
+.br
+.B none
+\- use no image compression
+.br
+.B g31d
+\- use Group 3 1 dimension image compression
+.br
+.B g32d
+\- use Group 3 2 dimensions image compression
+.br
+.B g42d
+\- use Group 4 2 dimensions image compression
+.br
+.RE
+.PP
+If you omit a compression functioncode, the full page compression setting
+is used. If you specify multiple compression functioncodes, only the
+last one is used.
+
+.TP
+.B \-\-barcode\-relmax 0..255 [0]
+Specifies the maximum relation from the widest to the smallest bar.
+.TP
+.B \-\-barcode\-barmin 0..255 [0]
+Specifies the minimum number of bars in Bar/Patch code.
+.TP
+.B \-\-barcode\-barmax 0..255 [0]
+Specifies the maximum number of bars in a Bar/Patch code.
+.TP
+.B \-\-barcode\-contrast 0..6 [3]
+Specifies the image contrast used in decoding. Use higher values when
+there are more white pixels in the code.
+.TP
+.B \-\-barcode\-patchmode 0..1 [0]
+Controls Patch Code detection.
+
+.SH BUGS
+This is a new backend; detailed bug reports are welcome -- and expected ;)
+.PP
+If you have found something that you think is a bug, please attempt to
+recreate it with the SANE_DEBUG_BH environment variable set to
+255, and send a report detailing the conditions surrounding the bug to
+.IR sane\-devel@lists.alioth.debian.org .
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5), scanimage(1), scanadf(1)
+
+.SH AUTHOR
+The sane\-bh backend was written by Tom Martone, based on the sane\-ricoh
+backend by Feico W. Dillema and the bnhscan program by Sean Reifschneider
+of tummy.com ltd. Some 8000 enhancements added by Mark Temple.
diff --git a/doc/sane-canon.man b/doc/sane-canon.man
new file mode 100644
index 0000000..be7693c
--- /dev/null
+++ b/doc/sane-canon.man
@@ -0,0 +1,101 @@
+.TH sane\-canon 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-canon
+.SH NAME
+sane\-canon \- SANE backend for Canon SCSI scanners
+.SH DESCRIPTION
+The
+.B sane\-canon
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the following Canon flatbed and film scanners:
+.PP
+.RS
+CanoScan 300
+.br
+CanoScan 600
+.br
+CanoScan FB620S
+.br
+CanoScan FB1200S
+.br
+CanoScan FS2700F
+.br
+CanoScan FS2710S
+.br
+.RE
+.PP
+Parallel port and USB scanners are not supported by this backend; see
+the manual pages for sane\-canon_pp and sane\-canon630u for further
+information.
+.PP
+IMPORTANT: This is beta code. We tested the code on the scanners listed
+above, using the computers and operating systems available to us, but we
+cannot guarantee that the backend will work smoothly with future operating
+systems, SCSI adapters, SANE frontend programs, or Canon scanners not
+contained in the list above. In some cases your computer might even hang.
+It cannot be excluded (although we consider it extremely unlikely) that your
+scanner will be damaged.
+.PP
+That said, TESTERS ARE WELCOME. Send your bug reports and comments to
+Manuel Panea <mpd@rzg.mpg.de>; for questions concerning the FB620 and
+FB1200S contact Mitsuru Okaniwa <m\-okaniwa@bea.hi\-ho.ne.jp>, for the
+FS2710S Ulrich Deiters <ukd@xenon.pc.uni\-koeln.de>.
+.PP
+
+.SH TIPS (FS2700F)
+.PP
+Scanning either slides or negatives has been found to require rather
+large gamma corrections of about 2.2 to 2.4 (same value for red, green,
+and blue). It is recommended to use the automatic exposure controls
+of the frontend xsane for best results.
+.PP
+The "Auto Focus" function triggers a special pass to determine the focus
+value. After that, the real scanning pass takes place.
+.PP
+Even with "Auto Focus" turned on, the scanned image is often a bit too
+blurred. Using the GIMP to do a "Filter->Enhance->Sharpen" at about 40
+to 60 improves the image considerably.
+.PP
+
+.SH TIPS (FS2710S)
+.PP
+Gamma corrections are done not by the scanner, but by the backend.
+The scanner is always run in 12-bit mode. In "color" mode the image
+data are corrected for gamma, shadow point, etc., and then truncated
+to 8-bit intensities; the default gamma value is 2.0. In "raw" mode the
+image data are exported without corrections as 16-bit intensities; this
+mode can be recommended if extensive adjustments have to be made to a
+picture (and if the frontend can handle 16-bit intensities).
+.PP
+Negatives are handled by simple color inversion and may require manual
+removal of blue discoloration.
+.PP
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-canon.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-canon.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_CANON
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_CANON=4
+
+.SH "SEE ALSO"
+sane\-scsi(5)
+.br
+http://www.rzg.mpg.de/~mpd/sane/
+.br
+doc/canon.install2700F.txt (installation of a CanoScan 2700F
+.br
+.SH AUTHOR
+Helmut Koeberle, Manuel Panea, and Markus Mertinat; FB620S and FB1200S support
+by Mitsuru Okaniwa; FS2710S support by Ulrich Deiters
+.br
+Man page by Henning Meier-Geinitz (mostly based on canon.README)
diff --git a/doc/sane-canon630u.man b/doc/sane-canon630u.man
new file mode 100644
index 0000000..bdfb874
--- /dev/null
+++ b/doc/sane-canon630u.man
@@ -0,0 +1,106 @@
+.TH sane\-canon630u 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-canon630u
+.SH NAME
+sane\-canon630u \- SANE backend for the Canon 630u USB flatbed scanner
+.SH DESCRIPTION
+The
+.B sane\-canon630u
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the following Canon flatbed scanners:
+.PP
+.RS
+CanoScan 630u
+.br
+CanoScan 636u
+.br
+.RE
+.PP
+Color scanning is supported at 75, 150, 300, and 600 dpi, and gamma and
+analog gain are adjustable.
+.PP
+TESTERS ARE WELCOME. Send your bug reports and comments to
+Nathan Rutman <nthn1@yahoo.com>
+.PP
+.SH CONFIGURATION
+The contents of the
+.I canon630u.conf
+file is a list of device names that correspond to Canon
+USB scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. Only one device name can be listed in
+.IR canon630u.conf .
+The program
+.IR sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name
+could be
+.I /dev/usb/scanner0
+for example. See sane\-usb(5) for details.
+.PP
+This product-specific scanner driver uses the lower-level kernel USB driver
+"scanner". Check for "Driver=usbscanner" under /proc/bus/usb/devices. If
+"Driver=(none)", try forcing it with "insmod scanner vendor=0x04a9 product=0x2204"
+.SH NOTES
+.PP
+Due to Canon's unwillingness to provide scanner documentation, this
+software was developed by analyzing the USB traffic of the Windows
+2000 driver. So things like the calibration procedure I kind of made up;
+it seems to work for my scanner. If you have complaints, let me know.
+.PP
+This driver requires the ability to send USB Control Messages, available in
+kernel 2.4.12 or later.
+.PP
+Some users have reported that this driver doesn't work at all. This seems
+to be a hardware specific issue, although I don't know what exactly the
+problem is. If you are having problems, please send me the info in
+/proc/bus/usb/devices, /proc/pci, the kernel scanner.c driver version from
+/var/log/messages, and the output from "SANE_DEBUG_CANON630U=12 scanimage > /dev/null"
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/canon630u.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-canon630u.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-canon630u.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.TP
+.I /tmp/canon.cal
+The calibration file used to normalize pixel brightness. This is
+calculated every time the scanner is first used after it has lost power.
+Deleting this file will force recalibration.
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_CANON630U
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+.br
+SANE_DEBUG_CANON630U=12 scanimage > /dev/null
+.SH "SEE ALSO"
+sane(7), sane\-usb(5), sane\-find\-scanner(1)
+.br
+http://canon-fb630u.sourceforge.net/
+.br
+.SH AUTHOR
+Nathan Rutman
+
diff --git a/doc/sane-canon_dr.man b/doc/sane-canon_dr.man
new file mode 100644
index 0000000..6ac3fc3
--- /dev/null
+++ b/doc/sane-canon_dr.man
@@ -0,0 +1,221 @@
+.TH sane\-canon_dr 5 "16 Sep 2013" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-canon_dr
+
+.SH NAME
+sane\-canon_dr \- SANE backend for Canon DR-series scanners
+
+.SH DESCRIPTION
+The
+.B sane\-canon_dr
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to some Canon DR-series scanners.
+
+This document describes backend version 41, which shipped with SANE 1.0.24.
+
+.SH SUPPORTED HARDWARE
+This version has only been tested with a few scanner models. Please see
+http://www.sane\-project.org/sane\-supported\-devices.html for the most recent
+list.
+
+This backend may support other Canon scanners. The best
+way to determine level of support is to test the scanner directly,
+or to collect a trace of the windows driver in action.
+Please contact the author for help or with test results.
+
+In general, the larger machines (DR-4000 and up) which have been tested use
+a fairly complete protocol, with hardware support for many modes, resolutions
+and features. The smaller machines have many limitations, like missing
+horizontal resolutions, missing binary mode, always scanning full-width, etc.
+There is code in the backend to address these problems, but there seems to be
+no way to detect if they are required, so they must be hard-coded.
+
+.SH OPTIONS
+Effort has been made to expose most hardware options, including:
+.PP
+source s
+.RS
+Selects the source for the scan. Options
+may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
+.RE
+.PP
+mode m
+.RS
+Selects the mode for the scan. Options
+may include "Lineart", "Halftone", "Gray", and "Color".
+.RE
+.PP
+resolution
+.RS
+Controls scan resolution.
+.RE
+.PP
+tl\-x, tl\-y, br\-x, br\-y
+.RS
+Sets scan area upper left and lower right coordinates. These are renamed
+t, l, x, y by some frontends.
+.RE
+.PP
+page\-width, page\-height
+.RS
+Sets paper size. Used by scanner to determine centering of scan
+coordinates when using ADF and to detect double feed errors.
+.RE
+.PP
+Other options will be available based on the capabilities of the scanner:
+enhancement, compression, buttons and sensors, etc.
+.PP
+Additionally, several 'software' options are exposed by the backend. These
+are reimplementations of features provided natively by larger scanners, but
+running on the host computer. This enables smaller machines to have similar
+capabilities. Please note that these features are somewhat simplistic, and
+may not perform as well as the native implementations. Note also that these
+features all require that the driver cache the entire image in memory. This
+will almost certainly result in a reduction of scanning speed.
+.PP
+swcrop
+.RS
+Requests the driver to detect the extremities of the paper within the larger
+image, and crop the empty edges.
+.RE
+.PP
+swdeskew
+.RS
+Requests the driver to detect the rotation of the paper within the larger
+image, and counter the rotation.
+.RE
+.PP
+swdespeck X
+.RS
+Requests the driver to find and remove dots of X diameter or smaller from the
+image, and fill the space with the average surrounding color.
+.RE
+
+Use 'scanimage \-\-help' to get a list, but be aware that some options may
+be settable only when another option has been set, and that advanced options
+may be hidden by some frontend programs.
+.PP
+.SH CONFIGURATION FILE
+The configuration file "canon_dr.conf" is used to tell the backend how to look
+for scanners, and provide options controlling the operation of the backend.
+This file is read each time the frontend asks the backend for a list
+of scanners, generally only when the frontend starts. If the configuration
+file is missing, the backend will fail to run.
+.PP
+Scanners can be specified in the configuration file in 4 ways:
+.PP
+"scsi CANON DR"
+.RS
+Requests backend to search all scsi busses in the system for a device
+which reports itself to be a scanner made by 'CANON', with a model name
+starting with 'DR'.
+.RE
+.PP
+"scsi /dev/sg0" (or other scsi device file)
+.RS
+Requests backend to open the named scsi device. Only useful if you have
+multiple compatible scanners connected to your system, and need to
+specify one. Probably should not be used with the other "scsi" line above.
+.RE
+.PP
+"usb 0x04a9 0x1603" (or other vendor/product ids)
+.RS
+Requests backend to search all usb busses in the system for a device
+which uses that vendor and product id. The device will then be queried
+to determine if it is a Canon scanner.
+.RE
+.PP
+"usb /dev/usb/scanner0" (or other device file)
+.RS
+Some systems use a kernel driver to access usb scanners. This method is untested.
+.RE
+.PP
+Besides the 'scsi' and 'usb' lines, the configuration file supports the
+following 'option' lines:
+.PP
+"option buffer-size [number of bytes]"
+.RS
+Set the number of bytes in the data buffer to something other than the
+compiled\-in default of 4MB. Large values may cause timeouts or hangs, small
+values may cause slow scans.
+.PP
+Note: The backend does not place an upper bound on this value, as some users
+required it to be quite large. Values above the default are not recommended,
+and may crash your OS or lockup your scsi card driver. You have been
+warned.
+.RE
+.PP
+"option vendor-name [string of text]"
+.br
+"option model-name [string of text]"
+.br
+"option version-name [string of text]"
+.RS
+These options can be used collectively to override the values provided by the
+scanner, or to provide the values when the scanner cannot.
+.RE
+.PP
+"option padded-read [0|1]"
+.RS
+Some scanners prepend all data transmitted to host with 12 bytes. Enable this option if the scanner fails to respond to commands.
+.RE
+.PP
+"option duplex-offset [integer]"
+.RS
+Some scanners pad the upper edge of one side of a duplex scan. There is some variation in the amount of padding. Modify this option if your unit shows an unwanted band of image data on only one side.
+.RE
+.PP
+Note: 'option' lines may appear multiple times in the configuration file.
+They only apply to scanners discovered by the next 'scsi/usb' line.
+.PP
+
+.SH ENVIRONMENT
+The backend uses a single environment variable, SANE_DEBUG_CANON_DR, which
+enables debugging output to stderr. Valid values are:
+.PP
+.RS
+5 Errors
+.br
+10 Function trace
+.br
+15 Function detail
+.br
+20 Option commands
+.br
+25 SCSI/USB trace
+.br
+30 SCSI/USB detail
+.br
+35 Useless noise
+.RE
+
+.SH KNOWN ISSUES
+This backend was entirely reverse engineered from usb traces of the proprietary
+driver. Various advanced features of the machines may not be enabled. Many
+machines have not been tested. Their protocol is unknown.
+
+.SH CREDITS
+
+The various authors of the sane\-fujitsu backend provided useful code
+.br
+Yabarana Corp. www.yabarana.com provided significant funding
+.br
+EvriChart, Inc. www.evrichart.com provided funding and loaned equipment
+.br
+Canon, USA. www.usa.canon.com loaned equipment
+.br
+HPrint hprint.com.br provided funding and testing for DR-2510 support
+.br
+Stone-IT www.stone-it.com provided funding for DR-2010 and DR-2050 support
+.br
+Gerhard Pfeffer provided access and testing for P-208 and P-215
+.br
+Special thanks to: Alejandro Imass, Andre Shimakawa, Martijn van Brummelen, Thanos Diacakis and Junren Shi for testing and feedback.
+
+.SH "SEE ALSO"
+sane(7),
+sane\-scsi(5),
+sane\-usb(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-canon_pp.man b/doc/sane-canon_pp.man
new file mode 100644
index 0000000..ae307cb
--- /dev/null
+++ b/doc/sane-canon_pp.man
@@ -0,0 +1,232 @@
+.TH sane\-canon_pp 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-canon_pp
+.SH NAME
+sane\-canon_pp \- SANE backend for Canon CanoScan Parallel Port flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-canon_pp
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following Canon flatbed scanners:
+.PP
+.RS
+CanoScan FB320P
+.br
+CanoScan FB620P
+.br
+CanoScan FB330P
+.br
+CanoScan FB630P
+.br
+CanoScan N340P
+.br
+CanoScan N640P
+.br
+CanoScan N640P ex
+.br
+.RE
+.PP
+No USB scanners are supported and there are no plans to support them in the
+future. Other projects are working on support for USB scanners. See the
+.B PROJECTS
+file for more detail. The FB310P and FB610P are re-badged Avision scanners
+which use a different command set, so are unlikely to be supported by this
+backend in the future.
+.PP
+IMPORTANT: this is alpha code. While we have made every effort to make it as
+reliable as possible, it will not always work as expected. Feedback is still
+appreciated. Please send any bug reports to the maintainers as listed on the
+web page (listed in
+.B SEE ALSO
+below).
+.PP
+.
+.PP
+.SH "DEVICE NAMES"
+This backend expects device names of the form presented by libieee1284. These
+names are highly dependent on operating system and version.
+
+On Linux 2.4 kernels this will be of the form
+.I "parport0"
+or older (2.2 and before) kernels may produce names like
+.IR "0x378"
+(the base address of your port) or simply
+.IR "0"
+depending on your module configuration. Check the contents of
+.I /proc/parport
+if it exists. If you don't want to specify a default port (or don't know its
+name), the backend should be able to detect which port your scanner is on.
+
+.SH CONFIGURATION
+The contents of the
+.I canon_pp.conf
+file is a list of options for the driver to use. Empty lines and lines
+starting with a hash mark (#) are ignored.
+.PP
+The supported options are currently
+.BR ieee1284 ,
+.BR calibrate ,
+.BR init_mode ,
+and
+.BR force_nibble
+
+Option
+.B ieee1284
+.IR port-name
+defines which port to use. The format of port-name is OS dependent, based on
+the names presented by libieee1284. Please only have one of these lines, or
+all but one will be ignored.
+
+Option
+.B calibrate
+.IR cal-file
+.IR [port-name]
+defines which calibration file to use on a per-port basis. If you only have
+one parport, the port-name argument may be omitted \- but be careful as this
+will cause problems on multi-scanner systems. You may have as many of these
+lines as you like, as long as each has a unique port name. The tilde (`~')
+character is acceptable and will be expanded to the value of the HOME
+environment.
+
+Option
+.B init_mode
+.IR <AUTO|FB620P|FB630P>
+.IR [portname]
+defines which initialisation (wake-up) mode to use on a per-port basis.
+If you only have one parport, the portname argument may be omitted \- but
+be careful as this may cause problems on multi-scanner systems.
+You may have as many of these lines as you like, as long as each has a unique
+port name. The valid initialisation modes are FB620P (which strobes 10101010
+and 01010101 on the data pins), FB630P (which strobes 11001100 and 00110011
+on the data pins) and AUTO, which will try FB630P mode first then FB620P mode
+second. The FB620P mode is also used by the FB320P. The FB630P mode is used
+by the FB330P, N340P, and N640P.
+
+Option
+.B force_nibble
+forces the driver to use nibble mode even if ECP mode is reported to work by
+libieee1284. This works-around the rare issue of ECP mode being reported to
+work by the library, then not working.
+
+.SH TIPS
+.PP
+Hit the "Calibrate" button before scanning. It vastly improves the quality of
+scans.
+.PP
+To enable automatic detection of your scanner, uncomment the "canon_pp" line
+from
+.I @CONFIGDIR@/dll.conf
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/canon_pp.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-canon_pp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-canon_pp.so
+The shared library implementing this backend (present on systems that support
+dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_CANON_PP
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend. Higher debug levels
+increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_CANON_PP=4
+.SH NOTES
+.B Features available in the Windows interface
+.TP
+.B Brightness and Contrast
+These are not implemented, and probably never will be. These appear to be
+implemented entirely in software. Use GIMP or a similar program if you need
+these features.
+.TP
+.B Descreen Mode
+This appears on our first analysis to be just oversampling with an
+anti-aliasing filter. Again, it seems to be implemented entirely in software,
+so GIMP is your best bet for now.
+.TP
+.B Gamma Tables
+This is under investigation, but for now only a simple gamma profile (ie: the
+one returned during calibration) will be loaded.
+.PP
+.B Communication Problems
+.PP
+ECP mode in libieee1284 doesn't always work properly, even with new hardware.
+We believe that this is a ppdev problem. If you change the configuration file
+to include
+.B force_nibble
+, the problem will go away, but you will only be able to scan in nibble mode.
+.PP
+Sometimes the scanner can be left in a state where our code cannot revive it.
+If the backend reports no scanner present, try unplugging the power and
+plugging it back in. Also try unplugging printers from the pass-through port.
+.PP
+The scanner will not respond correctly to our commands when you first plug in
+the power. You may find if you try a scan very soon after plugging in the
+power that the backend will incorrectly report that you have no scanner present.
+To avoid this, give it about 10 seconds to reset itself before attempting any
+scans.
+.PP
+.B Repeated Lines
+.PP
+Sometimes at high resolutions (ie. 600dpi) you will notice lines which appear
+twice. These lines correspond to points where the scanner head has stopped
+during the scan (it stops every time the internal 64kb buffer is full).
+Basically it's a mechanical problem inside the scanner, that the tolerance of
+movement for a start/stop event is greater than 1/600 inches. I've never tried
+the windows driver so I'm not sure how (or if) it works around this problem,
+but as we don't know how to rewind the scanner head to do these bits again,
+there's currently no nice way to deal with the problem.
+.PP
+.B Grey-scale Scans
+.PP
+Be aware that the scanner uses the green LEDs to read grey-scale scans, meaning
+green coloured things will appear lighter than normal, and red and blue
+coloured items will appear darker than normal. For high-accuracy grey-scale
+scans of colour items, it's best just to scan in colour and convert to
+grey-scale in graphics software such as the GIMP.
+.PP
+.B FB620P/FB320P Caveats
+.PP
+These models can not be reset in the same way as the others. The windows driver
+doesn't know how to reset them either \- when left with an inconsistent scanner,
+it will start scanning half way down the page!
+.PP
+Aborting is known to work correctly on the FB*30P models, and is known to be
+broken on the FB*20P models. The FB620P which I tested on simply returns
+garbage after a scan has been aborted using the method we know.
+Aborting is able to leave the scanner in a state where it can be shut down,
+but not where another scan can be made.
+
+
+.SH "SEE ALSO"
+sane(7), sane\-dll(5)
+.BR
+http://canon\-fb330p.sourceforge.net/
+
+.SH AUTHOR
+This backend is primarily the work of Simon Krix (Reverse Engineering), and
+Matthew Duggan (SANE interface).
+.PP
+Many thanks to Kevin Easton for his comments and help, and Kent A. Signorini
+for his help with the N340P.
+
diff --git a/doc/sane-cardscan.man b/doc/sane-cardscan.man
new file mode 100644
index 0000000..75cd161
--- /dev/null
+++ b/doc/sane-cardscan.man
@@ -0,0 +1,114 @@
+.TH sane\-cardscan 5 "10 Feb 2010" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-cardscan
+
+.SH NAME
+sane\-cardscan \- SANE backend for Corex CardScan usb scanners
+
+.SH DESCRIPTION
+The
+.B sane\-cardscan
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to the Corex CardScan 800c & 600c small-format scanners.
+
+The backend supports only grayscale and color modes and media of
+(theoretically) infinite length.
+
+This backend may support other scanners. The best
+way to determine level of support is to get a trace of the windows
+driver in action, and send it to the author.
+
+.SH OPTIONS
+The cardscan backend supports the following options:
+.PP
+mode m
+.RS
+Selects the mode for the scan. Options are "Gray" and "Color".
+.RE
+.PP
+.SH CONFIGURATION FILE
+The configuration file "cardscan.conf" is used to tell the backend how to look
+for scanners, and provide options controlling the operation of the backend.
+This file is read each time the frontend asks the backend for a list
+of scanners, generally only when the frontend starts. If the configuration
+file is missing, the backend will use a set of compiled defaults, which
+are identical to the default configuration file shipped with SANE.
+.PP
+Scanners can be specified in the configuration file in 2 ways:
+.PP
+"usb 0x04c5 0x1042" (or other vendor/product ids)
+.RS
+Requests backend to search all usb busses in the system for a device
+which uses that vendor and product id. The device will then be queried
+to determine if it is a cardscan scanner.
+.RE
+.PP
+"usb /dev/usb/scanner0" (or other device file)
+.RS
+Some systems use a kernel driver to access usb scanners. This method is untested.
+.RE
+
+Additionally, there are two configuration options that control the protocol
+used by the backend:
+
+.PP
+"lines_per_block 16" (or other number from 1 to 32)
+.RS
+Controls the number of lines of image data which will be aquired in each pass.
+Older scanners will require this number set lower, often 1.
+.RE
+.PP
+"has_cal_buffer 1" (1 or 0)
+.RS
+Causes the backend to get calibration data from scanner during initialization.
+Older scanners do not support this request, and must be set to 0.
+.RE
+
+.SH ENVIRONMENT
+The backend uses a single environment variable, SANE_DEBUG_CARDSCAN, which
+enables debugging output to stderr. Valid values are:
+.PP
+.RS
+5 Errors
+.br
+10 Function trace
+.br
+15 Function detail
+.br
+20 Option commands
+.br
+25 SCSI/USB trace
+.br
+30 SCSI/USB detail
+.br
+35 Useless noise
+.RE
+
+.SH KNOWN ISSUES
+.PP
+.RS
+The scanner does not seem to have much control possible, so the backend
+cannot set x/y coordinate values, resolutions, etc. These things could
+be simulated in the backend, but there are plenty of command line tools.
+.br
+.br
+The backend also does not send all the commands that the windows driver
+does, so it may not function the same.
+.br
+.br
+The backend does not have the calibration or ejection options of the
+windows driver.
+.br
+.br
+.RE
+
+.SH CREDITS
+The hardware to build this driver was provided to the author by:
+ Jeff Kowalczyk <jtk a t yahoo d o t com>
+
+.SH "SEE ALSO"
+sane(7),
+sane\-usb(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-config.man b/doc/sane-config.man
new file mode 100644
index 0000000..42c6f9a
--- /dev/null
+++ b/doc/sane-config.man
@@ -0,0 +1,51 @@
+.TH sane\-config 1 "10 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.SH NAME
+sane\-config \- get information about the installed version of libsane
+.SH SYNOPSIS
+.B sane\-config [\-\-prefix] [\-\-exec\-prefix] [\-\-libs] [\-\-cflags] [\-\-ldflags] [\-\-version] [\-\-help \fI[OPTION]\fP]
+.SH DESCRIPTION
+.PP
+.B sane\-config
+is a tool that is used to determine the compiler and linker
+flags that should be used to compile and link
+.B SANE
+frontends to a
+.B SANE
+backend library (libsane).
+.
+.SH OPTIONS
+.B sane\-config
+accepts the following options (you can't use more than one option at the same time):
+.TP 8
+.B \-\-version
+Print the currently installed version of libsane on the standard output.
+.TP 8
+.B \-\-help OPTION
+Print a short usage message. If OPTION is specified, help for that option
+(e.g. \-\-libs) is printed (if available).
+.TP 8
+.B \-\-libs
+Print the additional libraries that are necessary to link a
+.B SANE
+frontend to libsane.
+.TP 8
+.B \-\-ldflags
+Print the linker flags that are necessary to link a
+.B SANE
+frontend to libsane.
+.TP 8
+.B \-\-cflags
+Print the compiler flags that are necessary to compile a
+.B SANE
+frontend.
+.TP 8
+.B \-\-prefix
+Print the prefix used during compilation of libsane.
+.TP 8
+.B \-\-exec\-prefix
+Print the exec\-prefix used during compilation of libsane.
+.SH "SEE ALSO"
+.BR sane (7)
+.SH AUTHOR
+This manual page was written by Julien BLACHE <jblache@debian.org>, for the
+Debian GNU/Linux system (but may be used by others).
diff --git a/doc/sane-coolscan.man b/doc/sane-coolscan.man
new file mode 100644
index 0000000..bf83014
--- /dev/null
+++ b/doc/sane-coolscan.man
@@ -0,0 +1,111 @@
+.TH sane\-coolscan 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-coolscan
+
+.SH NAME
+sane\-coolscan \- SANE backend for Nikon film-scanners
+
+.SH ABOUT THIS FILE
+
+This file is a short description of the coolscan-backend for sane!
+
+.SH DESCRIPTION
+
+The
+.B sane\-coolscan
+library implements a SANE backend that provides the interface to the following Nikon Coolscan Film scanners: Nikon LS20, LS30, LS1000, LS2000.
+
+.B Even though the backend has worked for a number of people, there are still some problems, especially in combination with some SCSI card/drivers (AHA-1505/aha152x.o) and the autofocus command. You should consider this backend 'alpha' and be careful when using it the first time.
+
+.SH CONFIGURATION
+
+The configuration file for this backend resides in
+.IR @CONFIGDIR@/coolscan.conf .
+
+Its contents is a list of device names that correspond to Nikon Coolscan scanners. Empty lines
+and lines starting with a hash mark (#) are ignored. A sample configuration file is
+shown below:
+
+.nf
+ #scsi Vendor Model Type
+ scsi Nikon * Scanner
+ /dev/scanner
+.fi
+
+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.
+
+.SH SCSI ADAPTER TIPS
+
+Some SCSI-adapters and low-level SCSI drivers do not work correctly with this backend and the
+Coolscan scanners. These systems hang when the autofocus command is send to the Scanner.
+To see a list of which card/driver combinations work or dont work have a look at:
+http://andreas.rick.free.fr/sane/autofocus.html.
+
+
+
+.SH FILES
+
+.TP
+The backend configuration file:
+.I @CONFIGDIR@/coolscan.conf
+.TP
+The static library implementing this backend:
+.I @LIBDIR@/libsane\-coolscan.a
+.TP
+The shared library implementing this backend:
+.I @LIBDIR@/libsane\-coolscan.so
+(present on systems that support dynamic loading)
+
+.SH ENVIRONMENT
+
+.TP
+.B SANE_DEBUG_COOLSCAN
+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:
+SANE_DEBUG_COOLSCAN values
+
+Examples:
+
+on bash:
+.br
+export SANE_DEBUG_COOLSCAN=8
+
+on csh:
+.br
+setenv SANE_DEBUG_COOLSCAN 8
+
+.SH BUGS
+
+The autofocus command does not work with some SCSI card/driver combinations
+.PP
+The gamma table is not implemented for the LS1000 yet.
+.PP
+The dust-removal is not working yet
+
+.SH SEE ALSO
+
+.TP
+.I http://andreas.rick.free.fr/sane/
+The homepage of this backend
+.TP
+.I http://www.sema.be/coolscan/
+The original version of the coolscan backend by Didier
+.PP
+sane(7), sane\-scsi(5)
+
+.SH THANKS TO
+
+.PP
+Didier Carlier \- For writing the original Coolscan backend (without it I would not have started this)
+.PP
+Oliver Rauch \- For adapting xsane so quickly to the infrared stuff.
+.PP
+All the other people working on SANE.
+
+.SH AUTHOR
+Andreas Rick
+
+.SH EMAIL-CONTACT
+andreas.rick@free.fr
diff --git a/doc/sane-coolscan2.man b/doc/sane-coolscan2.man
new file mode 100644
index 0000000..af27f1a
--- /dev/null
+++ b/doc/sane-coolscan2.man
@@ -0,0 +1,182 @@
+.TH sane\-coolscan2 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-coolscan2
+.SH NAME
+sane\-coolscan2 \- SANE backend for Nikon Coolscan film scanners
+.SH DESCRIPTION
+The
+.B sane\-coolscan2
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Nikon Coolscan film scanners. Some functions of this
+backend should be considered
+.B beta-quality
+software. Most functions have been stable for a long time, but of
+course new development can not and will not function properly from
+the very first day. Please report any strange behaviour to the
+maintainer of the backend.
+
+.PP
+At present, the following scanners are known to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Model: Connection Type
+--------------------------- -------------------
+LS-30 (Coolscan III) SCSI
+LS-2000 SCSI
+LS-40 ED (Coolscan IV) USB
+LS-4000 ED IEEE 1394
+LS-8000 ED IEEE 1394
+.fi
+.ft R
+.RE
+
+Please send mail to the backend author (andras@users.sourceforge.net) to
+report successes or failures.
+
+.SH OPTIONS
+The options the backend supports can either be selected through command line
+options to programs like scanimage or through GUI elements in xscanimage or xsane.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d coolscan2:<interface>:<device>
+.RE
+where <interface> and <device> specify the device in question, as in the
+configuration file (see next section). The \-d parameter and its argument
+can be omitted to obtain information on the first scanner identified. Use
+the command
+.RS
+scanimage \-L
+.RE
+to list all devices recognized by your SANE installation.
+
+The options should be fully described by the description or tooltips given by
+frontend. Here is a description of some of the most important options, in the
+syntax with which they must be supplied to scanimage:
+.TP
+.I \-\-frame <n>
+This option specifies which frame to operate on, if a motorized film strip
+feeder or APS adapter are used. The frame number
+.I <n>
+ranges from 1 to the number of frames available, which is sensed each time
+the backend is initialized (usually each time you start the frontend).
+.TP
+.I \-\-subframe <x>
+This option shifts the scan window by the specified amount (default
+unit is mm).
+.TP
+.I \-\-infrared=yes/no
+If set to "yes", the scanner will read the infrared channel, thus allowing
+defect removal in software. The infrared image is read during a second scan,
+with no options altered. The backend must not be restarted between the scans.
+If you use scanimage, perform a batch scan with batch\-count=2 to obtain the
+IR information.
+.TP
+.I \-\-depth <n>
+Here <n> can either be 8 or the maximum number of bits supported by the
+scanner (10, 12, or 14). It specifies whether or not the scanner reduces
+the scanned data to 8 bits before sending it to the backend. If 8 bits are
+used, some information and thus image quality is lost, but the amount of data
+is smaller compared to higher depths. Also, many imaging programs and image
+formats cannot handle depths greater than 8 bits.
+.TP
+.I \-\-autofocus
+Perform autofocus operation. Unless otherwise specified by the other options (
+.I \-\-focus\-on\-centre
+and friends), focusing is performed on the centre of the selected scan area.
+.TP
+.I \-\-ae\-wb
+.TP
+.I \-\-ae
+Perform a pre-scan to calculate exposure values automatically.
+.I \-\-ae\-wb
+will maintain the white balance, while
+.I \-\-ae
+will adjust each channel separately.
+.TP
+.I \-\-exposure
+Multiply all exposure times with this value. This allows exposure
+correction without modifying white balance.
+.TP
+.I \-\-load
+Load the next slide when using the slide loader.
+.TP
+.I \-\-eject
+Eject the film strip or mounted slide when using the slide loader.
+.TP
+.I \-\-reset
+Reset scanner. The scanner will perform the same action as when power is
+turned on: it will eject the film strip and calibrate itself. Use this
+whenever the scanner refuses to load a film strip properly, as a result of
+which
+.I \-\-eject
+does not work.
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/coolscan2.conf specifies the device(s)
+that the backend will use. Owing to the nature of the supported connection
+types SCSI, USB, and IEEE 1394, the default configuration file supplied with
+the SANE distribution should work without being edited.
+
+Each line in the configuration file is either of the following, where all
+entries are case-sensitive:
+.TP
+.I blank or starting with a '#' character
+These lines are ignored, thus '#' can be used to include comments.
+.TP
+.I containing only the word """auto"""
+This instructs the backend to probe for a scanner by scanning the buses for
+devices with know identifiers. This is the action taken when no
+configuration file is present.
+.TP
+.I a line of the form <interface>:<device>
+Here <interface> can be one of "scsi" or "usb", and <device> is the device
+file of the scanner. Note that IEEE 1394 devices are handled by the SBP-2
+module in the kernel and appear to SANE as SCSI devices.
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-coolscan2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-coolscan2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.TP
+.I @CONFIGDIR@/coolscan2.conf
+Configuration file for this backend, read each time the backend is
+initialized.
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_COOLSCAN2
+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.
+
+.SH "SEE ALSO"
+sane\-scsi(5), sane\-usb(5), scanimage(1), xscanimage(1), xsane(1)
+
+.SH BUGS
+Currently, the SANE protocol does not allow automatically updating options
+whenever the hardware changes. Thus the number of choices for the
+.B \-\-frame
+option will be fixed when the backend is initialized (usually when the user
+runs the frontend). In particular, if there is no film strip in the
+automatic film strip feeder when the backend is initialized, the frame option
+will not appear at all. Also, restarting the frontend after swapping film
+adapters is strongly recommended.
+
+Linux kernels prior to 2.4.19 had a patch that truncated INQUIRY data
+from IEEE 1394 scanners to 36 bytes, discarding vital information
+about the scanner. The IEEE 1394 models therefore only work with
+2.4.19 or later.
+
+No real bugs currently known, please report any to the backend maintainer
+or the SANE developers' email list.
+
+.SH AUTHORS
+The backend is written and maintained by Andr\['a]s Major
+(andras@users.sourceforge.net).
diff --git a/doc/sane-coolscan3.man b/doc/sane-coolscan3.man
new file mode 100644
index 0000000..364d5ef
--- /dev/null
+++ b/doc/sane-coolscan3.man
@@ -0,0 +1,182 @@
+.TH sane\-coolscan3 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-coolscan3
+.SH NAME
+sane\-coolscan3 \- SANE backend for Nikon Coolscan film scanners
+.SH DESCRIPTION
+The
+.B sane\-coolscan3
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Nikon Coolscan film scanners. Some functions of this
+backend should be considered
+.B beta-quality
+software. Most functions have been stable for a long time, but of
+course new development can not and will not function properly from
+the very first day.
+
+.PP
+At present, the following scanners are known to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Model: Connection Type
+--------------------------- -------------------
+LS-30 (Coolscan III) SCSI
+LS-40 ED (Coolscan IV) USB
+LS-50 ED (Coolscan V) USB
+LS-2000 SCSI
+LS-4000 ED IEEE 1394
+LS-8000 ED IEEE 1394
+.fi
+.ft R
+.RE
+
+Please send mail to sane-devel@lists.alioth.debian.org to report successes
+or failures.
+
+.SH OPTIONS
+The options the backend supports can either be selected through command line
+options to programs like scanimage or through GUI elements in xscanimage or xsane.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d coolscan3:<interface>:<device>
+.RE
+where <interface> and <device> specify the device in question, as in the
+configuration file (see next section). The \-d parameter and its argument
+can be omitted to obtain information on the first scanner identified. Use
+the command
+.RS
+scanimage \-L
+.RE
+to list all devices recognized by your SANE installation.
+
+The options should be fully described by the description or tooltips given by
+frontend. Here is a description of some of the most important options, in the
+syntax with which they must be supplied to scanimage:
+.TP
+.I \-\-frame <n>
+This option specifies which frame to operate on, if a motorized film strip
+feeder or APS adapter are used. The frame number
+.I <n>
+ranges from 1 to the number of frames available, which is sensed each time
+the backend is initialized (usually each time you start the frontend).
+.TP
+.I \-\-subframe <x>
+This option shifts the scan window by the specified amount (default
+unit is mm).
+.TP
+.I \-\-infrared=yes/no
+If set to "yes", the scanner will read the infrared channel, thus allowing
+defect removal in software. The infrared image is read during a second scan,
+with no options altered. The backend must not be restarted between the scans.
+If you use scanimage, perform a batch scan with batch\-count=2 to obtain the
+IR information.
+.TP
+.I \-\-depth <n>
+Here <n> can either be 8 or the maximum number of bits supported by the
+scanner (10, 12, or 14). It specifies whether or not the scanner reduces
+the scanned data to 8 bits before sending it to the backend. If 8 bits are
+used, some information and thus image quality is lost, but the amount of data
+is smaller compared to higher depths. Also, many imaging programs and image
+formats cannot handle depths greater than 8 bits.
+.TP
+.I \-\-autofocus
+Perform autofocus operation. Unless otherwise specified by the other options (
+.I \-\-focus\-on\-centre
+and friends), focusing is performed on the centre of the selected scan area.
+.TP
+.I \-\-ae\-wb
+.TP
+.I \-\-ae
+Perform a pre-scan to calculate exposure values automatically.
+.I \-\-ae\-wb
+will maintain the white balance, while
+.I \-\-ae
+will adjust each channel separately.
+.TP
+.I \-\-exposure
+Multiply all exposure times with this value. This allows exposure
+correction without modifying white balance.
+.TP
+.I \-\-load
+Load the next slide when using the slide loader.
+.TP
+.I \-\-eject
+Eject the film strip or mounted slide when using the slide loader.
+.TP
+.I \-\-reset
+Reset scanner. The scanner will perform the same action as when power is
+turned on: it will eject the film strip and calibrate itself. Use this
+whenever the scanner refuses to load a film strip properly, as a result of
+which
+.I \-\-eject
+does not work.
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/coolscan3.conf specifies the device(s)
+that the backend will use. Owing to the nature of the supported connection
+types SCSI, USB, and IEEE 1394, the default configuration file supplied with
+the SANE distribution should work without being edited.
+
+Each line in the configuration file is either of the following, where all
+entries are case-sensitive:
+.TP
+.I blank or starting with a '#' character
+These lines are ignored, thus '#' can be used to include comments.
+.TP
+.I containing only the word """auto"""
+This instructs the backend to probe for a scanner by scanning the buses for
+devices with know identifiers. This is the action taken when no
+configuration file is present.
+.TP
+.I a line of the form <interface>:<device>
+Here <interface> can be one of "scsi" or "usb", and <device> is the device
+file of the scanner. Note that IEEE 1394 devices are handled by the SBP-2
+module in the kernel and appear to SANE as SCSI devices.
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-coolscan3.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-coolscan3.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.TP
+.I @CONFIGDIR@/coolscan3.conf
+Configuration file for this backend, read each time the backend is
+initialized.
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_COOLSCAN3
+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.
+
+.SH "SEE ALSO"
+sane\-scsi(5), sane\-usb(5), scanimage(1), xscanimage(1), xsane(1)
+
+.SH BUGS
+Currently, the SANE protocol does not allow automatically updating options
+whenever the hardware changes. Thus the number of choices for the
+.B \-\-frame
+option will be fixed when the backend is initialized (usually when the user
+runs the frontend). In particular, if there is no film strip in the
+automatic film strip feeder when the backend is initialized, the frame option
+will not appear at all. Also, restarting the frontend after swapping film
+adapters is strongly recommended.
+
+Linux kernels prior to 2.4.19 had a patch that truncated INQUIRY data
+from IEEE 1394 scanners to 36 bytes, discarding vital information
+about the scanner. The IEEE 1394 models therefore only work with
+2.4.19 or later.
+
+No real bugs currently known, please report any to the SANE developers' list.
+
+.SH AUTHORS
+coolscan3 written by A. Zummo (a.zummo@towertech.it), based heavily on
+coolscan2 written by Andr\['a]s Major (andras@users.sourceforge.net).
+
diff --git a/doc/sane-dc210.man b/doc/sane-dc210.man
new file mode 100644
index 0000000..bc0db75
--- /dev/null
+++ b/doc/sane-dc210.man
@@ -0,0 +1,107 @@
+.TH sane\-dc210 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-dc210
+.SH NAME
+sane\-dc210 \- SANE backend for Kodak DC210 Digital Camera
+.SH DESCRIPTION
+The
+.B sane\-dc210
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the Kodak DC210 camera. THIS IS EXTREMELY ALPHA
+CODE! USE AT YOUR OWN RISK!!
+.SH "DEVICE NAMES"
+The current version of the backend only allows one camera to be
+connected. The device name is always "0".
+.SH CONFIGURATION
+The contents of the
+.I dc210.conf
+specify the serial port and baud rate to use. The baud rate
+specifies the maximum rate to use while downloading pictures. (The
+camera is always initialized using 9600 baud, then switches to the
+higher rate). On my 90MHz Pentium, I usually have no problems downloading
+at 115200 baud as long as the system is not excessively busy and
+the "interrupt-unmask flag" is set in the IDE driver (hdparm \-u1).
+Supported baud rates are: 9600, 19200, 38400, 57600, and 115200.
+.PP
+The dumpinquiry line causes some information about the camera to
+be printed.
+.PP
+cmdrespause specifies how many usec (1,000,000ths of a) between
+writing the command and reading the result should be used. 125000
+seems to be the lowest I could go reliably.
+.PP
+breakpause is the time in 1,000,000ths of a usec between sending the
+"back to default" break sending commands.
+.PP
+Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+port=/dev/ttyS0
+.br
+# this is a comment
+.br
+baud=115200
+.br
+dumpinquiry
+.br
+cmdrespause=125000
+.br
+breakpause=1000000
+.RE
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/dc210.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-dc210.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-dc210.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_DC210
+If the library was compiled with debugging support enabled, this
+environment variable controls the debug level for this backend.
+A value of 128 requests maximally copious debug output; smaller
+levels reduce verbosity.
+
+.SH "SEE ALSO"
+sane(7)
+
+.SH AUTHOR
+Brian J. Murrell
+.PP
+This backend is based somewhat on the dc25 backend included in this
+package by Peter Fales.
+.PP
+The manpage was copied from the dc25 backend and somewhat edited by
+Henning Meier-Geinitz.
+
+.SH BUGS
+Known bugs/limitations are: ?
+.PP
+More general comments, suggestions, and inquiries about frontends
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
+You must be subscribed to the list, otherwise your mail won't be
+sent to the subscribers.
diff --git a/doc/sane-dc240.man b/doc/sane-dc240.man
new file mode 100644
index 0000000..ba7fd63
--- /dev/null
+++ b/doc/sane-dc240.man
@@ -0,0 +1,113 @@
+.TH sane\-dc240 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-dc240
+.SH NAME
+sane\-dc240 \- SANE backend for Kodak DC240 Digital Camera
+.SH DESCRIPTION
+The
+.B sane\-dc240
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the Kodak DC240 camera. THIS IS EXTREMELY ALPHA
+CODE! USE AT YOUR OWN RISK!!
+.SH "DEVICE NAMES"
+The current version of the backend only allows one camera to be
+connected. The device name is always "0".
+.SH CONFIGURATION
+The contents of the
+.I dc240.conf
+specify the serial port and baud rate to use. The baud rate
+specifies the maximum rate to use while downloading pictures. (The
+camera is always initialized using 9600 baud, then switches to the
+higher rate). On a 450MHz Pentium, I usually have no problems downloading
+at 115200 baud, though the camera sometimes has to resend packets due
+to lost characters. Results are better when
+the "interrupt-unmask flag" is set in the IDE driver (hdparm \-u1).
+Supported baud rates are: 9600, 19200, 38400, 57600, and 115200.
+.PP
+The dumpinquiry line causes some information about the camera to
+be printed.
+.PP
+cmdrespause specifies how many usec (1,000,000ths of a) between
+writing the command and reading the result should be used. 125000
+seems to be the lowest I could go reliably.
+.PP
+breakpause is the time in 1,000,000ths of a usec between sending the
+"back to default" break sending commands.
+.PP
+Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+port=/dev/ttyS0
+.br
+# this is a comment
+.br
+baud=115200
+.br
+dumpinquiry
+.br
+cmdrespause=125000
+.br
+breakpause=1000000
+.RE
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/dc240.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-dc240.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-dc240.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_DC240
+If the library was compiled with debugging support enabled, this
+environment variable controls the debug level for this backend.
+A value of 128 requests maximally copious debug output; smaller
+levels reduce verbosity.
+
+.SH "SEE ALSO"
+sane(7)
+
+.SH AUTHOR
+Peter S. Fales
+
+.PP
+This backend borrows heavily from the dc210 backend by Brian J. Murrell
+which is based somewhat on the dc25 backend by Peter Fales.
+.PP
+The manpage was largely copied from the dc210 manpage.
+
+.SH BUGS
+The major limitation that I know of is that the backend assumes
+the directory in the camera is 100dc240. Once the camera has
+taken more than 9999 pictures, the directory will increment to 101dc240.
+Not only should we check for the additional directory, but pictures may
+actually be found in multiple directories.
+.PP
+More general comments, suggestions, and inquiries about frontends
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
+You must be subscribed to the list, otherwise your mail won't be
+sent to the subscribers.
+
diff --git a/doc/sane-dc25.man b/doc/sane-dc25.man
new file mode 100644
index 0000000..eabe765
--- /dev/null
+++ b/doc/sane-dc25.man
@@ -0,0 +1,99 @@
+.TH sane\-dc25 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-dc25
+.SH NAME
+sane\-dc25 \- SANE backend for Kodak DC20/DC25 Digital Cameras
+.SH DESCRIPTION
+The
+.B sane\-dc25
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Kodak DC20 and DC25 cameras. At present, only
+the DC25 has been tested, but since the code is based on a DC20
+interface program, it is likely to work for that model also.
+.SH "DEVICE NAMES"
+The current version of the backend only allows one camera to be
+connected. The device name is always "0".
+.SH CONFIGURATION
+The contents of the
+.I dc25.conf
+specify the serial port and baud rate to use. The baud rate
+specifies the maximum rate to use while downloading pictures. (The
+camera is always initialized using 9600 baud, then switches to the
+higher rate). On my 90MHz Pentium, I usually have no problems downloading
+at 115200 baud as long as the system is not excessively busy and
+the "interrupt-unmask flag" is set in the IDE driver (hdparm \-u1).
+Supported baud rates are: 9600, 19200, 38400, 57600, and 115200.
+.PP
+The dumpinquiry line causes some information about the camera to
+be printed to stderr during startup. Note: This is not compatible
+with saned, so make sure you don't have any dumpinquiry lines if you are
+using saned (i.e. scanning on a remote machine using a
+network).
+.PP
+Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+port=/dev/ttyS0
+.br
+# this is a comment
+.br
+baud=115200
+.br
+dumpinquiry
+.RE
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/dc25.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-dc25.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-dc25.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_DC25
+If the library was compiled with debugging support enabled, this
+environment variable controls the debug level for this backend.
+A value of 128 requests maximally copious debug output; smaller
+levels reduce verbosity.
+
+.SH "SEE ALSO"
+sane(7)
+
+.SH AUTHOR
+Peter Fales, dc25\-devel@fales\-lorenz.net
+
+.SH BUGS
+Known bugs/limitations are:
+.PP
+I haven't figured out how to trigger an option reload following a "scan."
+This causes problems when a new picture is snapped for example, the
+slider that is used to select the picture from the camera may not be
+updated immediately.
+.PP
+More general comments, suggestions, and inquiries about frontends
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
+You must be subscribed to the list, otherwise your mail won't be
+sent to the subscribers.
diff --git a/doc/sane-dll.man b/doc/sane-dll.man
new file mode 100644
index 0000000..54f9686
--- /dev/null
+++ b/doc/sane-dll.man
@@ -0,0 +1,178 @@
+.TH sane\-dll 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-dll
+.SH NAME
+sane\-dll \- SANE dynamic backend loader
+.SH DESCRIPTION
+The
+.B sane\-dll
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to an arbitrary number of other SANE backends. These
+backends may either be pre-loaded at the time the
+.B sane\-dll
+library is built or, on systems that support dynamic loading of shared
+libraries, the backends may be loaded at runtime. In the latter case,
+adding support for a new backend simply involves installing the
+relevant library in
+.I @LIBDIR@
+and adding an entry to the
+.I dll.conf
+configuration file. In other words, no applications need to be
+modified or recompiled to add support for new devices.
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.IR backend : device
+.RE
+.PP
+Where
+.I backend
+is the name of the backend and
+.I device
+is the name of the device in this backend that should be addressed.
+If the device name does not contain a colon (:), then the entire string
+is treated as the
+.I device
+string for the default backend. The default backend is the backend
+listed last in the configuration file (see below) or the first
+pre-loaded backend (if any).
+.SH CONFIGURATION
+The contents of the
+.I dll.conf
+file is a list of backend names that may be loaded dynamically upon demand.
+Empty lines are ignored, also everything after a hash mark (#). A sample
+configuration file is shown below:
+.PP
+.RS
+net
+.br
+# this is a comment
+.br
+pnm
+.br
+mustek
+.RE
+.PP
+It is also possible to add a file in
+.I @CONFIGDIR@/dll.d
+that contains the list of backends to be added. Backends mentioned in a
+file included in this directory will be added before any backends listed
+in
+.I dll.conf.
+Files in
+.I @CONFIGDIR@/dll.d
+can be freely named. They shall follow the format conventions as apply for
+.I dll.conf.
+
+.PP
+Note that backends that were pre-loaded when building this library do
+not have to be listed in this configuration file. That is, if a
+backend was preloaded, then that backend will always be present,
+regardless of whether it's listed in the configuration file or not.
+.PP
+The list of preloaded backends is determined by macro
+.B PRELOADABLE_BACKENDS
+in file backend/Makefile.in of the SANE source code distribution. After
+changing the value of this macro, it is necessary to reconfigure, rebuild,
+and reinstall SANE for the change to take effect.
+
+Aliases are defined in the config file
+.IR dll.aliases .
+It can contain entries of the form
+.PP
+.RS
+.br
+alias SomeName SaneDeviceName
+.br
+alias "Some Name" SaneDeviceName
+.br
+hide SaneDeviceName
+.RE
+.PP
+For example:
+
+.PP
+.RS
+.br
+alias Epson net:somehost:epson:/dev/sgX
+.br
+alias "Siemens ST400" st400:/dev/sgY
+.br
+hide net:somehost:pnm:0
+.br
+hide net:somehost:pnm:1
+.br
+alias "Read from file" pnm:0
+.br
+hide pnm:1
+.RE
+.PP
+
+Aliased device names are automatically hidden.
+
+The idea is that users don't have to deal with complicated device
+names (especially for networked devices), and to hide other exported
+devices which might confuse them. Note that a hidden device can still
+be accessed if the device name is known, it just doesn't appear on the
+list.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/dll.aliases
+The list of aliased or hidden backends.
+.TP
+.I @CONFIGDIR@/dll.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-dll.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-dll.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_DLL
+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.
+
+.ft CR
+.nf
+Value Description
+0 print severe errors only
+1 print normal errors and important messages
+2 print normal messages
+3 print debugging messages
+4 print everything
+.fi
+.ft R
+
+Example:
+export SANE_DEBUG_DLL=3
+
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR scanimage (1),
+.BR sane\-"backendname" (5)
+
+.SH AUTHOR
+David Mosberger
diff --git a/doc/sane-dmc.man b/doc/sane-dmc.man
new file mode 100644
index 0000000..1aba8f8
--- /dev/null
+++ b/doc/sane-dmc.man
@@ -0,0 +1,140 @@
+.TH sane\-dmc 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-dmc
+.SH NAME
+sane\-dmc \- SANE backend for the Polaroid Digital Microscope Camera
+.SH DESCRIPTION
+The
+.B sane\-dmc
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the Polaroid Digital Microscope Camera.
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the UNIX path-name for the special device that corresponds to the
+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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example.
+.SH IMAGING MODES
+The Polaroid DMC supports a number of imaging modes. This driver supports
+five of the imaging modes:
+.PP
+.TP
+.B Full Frame
+This mode corresponds to the 801-by-600 pixel full-color full-frame image.
+.TP
+.B Viewfinder
+This mode corresponds to the 270-by-201 pixel grey-scale viewfinder image.
+This image is acquired very quickly.
+.TP
+.B Raw
+This mode corresponds to the 1599-by-600 pixel "raw" image from the
+CCD. It is grey-scale, with pixels alternating horizontally between
+red, green and blue stripes. The pixels are twice as high as they are
+wide, so the image is distorted.
+.TP
+.B Thumbnail
+This mode corresponds to the 80-by-60 pixel full-color thumbnail image.
+.TP
+.B Super Resolution
+This image is a 1599-by-1200 pixel full-color image constructed by filtering
+and interpolating the "raw" image. The filtering and interpolation is
+done in software, so this mode is very slow. Also, this mode places
+restrictions on how the image is read which means that the "preview" mode
+of xscanimage does not work in Super Resolution mode. (xcam and the
+non-preview modes of scanimage and xscanimage work fine, however.)
+.PP
+.SH OTHER SETTINGS
+.TP
+.B ASA Setting
+This setting adjusts the camera's sensitivity. You can choose one of
+25, 50, or 100 "equivalent" ASA.
+.TP
+.B Shutter Speed
+You can select a shutter speed from 8 to 1000 milliseconds. The shutter
+speed is quantized in units of 32 microseconds.
+.TP
+.B White Balance
+You can choose one of "Daylight", "Incandescent" or "Fluorescent"
+white balances. This setting more-or-less corresponds to the
+"Color Temperature" settings on Polaroid's Windows and Mac software.
+.SH CONFIGURATION
+The contents of the
+.I dmc.conf
+file is a list of device names that correspond to DMC
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+/dev/scanner
+.br
+# this is a comment
+.br
+/dev/sge
+.RE
+.SH FILES
+.TP
+.I @CONFIGDIR@/dmc.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-dmc.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-dmc.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_DMC
+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.
+.SH BUGS
+In the "Full Frame" and "Raw" modes, images must be read in units
+of entire lines. The driver performs no buffering in these modes;
+if you ask sane_read to read a non-integral number of lines, it
+may read less than you ask for. If you ask sane_read to read
+less than a single line, it returns SANE_STATUS_INVAL.
+.PP
+In the "Super Resolution" mode, images must be read in units of
+\fItwo\fR lines (3198 pixels or 9594 bytes.) If you try to read less
+than two lines, you get SANE_STATUS_INVAL. The Super Resolution mode
+is very slow.
+.PP
+In the "Viewfinder" and "Thumbnail" modes, the entire image must
+be read in one SCSI transfer. In this case, the driver performs
+buffering and you can read the image in as small an increment as you
+like.
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.SH AUTHOR
+David F. Skoll
+.PP
+The backend is derived from
+.BR sane\-hp
+by David Mosberger
diff --git a/doc/sane-epjitsu.man b/doc/sane-epjitsu.man
new file mode 100644
index 0000000..1e201c0
--- /dev/null
+++ b/doc/sane-epjitsu.man
@@ -0,0 +1,109 @@
+.TH sane\-epjitsu 5 "09 Feb 2010" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-epjitsu
+
+.SH NAME
+sane\-epjitsu \- SANE backend for Epson-based Fujitsu USB scanners.
+
+.SH DESCRIPTION
+The
+.B sane\-epjitsu
+library implements a SANE (Scanner Access Now Easy) backend which provides basic access the Fujitsu fi\-60F and ScanSnap S300/S1300 scanners.
+
+.SH HARDWARE SUPPORT
+These scanners are fairly limited, only supporting a couple of modes and resolutions, and always scanning full width. The backend supports missing modes (binary, grayscale) in software, but makes no effort to offer intermediate resolutions or scan area controls. See
+.B KNOWN ISSUES.
+
+This backend may support other scanners. If physical inspection reveals an Epson chipset, please contact the author for instructions on collecting a USB trace under Windows to verify.
+
+.SH OPTIONS
+A limited effort has been made to expose the standard options to the API. This allows a frontend to set resolution, color mode, and choose the ADF setting. The epjitsu backend supports the following basic options for most scanners:
+.PP
+source s
+.RS
+Selects the source for the scan. Options may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
+.RE
+.PP
+mode m
+.RS
+Selects the mode for the scan. Options may include "Lineart", "Gray", "Color".
+.RE
+.PP
+resolution, y\-resolution
+.RS
+Controls scan resolution. Setting \-\-resolution also sets \-\-y\-resolution, though this behavior is overridden by some frontends.
+.RE
+.PP
+Other options will be available based on the capabilities of the scanner. Use 'scanimage \-\-help' to get a list. Be aware that some options may appear only when another option has been set, and that advanced options may be hidden by the frontend.
+.PP
+.SH CONFIGURATION FILE
+The configuration file "@CONFIGDIR@/epjitsu.conf" is used to tell the backend how to look for scanners, and provide options controlling the operation of the backend. This file is read each time the frontend asks the backend for a list of scanners, generally only when the frontend starts. If the configuration file is missing, the backend will not work.
+.PP
+Scanners can be specified in the configuration file in two ways:
+.PP
+"usb 0x04c5 0x10c7" (or other vendor/product ids)
+.RS
+Requests backend to search all usb busses in the system for a device which uses that vendor and product id. The device will then be queried to determine if it is a supported scanner.
+.RE
+.PP
+"usb /dev/usb/scanner0" (or other device file)
+.RS
+Some systems use a kernel driver to access usb scanners. This method is untested.
+.RE
+.PP
+The only configuration option supported is "firmware /PATH/TO/FILE", allowing you to set the location of the firmware file you have extracted from the Windows driver.
+.PP
+.B Note:
+This firmware is a copyrighted work of Fujitsu, so cannot be provided by the backend or the author. Please do not ask.
+.PP
+.B Note:
+These scanners REQUIRE a firmware file to function. See the supplied configuration file for more detail.
+.PP
+.B Note:
+This option may appear multiple times in the configuration file. It only applies to scanners discovered by 'usb' lines that follow this option.
+.PP
+
+.SH ENVIRONMENT
+The backend uses a single environment variable, SANE_DEBUG_EPJITSU, which enables debugging output to stderr. Valid values are:
+.PP
+.RS
+5 Errors
+.br
+10 Function trace
+.br
+15 Function detail
+.br
+20 Option commands
+.br
+25 USB trace
+.br
+30 USB detail
+.br
+35 Useless noise
+.RE
+
+.SH KNOWN ISSUES
+.PP
+.RS
+No scan area options are exposed.
+.br
+.br
+fi\-60F hardware grayscale mode is not used.
+.br
+.br
+The S1100 is not currently supported, but a patch is available.
+.RE
+
+.SH CREDITS
+S300 support funded by Microdea, Inc. and Archivista, GmbH.
+.br
+fi\-60F support funded by TrueCheck, Inc.
+.br
+Improved calibration code provided by Richard Goedeken.
+
+.SH "SEE ALSO"
+sane(7),
+sane\-usb(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-epson.man b/doc/sane-epson.man
new file mode 100644
index 0000000..3790df6
--- /dev/null
+++ b/doc/sane-epson.man
@@ -0,0 +1,306 @@
+.TH sane\-epson 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-epson
+.SH NAME
+sane\-epson \- SANE backend for EPSON scanners
+.SH DESCRIPTION
+The
+.B sane\-epson
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Epson flatbed scanners. Some functions of this
+backend should be considered
+.B beta-quality
+software! Most functions have been stable for a long time, but of
+course new development can not and often times will not function properly from
+the very first day. Please report any strange behavior to the
+maintainer of the backend.
+.PP
+At present, the following scanners are known to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Model: Connection Type
+--------------------------- -------------------
+GT-5000 SCSI, parallel
+GT-6000 parallel
+GT-6500 SCSI (use only the line "scsi" in epson.conf)
+ActionScanner II SCSI, parallel
+GT-7000 SCSI
+Perfection 636 SCSI
+Perfection 636U USB
+Perfection 610 USB
+Perfection 640 USB
+Perfection 1200S SCSI
+Perfection 1200U USB
+Perfection 1240 USB, SCSI
+Perfection 1640 USB, SCSI
+Perfection 1650 USB
+Perfection 1660 USB
+Perfection 2400 USB
+Perfection 2450 USB, IEEE-1394
+Expression 636 / GT-9500 SCSI
+Expression 1600 USB, SCSI, IEEE-1394
+Expression 1680 USB, SCSI, IEEE-1394
+CX-3200 USB
+CX-5200 USB
+.fi
+.ft R
+and many more. The official list is on the Sane web site.
+.RE
+
+For other scanners the software may or may not work. Please send mail to
+the backend author (khk@khk.net) to report success with scanners not on
+the list or problems with scanners that are listed.
+.SH OPTIONS
+The options the backend supports can either be selected through command line
+options to programs like scanimage or through GUI elements in programs like
+xscanimage or xsane.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d epson
+.RE
+Not all devices support all options.
+.TP
+.I Scan Mode
+The
+.I \-\-mode
+switch selects the basic mode of operation of the scanner. Valid choices
+are Binary, Gray and Color. The Binary mode is black and white only,
+Gray will produce 256 levels of gray or more depending on the scanner
+and Color means 24 bit color mode or more depending on the scanner.
+Some scanners will internally use 36 bit color, their external interface
+however may only support 24 bits.
+
+The
+.I \-\-depth
+option selects the bit depth the scanner is using. This option is only
+available for scanners that support more than one bit depth. Older
+scanners will always transfer the image in 8bit mode. Newer scanners
+allow to select either 8 bits, 12 or 14 bits per color channel. For a
+color scan this means an effective color depth of 36 or 42 bits over
+all three channels. The valid choices depend on the scanner model.
+
+The
+.I \-\-halftoning
+switch selects the mode that is used in Binary mode. Valid options
+are "None", "Halftone A (Hard Tone)", "Halftone B (Soft Tone)", "Halftone C
+(Net Screen)", "Dither A (4x4 Bayer)", "Dither B (4x4 Spiral)", "Dither C
+(4x4 Net Screen)", "Dither D (8x4 Net Screen)", "Text Enhanced Technology",
+"Download pattern A", and "Download pattern B".
+
+The
+.I \-\-dropout
+switch selects the so called dropout color. Vald options are None,
+Red, Green and Blue. The default is None. The dropout color is used for
+monochrome scanning and selects the color that is not scanned. This can
+be used to e.g. scan an original with a colored background.
+
+The
+.I \-\-brightness
+switch controls the brightness of the scan. Valid options are integer
+values from \-3 to 3. The default is 0. The larger the brightness value,
+the brighter the image gets. If a user defined table for the gamma
+correction is selected, the brightness parameter is not available.
+
+The
+.I \-\-sharpness
+switch sets the sharpness of the image data. Valid options are integer
+values from \-2 to 2, with \-2 meaning "Defocus", \-1 "Defocus slightly",
+0 "Normal", 1 "Sharpen slightly" and 2 "Sharpen".
+
+The
+.I \-\-gamma\-correction
+switch controls the scanner's internal gamma correction. Valid options are
+"Default", "User defined", "High density printing" "Low density printing"
+and "High contrast printing".
+
+The
+.I \-\-color\-correction
+switch controls the scanner's internal color correction function. Valid
+options are "No Correction", "Impact\-dot printers", "Thermal printers",
+"Ink\-jet printers" and "CRT monitors". The default is "CRT monitors".
+
+The
+.I \-\-resolution
+switch selects the resolution for a scan. Some EPSON scanners will scan in
+any resolution between the lowest and highest possible value. The list
+reported by the scanner can be displayed using the "\-\-help \-d epson"
+parameters to scanimage.
+
+The
+.I \-\-mirror
+option controls the way the image is scanned. By reading the image data
+from right to left the image is mirrored. Valid options are "yes" and
+"no". The default is "no".
+
+The
+.I \-\-speed
+option can improve the scan speed in monochrome mode. Valid options are
+"yes" or "no", the "yes" option will speed up the scan if this option
+is supported.
+
+The
+.I \-\-auto\-area\-segmentation
+switch activates the automatic area segmentation for monochrome scans. The
+scanner will try to determine which areas are text and which contain
+images. The image areas will be halftoned, and the text will be
+improved. Valid options are "yes" and "no". The default is "yes".
+
+The
+.I \-\-gamma\-table
+parameter can be used to download a user defined gamma table. The option
+takes 256 values from the range 0-255. In color mode this option equally
+affects the red, green, and blue channel.
+
+The
+.I \-\-red\-gamma\-table
+parameter can be used to download a user defined gamma table for the
+red channel. The valid options are the same as for \-\-gamma\-table.
+
+The
+.I \-\-green\-gamma\-table
+parameter can be used to download a user defined gamma table for the
+green channel. The valid options are the same as for \-\-gamma\-table.
+
+The
+.I \-\-blue\-gamma\-table
+parameter can be used to download a user defined gamma table for the
+blue channel. The valid options are the same as for \-\-gamma\-table.
+
+The color correction coefficients
+.I \-\-cct\-1 \-\-cct\-2 \-\-cct\-3 ... \-\-cct\-9
+will install color correction coefficients for the user defined color
+correction. Values are specified as integers in the range \-127..127.
+
+The
+.I \-\-preview
+option requests a preview scan. The frontend software automatically selects a low
+resolution. Valid options are "yes" and "no". The default is "no".
+
+The
+.I \-\-preview\-speed
+options will increase the scan speed if this is supported by the
+scanner. Valid options are "yes" and "no", the default is "no".
+
+
+The geometry options
+.I \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters.
+
+The
+.I \-\-quick\-format
+option lets the user select a scan area with predefined sizes. Valid
+parameters are "CD", "A5 portrait", "A5 landscape", "Letter", "A4" and
+"max". The default is "max", which selects the largest possible area.
+
+The
+.I \-\-source
+option selects the scan source. Valid options depend on the installed
+options. The default is "Flatbed".
+
+The
+.I \-\-auto\-eject
+option will eject a page after scanning from the document feeder.
+
+The
+.I \-\-film\-type
+option will select the film type for scans with the transparency
+unit. This option is only activated if the TPU is selected as scan
+source. Valid options are "Negative Film" and "Positive Film".
+
+The
+.I \-\-focus\-position
+option selects the focus position for all scans. Valid options are "Focus
+2.5mm above glass" and "Focus on glass". The focus on the 2.5mm point
+above the glass is necessary for scans with the transparency unit, so
+that the scanner can focus on the film if one of the film holders is used.
+This option is only functional for selected scanners, all other scanners
+will ignore this option.
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/epson.conf specifies the device(s) that the
+backend will use. Possible connection types are:
+.TP
+.I SCSI
+This is the default, and if nothing else is specified the backend software will
+open a given path as SCSI device. More information about valid syntax for SCSI
+devices can be found in sane\-scsi(5).
+.br
+Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
+some cases it may be necessary to only use the string "scsi" (e.g. for the GT-6500).
+.TP
+.I PIO \- Parallel Interface
+The parallel interface can be configured in two ways: An integer value starting
+at the beginning of a line will be interpreted as the IO address of the parallel
+port. To make it clearer that a configured IO address is a parallel port the
+port address can be preceded by the string "PIO". The PIO connection does not
+use a special device file in the /dev directory. The IO address can be specified
+in hex mode (prefixed with "0x").
+.TP
+.I USB
+A device file that is preceded by the string "USB" is treated as a scanner
+connected via the Universal Serial Bus. The correct special device file has
+to be created prior to using it with Sane. See the USB documentation for
+more information about how to set up the USB subsystem and the required
+device files.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-epson.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-epson.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_EPSON
+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.
+.TP
+.B SANE_DEBUG_EPSON_SCSI
+If the library was compiled with debug support enabled, this
+environment variable controls the SCSI related debug level for this backend.
+Only a value of 2 is supported.
+.TP
+.B SANE_EPSON_CMD_LVL
+This allows to override the function or command level that the backend
+uses to communicate with the scanner. The function level a scanner
+supports is determined during the initialization of the device. If
+the backend does not recognize the function level reported by the
+scanner it will default to function level B3. Valid function levels
+are A1, A2, B1, B2, B3, B4, B5, B6, B7, B8, D1 and F5. Use this feature
+only if you know what you are doing!
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1)
+
+.SH BUGS
+
+None :-) At least none are currently known.
+
+.SH UNSUPPORTED DEVICES
+The backend may be used with Epson scanners that are not yet listed
+under the list of supported devices. A scanner that is not recognized
+may default to the function level B3, which means that not all
+functions that the scanner may be capable of are accessible.
+
+If the scanner is not even recognized as an Epson scanner this is
+probably because the device name reported by the scanner is not in the
+correct format. Please send this information to the backend maintainer
+(email address is in the AUTHOR section of this man page or in the
+AUTHORS file of the SANE distribution).
+
+The Perfection 600, Perfection 650, Perfection 660, Perfection 1250 and
+Perfection 1260 are not supported by this backend.
+
+.SH AUTHOR
+
+The package is actively maintained by Karl Heinz Kremer (khk@khk.net). The
+software is based on work by Christian Bucher and Kazuhiro Sasayama
diff --git a/doc/sane-epson2.man b/doc/sane-epson2.man
new file mode 100644
index 0000000..27ee34e
--- /dev/null
+++ b/doc/sane-epson2.man
@@ -0,0 +1,358 @@
+.TH sane\-epson2 5 "22 Jan 2009" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-epson2
+.SH NAME
+sane\-epson2 \- SANE backend for EPSON scanners
+.SH DESCRIPTION
+The
+.B sane\-epson2
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Epson flatbed scanners. This library supports
+a similar set of scanners as the sane\-epson driver but was
+developed to support a wider range of connections to the scanner;
+include network access.
+.PP
+Because
+.B sane\-epson
+and
+.B sane\-epson2
+drivers support many of the same devices, if one
+driver gives you problems you may try disabling it to try the other.
+This can be done by removing the driver name from the
+.I dll.conf
+or perhaps by commenting out the options in
+.I epson.conf
+or
+.I epson2.conf.
+.PP
+At present, the following scanners are known to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Model: Connection Type
+--------------------------- -------------------
+ActionScanner II SCSI, parallel
+AcuLaser CX11 Series USB, Network
+AcuLaser CX21 Series USB, Network
+CX-3200 USB
+CX-3600 USB
+CX-3650 USB
+CX-4050 USB
+CX-4600 USB
+CX-4800 USB
+CX-5000 USB
+CX-5200 USB
+CX-5400 USB
+CX-6300 USB
+CX-6400 USB
+CX-6500 USB
+CX-6600 USB
+DX-3800 USB
+DX-5000 USB
+DX-5050 USB
+DX-6000 USB
+DX-7400 USB
+ES-300C SCSI, parallel
+ES-300GS SCSI
+ES-600C parallel
+ES-1200C parallel
+Expression 636 SCSI
+Expression 800 SCSI
+Expression 1600 USB, SCSI, IEEE-1394
+Expression 1680 USB, SCSI, IEEE-1394
+FilmScan 200 SCSI
+GT-5000 SCSI, parallel
+GT-5500 SCSI
+GT-6000 parallel
+GT-6500 parallel
+GT-7000 SCSI
+GT-8000 SCSI
+GT-8500 SCSI
+Perfection 610 USB
+Perfection 636S SCSI
+Perfection 636U USB
+Perfection 640 USB
+Perfection 1200S SCSI
+Perfection 1200U USB
+Perfection 1240 USB, SCSI
+Perfection 1640 USB, SCSI
+Perfection 1650 USB
+Perfection 1660 USB
+Perfection 2400 USB
+Perfection 2450 USB, IEEE-1394
+Perfection 3200 USB
+Perfection 4870 USB
+Perfection 4990 USB
+RX-425 USB
+RX-500 USB
+RX-600 USB
+RX-700 USB
+V700 USB, IEEE-1394
+V750 USB, IEEE-1394
+.fi
+.ft R
+and many more. The official list is on the Sane web site.
+.RE
+
+For other scanners the software may or may not work. Please send mail to
+the sane-backend mailing list to report success with scanners not on
+the list or problems with scanners that are listed.
+.SH OPTIONS
+The options the backend supports can either be selected through command line
+options to programs like scanimage or through GUI elements in programs like
+xscanimage or xsane.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d epson2
+.RE
+Not all devices support all options.
+.TP
+.I Scan Mode
+The
+.I \-\-mode
+switch selects the basic mode of operation of the scanner. Valid choices
+are Binary, Gray and Color. The Binary mode is black and white only,
+Gray will produce 256 levels of gray or more depending on the scanner
+and Color means 24 bit color mode or more depending on the scanner.
+Some scanners will internally use 36 bit color, their external interface
+however may only support 24 bits.
+
+The
+.I \-\-depth
+option selects the bit depth the scanner is using. This option is only
+available for scanners that support more than one bit depth. Older
+scanners will always transfer the image in 8bit mode. Newer scanners
+allow to select either 8 bits, 12 or 14 bits per color channel. For a
+color scan this means an effective color depth of 36 or 42 bits over
+all three channels. The valid choices depend on the scanner model.
+
+The
+.I \-\-halftoning
+switch selects the mode that is used in Binary mode. Valid options
+are "None", "Halftone A (Hard Tone)", "Halftone B (Soft Tone)", "Halftone C
+(Net Screen)", "Dither A (4x4 Bayer)", "Dither B (4x4 Spiral)", "Dither C
+(4x4 Net Screen)", "Dither D (8x4 Net Screen)", "Text Enhanced Technology",
+"Download pattern A", and "Download pattern B".
+
+The
+.I \-\-dropout
+switch selects the so called dropout color. Vald options are None,
+Red, Green and Blue. The default is None. The dropout color is used for
+monochrome scanning and selects the color that is not scanned. This can
+be used to e.g. scan an original with a colored background.
+
+The
+.I \-\-brightness
+switch controls the brightness of the scan. Valid options are integer
+values from \-3 to 3. The default is 0. The larger the brightness value,
+the brighter the image gets. If a user defined table for the gamma
+correction is selected, the brightness parameter is not available.
+
+The
+.I \-\-sharpness
+switch sets the sharpness of the image data. Valid options are integer
+values from \-2 to 2, with \-2 meaning "Defocus", \-1 "Defocus slightly",
+0 "Normal", 1 "Sharpen slightly" and 2 "Sharpen".
+
+The
+.I \-\-gamma\-correction
+switch controls the scanner's internal gamma correction. Valid options are
+"Default", "User defined", "High density printing" "Low density printing"
+and "High contrast printing".
+
+The
+.I \-\-color\-correction
+switch controls the scanner's internal color correction function. Valid
+options are "No Correction", "Impact\-dot printers", "Thermal printers",
+"Ink\-jet printers" and "CRT monitors". The default is "CRT monitors".
+
+The
+.I \-\-resolution
+switch selects the resolution for a scan. Some EPSON scanners will scan in
+any resolution between the lowest and highest possible value. The list
+reported by the scanner can be displayed using the "\-\-help \-d epson"
+parameters to scanimage.
+
+The
+.I \-\-threshold
+switch selects the minimum brightness to get a white point.
+
+The
+.I \-\-mirror
+option controls the way the image is scanned. By reading the image data
+from right to left the image is mirrored. Valid options are "yes" and
+"no". The default is "no".
+
+The
+.I \-\-auto\-area\-segmentation
+switch activates the automatic area segmentation for monochrome scans. The
+scanner will try to determine which areas are text and which contain
+images. The image areas will be halftoned, and the text will be
+improved. Valid options are "yes" and "no". The default is "yes".
+
+The
+.I \-\-red\-gamma\-table
+parameter can be used to download a user defined gamma table for the
+red channel. The valid options are the same as for \-\-gamma\-table.
+
+The
+.I \-\-green\-gamma\-table
+parameter can be used to download a user defined gamma table for the
+green channel. The valid options are the same as for \-\-gamma\-table.
+
+The
+.I \-\-blue\-gamma\-table
+parameter can be used to download a user defined gamma table for the
+blue channel. The valid options are the same as for \-\-gamma\-table.
+
+The
+.I --wait-for-button
+parameter can be used to wait until the button on the scanner is
+pressed to actually start the scan process.
+
+The color correction coefficients
+.I \-\-cct\-1 \-\-cct\-2 \-\-cct\-3 ... \-\-cct\-9
+will install color correction coefficients for the user defined color
+correction. Values are specified as integers in the range \-127..127.
+
+The
+.I \-\-preview
+option requests a preview scan. The frontend software automatically selects a low
+resolution. Valid options are "yes" and "no". The default is "no".
+
+The geometry options
+.I \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters.
+
+The
+.I \-\-source
+option selects the scan source. Valid options depend on the installed
+options. The default is "Flatbed".
+
+The
+.I \-\-auto\-eject
+option will eject a page after scanning from the document feeder.
+
+The
+.I \-\-film\-type
+option will select the film type for scans with the transparency
+unit. This option is only activated if the TPU is selected as scan
+source. Valid options are "Negative Film" and "Positive Film".
+
+The
+.I \-\-focus\-position
+option selects the focus position for all scans. Valid options are "Focus
+2.5mm above glass" and "Focus on glass". The focus on the 2.5mm point
+above the glass is necessary for scans with the transparency unit, so
+that the scanner can focus on the film if one of the film holders is used.
+This option is only functional for selected scanners, all other scanners
+will ignore this option.
+
+The
+.I \-\-bay
+option selects which bay to scan
+
+The
+.I \-\-eject
+option ejects the sheet in the ADF.
+
+The
+.I \-\-adf-mode
+option select the ADF mode (simplex/duplex).
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/epson2.conf specifies the device(s) that the
+backend will use. Possible connection types are:
+.TP
+.I SCSI
+This is the default, and if nothing else is specified the backend software will
+open a given path as SCSI device. More information about valid syntax for SCSI
+devices can be found in sane\-scsi(5).
+.br
+Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
+some cases it may be necessary to only use the string "scsi" (e.g. for the GT-6500).
+.TP
+.I PIO \- Parallel Interface
+The parallel interface can be configured in two ways: An integer value starting
+at the beginning of a line will be interpreted as the IO address of the parallel
+port. To make it clearer that a configured IO address is a parallel port the
+port address can be preceded by the string "PIO". The PIO connection does not
+use a special device file in the /dev directory. The IO address can be specified
+in hex mode (prefixed with "0x").
+.TP
+.I USB
+For USB scanners not automatically detect, their VENDOR and PRODUCT ID can
+be specified manually in the config file.
+More information about valid syntax for USB devices can be found in sane\-usb(5).
+.TP
+.I Network
+Network scanners can be auto-discovered if
+.I autodiscovery
+is specified after
+.I
+net
+keyword. An IP address to connect to can also be used.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-epson2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-epson2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_EPSON2
+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.
+.TP
+.B SANE_DEBUG_EPSON2_SCSI
+If the library was compiled with debug support enabled, this
+environment variable controls the SCSI related debug level for this backend.
+Only a value of 2 is supported.
+.TP
+.B SANE_DEBUG_EPSON2_NET
+If the library was compiled with debug support enabled, this
+environment variable controls the network related debug level for this
+backend. E.g., a value of 128 requests all debug output to be printed.
+Smaller levels reduce verbosity.
+.TP
+.B SANE_EPSON2_CMD_LVL
+This allows to override the function or command level that the backend
+uses to communicate with the scanner. The function level a scanner
+supports is determined during the initialization of the device. If
+the backend does not recognize the function level reported by the
+scanner it will default to function level B3. Valid function levels
+are A1, A2, B1, B2, B3, B4, B5, B6, B7, B8, D1 and F5. Use this feature
+only if you know what you are doing!
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), sane\-usb(5), scanimage(1), xscanimage(1), xsane(1)
+
+.SH BUGS
+
+None :-) At least none are currently known.
+
+.SH UNSUPPORTED DEVICES
+The backend may be used with Epson scanners that are not yet listed
+under the list of supported devices. A scanner that is not recognized
+may default to the function level B3, which means that not all
+functions that the scanner may be capable of are accessible.
+
+If the scanner is not even recognized as an Epson scanner this is
+probably because the device name reported by the scanner is not in the
+correct format. Please send this information to the backend maintainer
+(email address is in the AUTHOR section of this man page or in the
+AUTHORS file of the SANE distribution).
+
+.SH AUTHOR
+
+The package is written by Alessandro Zummo and is based on previous
+work done by Karl Hienz Kremer in the epson package as well as based
+on work by Christian Bucher and Kazuhiro Sasayama
diff --git a/doc/sane-find-scanner.man b/doc/sane-find-scanner.man
new file mode 100644
index 0000000..da2d377
--- /dev/null
+++ b/doc/sane-find-scanner.man
@@ -0,0 +1,134 @@
+.TH sane\-find\-scanner 1 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-find\-scanner
+.SH NAME
+sane\-find\-scanner \- find SCSI and USB scanners and their device files
+.SH SYNOPSIS
+.B sane\-find\-scanner
+.RB [ \-h | \-? ]
+.RB [ \-v ]
+.RB [ \-q ]
+.RB [ \-p ]
+.RB [ \-f ]
+.RB [ \-F
+.IR filename ]
+.RI [ devname ]
+
+.SH DESCRIPTION
+.B sane\-find\-scanner
+is a command-line tool to find SCSI and USB scanners and determine their Unix
+device files. Its primary aim is to make sure that scanners can be detected by
+SANE backends.
+.PP
+For
+.B SCSI
+scanners, it checks the default generic SCSI device files (e.g.,
+.IR /dev/sg0 )
+and
+.IR /dev/scanner .
+The test is done by sending a SCSI inquiry command and looking for a device
+type of "scanner" or "processor" (some old HP scanners seem to send
+"processor"). So
+.B sane\-find\-scanner
+will find any SCSI scanner connected to those default device files even if it
+isn't supported by any SANE backend.
+.PP
+For
+.B USB
+scanners, first the USB kernel scanner device files (e.g.
+.IR /dev/usb/scanner0 ),
+.IR /dev/usb/scanner ,
+and
+.IR /dev/usbscanner )
+are tested. The files are opened and the vendor and device ids are determined,
+if the operating system supports this feature. Currently USB scanners are only
+found this way if they are supported by the Linux scanner module or the
+FreeBSD or OpenBSD uscanner driver. After that test,
+.B sane\-find\-scanner
+tries to scan for USB devices found by the USB library libusb (if
+available). There is no special USB class for scanners, so the heuristics used
+to distinguish scanners from other USB devices is not
+perfect.
+.B sane\-find\-scanner
+also tries to find out the type of USB chip used in the scanner. If detected,
+it will be printed after the vendor and product ids.
+.B sane\-find\-scanner
+will even find USB scanners, that are not supported by any SANE backend.
+.PP
+.B sane\-find\-scanner
+won't find most
+parallel port scanners, or scanners connected to proprietary ports. Some
+.B parallel port
+scanners may be detected by
+.B sane\-find\-scanner -p.
+At the time of writing this will only detect Mustek parallel port scanners.
+
+.SH OPTIONS
+.TP 8
+.B \-h, \-?
+Prints a short usage message.
+.TP 8
+.B \-v
+Verbose output. If used once,
+.B sane\-find\-scanner
+shows every device name and the test result. If used twice, SCSI inquiry
+information and the USB device descriptors are also printed.
+.TP 8
+.B \-q
+Be quiet. Print only the devices, no comments.
+.TP 8
+.B \-p
+Probe parallel port scanners.
+.TP 8
+.B \-f
+Force opening all explicitly given devices as SCSI and USB devices. That's
+useful if
+.B sane\-find\-scanner
+is wrong in determining the device type.
+.TP 8
+.B \-F filename
+filename is a file that contains USB descriptors in the format of
+/proc/bus/usb/devices as used by Linux.
+.B sane\-find\-scanner
+tries to identify the chipset(s) of all USB scanners found in such a file. This
+option is useful for developers when the output of "cat /proc/bus/usb/devices"
+is available but the scanner itself isn't.
+.TP 8
+.B devname
+Test device file "devname". No other devices are checked if devname is given.
+.SH EXAMPLE
+.B sane\-find\-scanner \-v
+.br
+Check all SCSI and USB devices for available scanners and print a line for
+every device file.
+.PP
+.B sane\-find\-scanner /dev/scanner
+.br
+Look for a (SCSI) scanner only at /dev/scanner and print the result.
+.PP
+.B sane\-find\-scanner \-p
+.br
+Probe for parallel port scanners.
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-scsi (5),
+.BR sane\-usb (5),
+.BR scanimage (1),
+.BR xscanimage (1),
+.BR xsane (1),
+.BR sane\-"backendname" (5)
+
+.SH AUTHOR
+Oliver Rauch, Henning Meier-Geinitz and others
+.SH SUPPORTED PLATFORMS
+USB support is limited to Linux (kernel, libusb), FreeBSD (kernel,
+libusb), NetBSD (libusb), OpenBSD (kernel, libusb). Detecting the vendor and
+device ids only works with Linux or libusb.
+.PP
+SCSI support is available on Irix, EMX, Linux, Next, AIX, Solaris, FreeBSD,
+NetBSD, OpenBSD, and HP-UX.
+
+.SH BUGS
+No support for most parallel port scanners yet.
+.br
+Detection of USB chipsets is limited to a few chipsets.
+
diff --git a/doc/sane-fujitsu.man b/doc/sane-fujitsu.man
new file mode 100644
index 0000000..e996802
--- /dev/null
+++ b/doc/sane-fujitsu.man
@@ -0,0 +1,236 @@
+.TH sane\-fujitsu 5 "17 Sep 2013" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-fujitsu
+
+.SH NAME
+sane\-fujitsu \- SANE backend for Fujitsu flatbed and ADF scanners
+
+.SH DESCRIPTION
+The
+.B sane\-fujitsu
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to most Fujitsu flatbed and ADF scanners.
+
+This document describes backend version 117, which shipped with SANE 1.0.24.
+
+.SH SUPPORTED HARDWARE
+This version supports every known model which speaks the Fujitsu SCSI and
+SCSI\-over\-USB protocols. Specifically, the SCSI M309x and M409x series, the
+SCSI fi\-series, most of the USB fi\-series, the USB ScanSnap S5xx/S15xx, and
+the USB iX5xx series scanners are supported. Please see the list at
+http://www.sane\-project.org/sane\-supported\-devices.html for details.
+
+This backend may support other Fujitsu scanners. The best
+way to determine level of support is to test the scanner directly,
+or to collect a trace of the windows driver in action.
+Please contact the author for help or with test results.
+
+.SH UNSUPPORTED HARDWARE
+The following scanners are known NOT to work with this backend,
+either because they have a non\-fujitsu chipset, or an unsupported
+interface type. Some of these scanners may be supported by another
+backend.
+.PP
+.RS
+.ft CR
+.nf
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+SCSI: SERIAL: USB:
+\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-
+ScanStation M3093E/DE/EX fi\-4110EOX/2
+ScanPartner M3096EX fi\-4010CU
+SP\-Jr M3097E+/DE S300/S300M
+SP\-10/10C M3099A/EH/EX S1300/S1100
+SP\-15C/300C fi\-60F
+SP\-600C/620C fi\-5015C
+.fi
+.ft R
+.RE
+.P
+
+.SH OPTIONS
+Effort has been made to expose all hardware options, including:
+.PP
+source s
+.RS
+Selects the source for the scan. Options
+may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
+.RE
+.PP
+mode m
+.RS
+Selects the mode for the scan. Options
+may include "Lineart", "Halftone", "Gray", and "Color".
+.RE
+.PP
+resolution, y\-resolution
+.RS
+Controls scan resolution. Setting \-\-resolution also sets \-\-y\-resolution,
+though this behavior is overridden by some frontends.
+.RE
+.PP
+tl\-x, tl\-y, br\-x, br\-y
+.RS
+Sets scan area upper left and lower right coordinates. These are renamed
+t, l, x, y by some frontends.
+.RE
+.PP
+page\-width, page\-height
+.RS
+Sets paper size. Used by scanner to determine centering of scan
+coordinates when using ADF and to detect double feed errors.
+.RE
+.PP
+Other options will be available based on the capabilities of the scanner:
+machines with IPC or DTC will have additional enhancement options, those
+with CMP will have compression options, those with a printer will have a
+group of endorser options.
+
+Additionally, several 'software' options are exposed by the backend. These
+are reimplementations of features provided natively by larger scanners, but
+running on the host computer. This enables smaller machines to have similar
+capabilities. Please note that these features are somewhat simplistic, and
+may not perform as well as the native implementations. Note also that these
+features all require that the driver cache the entire image in memory. This
+will almost certainly result in a reduction of scanning speed.
+
+Use 'scanimage \-\-help' to get a list, but be aware that some options may
+be settable only when another option has been set, and that advanced options
+may be hidden by some frontend programs.
+.PP
+.SH CONFIGURATION FILE
+The configuration file "fujitsu.conf" is used to tell the backend how to look
+for scanners, and provide options controlling the operation of the backend.
+This file is read each time the frontend asks the backend for a list
+of scanners, generally only when the frontend starts. If the configuration
+file is missing, the backend will be unable to locate any scanners.
+.PP
+Scanners can be specified in the configuration file in 4 ways:
+.PP
+"scsi FUJITSU"
+.RS
+Requests backend to search all scsi busses in the system for a device
+which reports itself to be a scanner made by 'FUJITSU'.
+.RE
+.PP
+"scsi /dev/sg0" (or other scsi device file)
+.RS
+Requests backend to open the named scsi device. Only useful if you have
+multiple compatible scanners connected to your system, and need to
+specify one. Probably should not be used with the other "scsi" line above.
+.RE
+.PP
+"usb 0x04c5 0x1042" (or other vendor/product ids)
+.RS
+Requests backend to search all usb busses in the system for a device
+which uses that vendor and product id. The device will then be queried
+to determine if it is a Fujitsu scanner.
+.RE
+.PP
+"usb /dev/usb/scanner0" (or other device file)
+.RS
+Some systems use a kernel driver to access usb scanners. This method is
+untested.
+.RE
+.PP
+The only configuration option supported is "buffer\-size=xxx", allowing you
+to set the number of bytes in the data buffer to something other than the
+compiled\-in default, 65536 (64K). Some users report that their scanner will
+"hang" mid\-page, or fail to transmit the image if the buffer is not large
+enough.
+.PP
+Note: This option may appear multiple times in the configuration file. It only
+applies to scanners discovered by 'scsi/usb' lines that follow this option.
+.PP
+Note: The backend does not place an upper bound on this value, as some users
+required it to be quite large. Values above the default are not recommended,
+and may crash your OS or lockup your scsi card driver. You have been
+warned.
+.PP
+
+.SH ENVIRONMENT
+The backend uses a single environment variable, SANE_DEBUG_FUJITSU, which
+enables debugging output to stderr. Valid values are:
+.PP
+.RS
+5 Errors
+.br
+10 Function trace
+.br
+15 Function detail
+.br
+20 Option commands
+.br
+25 SCSI/USB trace
+.br
+30 SCSI/USB writes
+.br
+31 SCSI/USB reads
+.br
+35 Useless noise
+.RE
+
+.SH KNOWN ISSUES
+Flatbed units may fail to scan at maximum area, particularly at
+high resolution.
+.PP
+Any model that does not support VPD during inquiry will not function until
+an override is added to the backend.
+.PP
+CCITT Fax compression used by older scanners is not supported.
+.PP
+JPEG output is supported by the backend, but not by the SANE protocol, so is
+disabled in this release. It can be enabled if you rebuild from source.
+
+.SH CREDITS
+m3091 backend: Frederik Ramm <frederik a t remote d o t org>
+.br
+m3096g backend: Randolph Bentson <bentson a t holmsjoen d o t com>
+.br
+ (with credit to the unnamed author of the coolscan driver)
+.br
+fujitsu backend, m3093, fi\-4340C, ipc, cmp, long\-time maintainer:
+.br
+ Oliver Schirrmeister <oschirr a t abm d o t de>
+.br
+m3092: Mario Goppold <mgoppold a t tbzpariv d o t tcc\-chemnitz dot de>
+.br
+fi\-4220C and basic USB support: Ron Cemer <ron a t roncemer d o t com>
+.br
+fi\-4120, fi\-series color, backend re\-write, jpeg, current maintainer:
+ m. allan noah: <kitno455 a t gmail d o t com>
+
+JPEG output and low memory usage support funded by:
+ Archivista GmbH
+ www.archivista.ch
+
+Endorser support funded by:
+ O A S Oilfield Accounting Service Ltd
+ 1500, 840 \- 7th Avenue S.W.
+ Calgary, Alberta
+ T2P 3G2 Canada
+ 1\-403\-263\-2600
+ www.oas.ca
+
+Automatic length detection support funded by:
+ Martin G. Miller
+ mgmiller at optonline.net
+
+Hardware donated, software image enhancement and fi-6xxx support funded by:
+ Fujitsu Computer Products of America, Inc.
+ www.fcpa.com
+
+iX500 support funded by:
+ Prefix Computer Services
+ www.prefixservice.com
+
+.SH "SEE ALSO"
+sane(7),
+sane\-scsi(5),
+sane\-usb(5),
+sane\-sp15c(5),
+sane\-avision(5),
+sane\-epjitsu(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-genesys.man b/doc/sane-genesys.man
new file mode 100644
index 0000000..0cd1ffb
--- /dev/null
+++ b/doc/sane-genesys.man
@@ -0,0 +1,304 @@
+.TH "sane\-genesys" "5" "4 Jul 2012" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-genesys
+.SH "NAME"
+sane\-genesys \- SANE backend for GL646, GL841, GL843, GL847 and GL124 based USB flatbed scanners
+.SH "DESCRIPTION"
+The
+.B sane\-genesys
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to USB flatbed scanners based on the Genesys GL646, GL841, GL843, GL847 and GL124 chips.
+At present, the following scanners are known to work with this backend:
+.PP
+.RS
+Canon LiDE 35/40/50/60/100/110/200/210/700
+.br
+Hewlett-Packard HP2300C/HP2400/HP3670/HP3690/G4010/G4050
+.br
+Medion MD5345/MD6228/MD6274
+.br
+Panasonic KV-SS080
+.br
+Plustek OpticBook 3600
+.br
+Pentax DSmobile 600
+.br
+Syscan/Ambir DocketPORT 467/485/487/665/685
+.br
+Visioneer OneTouch 7100/Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
+.br
+Xerox Travel Scanner 100, OneTouch 2400
+.RE
+
+.PP
+This is stable software for supported models. But if you test new or untested scanners, keep
+your hand at the scanner's plug and unplug it, if the head bumps at the end of
+the scan area.
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let me know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to the sane\-devel mailing list. Even if the scanner's name is only
+slightly different from the models mentioned above, please let me know.
+.PP
+If you own a scanner that isn't detected by the genesys backend but has a GL646,
+GL841, GL843, GL847 or GL124 chipset, you can try to add it to the backend.
+.PP
+.SH "CALIBRATION"
+To give correct image quality, sheet fed scanners need to be calibrated using the
+calibration sheet sold with the scanner. To do calibration, you must insert this target
+in the feeder then start calibration either by passing the --calibrate option to scanimage
+or by clicking on the available 'calibrate' button in the 'advanced options' in a graphical
+frontend. The result of the calibration is stored in a file in the home directory of the user doing it.
+If you plug the scanner in another machine or use it with another account, calibration
+will have to be redone.
+
+.SH EXTRAS SCAN OPTIONS
+
+.B \-\-lamp\-off\-time number
+.RS
+ The lamp will be turned off after the given time (in minutes). A value of 0 means that the lamp won't be turned off.
+.RE
+
+.B \-\-threshold percent
+.RS
+ 0..100% (in steps of 1). Select minimum brightness to get a white point. Pixels
+whith brightness below that value will be scanned as black.
+.RE
+
+.B \-\-brightness value
+.RS
+ -100..100 (in steps of 1). Set the brightness enhancement. 0 for no enhancement, negative
+values to decrease brigthness, and positive values to increase it.
+.RE
+
+.B \-\-contrast value
+.RS
+ -100..100 (in steps of 1). Set the contrast enhancement. 0 for no enhancement, negative
+values to decrease contrast, and positive values to increase it.
+.RE
+
+.B \-\-disable-interpolation yes|no
+.RS
+ When using high resolutions where the horizontal resolution is smaller than vertical resolution,
+data is expanded by software to preserve picture geometry. This can be disabled by this option to get
+real scanned data.
+.RE
+
+.B \-\-disable-dynamic-lineart yes|no
+.RS
+ Disable use of a software adaptive algorithm to generate lineart and rely on hardware lineart.
+.RE
+
+.B \-\-color-filter None|Red|Green|Blue
+.RS
+ When using gray or lineart this option selects the used color. Using a color filter
+will give a monochrome scan. CIS based scanners can to true gray when no filter (None value) is
+selected.
+.RE
+
+.B \-\-lamp\-off\-scan
+.RS
+ The lamp will be turned off during the scan. Calibration is still done with lamp on.
+.RE
+
+.B \-\-clear\-calibration
+.RS
+ Clear calibration cache data, triggering a new calibration for the device when the
+next scan will happen.
+.RE
+
+.B \-\-calibration\-file
+.RS
+ Specify the calibration file name to use. At least the directory containing the file
+must exist, since it won't be created. This allow to handle the case of several identical devices
+that would otherwise use the same calibration data. This option is disabled if the backend is ran
+as root.
+.RE
+
+.PP
+Additionally, several 'software' options are exposed by the backend. These
+are reimplementations of features provided natively by larger scanners, but
+running on the host computer. This enables smaller machines to have similar
+capabilities. Please note that these features are somewhat simplistic, and
+may not perform as well as the native implementations. Note also that these
+features all require that the driver cache the entire image in memory. This
+will almost certainly result in a reduction of scanning speed.
+.PP
+.B \-\-swcrop
+.RS
+ Requests the driver to detect the extremities of the paper within the larger
+image, and crop the empty edges.
+.RE
+.PP
+.B \-\-swdeskew
+.RS
+ Requests the driver to detect the rotation of the paper within the larger
+image, and counter the rotation.
+.RE
+.PP
+.B \-\-swdespeck \-\-despeck X
+.RS
+ Requests the driver to find and remove dots of X diameter or smaller from the
+image, and fill the space with the average surrounding color.
+.RE
+.PP
+.B \-\-swskip 0..100% (in steps of 1) [0]
+.RS
+ Request driver to discard pages with low numbers of dark pixels.
+.RE
+.PP
+.B \-\-swderotate[=(yes|no)] [no]
+.RS
+ Request driver to detect and correct 90 degree image rotation.
+
+.PP
+.SH "SYSTEM ISSUES"
+This backend needs libusb-0.1.6 or later installed, and hasn't tested in other
+configuration than a linux kernel 2.6.9 or higher. However, it should work any
+system with libusb where the SANE package can be compiled. For
+setting permissions and general USB information look at
+.BR sane\-usb (5).
+
+
+.SH "CONFIGURATION"
+The contents of the
+.I genesys.conf
+file is a list of usb lines containing vendor and product ids that correspond
+to USB scanners. The file can also contain option lines. Empty lines and
+lines starting with a hash mark (#) are ignored. The scanners are
+autodetected by
+.B usb vendor_id product_id
+statements which are already included into
+.IR genesys.conf .
+"vendor_id" and "product_id" are hexadecimal numbers that identify the
+scanner.
+.PP
+
+.SH "FILES"
+.TP
+.I @CONFIGDIR@/genesys.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-genesys.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-genesys.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH "ENVIRONMENT"
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_GENESYS
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend. Higher debug levels
+increase the verbosity of the output. If the debug level is set to 1 or higher,
+some debug options become available that are normally hidden. Handle them with
+care. This will print messages related to core genesys functions.
+.TP
+.B SANE_DEBUG_GENESYS_LOW
+This environment variable controls the debug level for low level functions
+common to all genesys ASICs.
+.TP
+.B SANE_DEBUG_GENESYS_GL646
+This environment variable controls the debug level for the specific GL646 code
+part.
+.TP
+.B SANE_DEBUG_GENESYS_GL841
+This environment variable controls the debug level for the specific GL841 code
+part.
+.TP
+.B SANE_DEBUG_GENESYS_GL843
+This environment variable controls the debug level for the specific GL843 code
+part.
+.TP
+.B SANE_DEBUG_GENESYS_GL847
+This environment variable controls the debug level for the specific GL847 code
+part.
+.TP
+.B SANE_DEBUG_GENESYS_GL124
+This environment variable controls the debug level for the specific GL124 code
+part.
+
+
+Example (full and highly verbose output for gl646):
+.br
+export SANE_DEBUG_GENESYS=255
+.br
+export SANE_DEBUG_GENESYS_LOW=255
+.br
+export SANE_DEBUG_GENESYS_GL646=255
+
+.SH CREDITS
+
+Jack McGill for donating several sheetfed and flatbed scanners, which made possible to add support
+for them in the genesys backend:
+.RS
+Hewlett-Packard HP3670
+.br
+Visioneer Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
+.br
+Canon LiDE 200
+.br
+Pentax DSmobile 600
+.br
+Syscan/Ambir DocketPORT 467/485/487/665/685
+.br
+Xerox Travel Scanner 100, Onetouch 2400
+.RE
+.TP
+cncsolutions (http://www.cncsolutions.com.br) sponsored and supported the work on the Panasonic KV-SS080.
+.br
+.TP
+Brian Paavo from Benthic Science Limited for donating a Canoscan LiDE 700F.
+.br
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5)
+.br
+
+
+.SH "AUTHOR"
+Oliver Rauch
+.br
+Henning Meier-Geinitz <henning@meier\-geinitz.de>
+.br
+Gerhard Jaeger <gerhard@gjaeger.de>
+.br
+St\['e]phane Voltz <stef.dev@free.fr>
+.br
+Philipp Schmid <philipp8288@web.de>
+.br
+Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+.br
+Alexey Osipov <simba@lerlan.ru> for HP2400 final support
+
+.SH "LIMITATIONS"
+
+Powersaving isn't implemented for gl646 based scanner. Dynamic (emulated from gray data and with dithering) isn't enabled for gl646 scanners. Hardware lineart is limited up to 600 dpi for gl847 based scanners, due to the way image sensors are built.
+.br
+.TP
+This backend will be much slower if not using libusb-1.0. So be sure that sane-backends is built with the --enable-libusb_1_0 option.
+.br
+
+.SH "BUGS"
+For the LiDE 200, the scanned data at 4800 dpi is obtained "as is" from sensor. It seems the windows driver does some digital processing
+to improve it, which is not implemented in the backend.
+.PP
diff --git a/doc/sane-gphoto2.man b/doc/sane-gphoto2.man
new file mode 100644
index 0000000..ef8141f
--- /dev/null
+++ b/doc/sane-gphoto2.man
@@ -0,0 +1,118 @@
+.TH sane\-gphoto2 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-gphoto2
+.SH NAME
+sane\-gphoto2 \- SANE backend for gphoto2 supported cameras
+.SH DESCRIPTION
+The
+.B sane\-gphoto2
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the digital cameras supported by gphoto2.
+This backend has only been tested with a handful of cameras so far. Patches
+to support other models are welcome.
+.PP
+Because of the limited testing of this backend, it is commented out
+in @CONFIGDIR@/dll.conf by default. Either the comment
+character must be removed or the backend must be called explicitly.
+E.g. `scanimage \-d gphoto2' or `xscanimage gphoto2'.
+.SH "DEVICE NAMES"
+The current version of the backend only allows one camera to be
+connected. The device name is always "0".
+.SH CONFIGURATION
+The contents of the
+.I gphoto2.conf
+specify the characteristics of the camera to be used. Resolutions
+(high resolution, low resolution, and thumbnail size) are
+required since they are needed by the sane frontends, but can't be obtained
+through the gphoto2 interface. Valid ports and cameras can be obtained
+by "gphoto2 \-\-list\-cameras" and "gphoto2 \-\-list\-ports".
+.PP
+The dumpinquiry line causes some information about the camera to
+be printed.
+.PP
+Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+The "topfolder" line specifies the "fixed" part of the file path. For
+example, on the Kodak DC-240, files are stored in the directory
+/DCIM/100DC240. The /DCIM portion is constant, but 100DC240 will
+change and must be read from the camera. In this case, the
+line would read "topfolder=/DCIM"
+.PP
+Some cameras don't implement a file structure and store all pictures
+in the "/" directory. This is indicated by setting "subdirs=0" with
+"topfolder=/"
+.PP
+.RS
+port=usb:
+.br
+camera=Kodak DC240
+.br
+# this is a comment
+.br
+high_resolution=1280x960
+.br
+low_resolution=640x480
+.br
+thumb_resolution=160x120
+.br
+dumpinquiry
+.RE
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/gphoto2.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-gphoto2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-gphoto2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_GPHOTO2
+If the library was compiled with debugging support enabled, this
+environment variable controls the debug level for this backend.
+A value of 128 requests maximally copious debug output; smaller
+levels reduce verbosity.
+.TP
+.B GP_DEBUG
+Set to 1, 2, or 3, to enable various levels of debugging within the
+gphoto2 libraries.
+
+.SH "SEE ALSO"
+sane(7)
+
+.SH AUTHOR
+Peter S. Fales
+
+.PP
+The manpage was largely copied from the dc210 manpage.
+
+.SH BUGS
+Many, no doubt.
+.PP
+More general comments, suggestions, and inquiries about frontends
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
+You must be subscribed to the list, otherwise your mail won't be
+sent to the subscribers.
+
diff --git a/doc/sane-gt68xx.man b/doc/sane-gt68xx.man
new file mode 100644
index 0000000..4296ed4
--- /dev/null
+++ b/doc/sane-gt68xx.man
@@ -0,0 +1,218 @@
+.TH sane\-gt68xx 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-gt68xx
+.SH NAME
+sane\-gt68xx \- SANE backend for GT-68XX based USB flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-gt68xx
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to USB flatbed scanners based on the Grandtech GT-6801 and GT-6816
+chips. A list of supported scanners can be found on the gt68xx backend
+homepage:
+.IR http://www.meier\-geinitz.de/sane/gt68xx\-backend/ .
+.PP
+This is BETA software. Especially if you test new or untested scanners, keep
+your hand at the scanner's plug and unplug it, if the head bumps at the end of
+the scan area.
+.PP
+If you own a scanner other than the ones listed on the gt68xx homepage that works with this
+backend, please let me know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.I sane\-find\-scanner
+or syslog) to me. Even if the scanner's name is only slightly different from
+the models already listed as supported, please let me know.
+.PP
+If you own a scanner that isn't detected by the gt68xx backend but has a GT-6801
+or GT-6816 chipset, you can try to add it to the backend. Have a look at the
+following web page:
+.I http://www.meier\-geinitz.de/sane/gt68xx\-backend/adding.html
+.PP
+.SH LIBUSB ISSUES
+Please use libusb-0.1.8 or later. Without libusb or with older libusb versions
+all kinds of trouble can be expected. The scanner should be found by
+sane\-find\-scanner without further actions. For setting permissions and general
+USB information looks at
+.BR sane\-usb (5).
+.PP
+
+.SH FIRMWARE FILE
+You need a firmware file for your scanner. That's a small file containing
+software that will be uploaded to the scanner's memory. It's usually named
+*.usb, e.g.
+.IR PS1fw.usb .
+It comes on the installation CD that was provided by the manufacturer, but it
+may be packaged together with the installation program in an .exe file. For
+Mustek scanners, the file can be downloaded from the gt68xx backend homepage. For
+other scanners, check the CD for .usb files. If you only find *.cab files, try
+cabextract to unpack. If everything else fails, you must install the Windows
+driver and get the firmware from there (usually in the
+.I windows/system
+or
+.I system32
+directories). Put that firmware file into
+.IR @DATADIR@/sane/gt68xx/ .
+Make sure that it's readable by everyone.
+
+.SH CONFIGURATION
+The contents of the
+.I gt68xx.conf
+file is a list of usb lines containing vendor and product ids that correspond
+to USB scanners. The file can also contain option lines. Empty lines and
+lines starting with a hash mark (#) are ignored. The scanners are
+autodetected by
+.B usb vendor_id product_id
+statements which are already included into
+.IR gt68xx.conf .
+"vendor_id" and "product_id" are hexadecimal numbers that identify the
+scanner.
+.PP
+The
+.BR override ,
+.BR firmware ,
+.BR vendor ,
+.BR model ,
+and
+.B afe
+options must be placed after the
+.B usb
+line they refer to.
+.PP
+Option
+.B override
+is used to override the default model parameters. That's necessary for some
+scanners that use the same vendor/product ids but are different. For these
+scanners there are already commented out override lines in the configuration
+file.
+.B override "mustek\-scanexpress\-1200\-ub\-plus"
+is necessary for the Mustek Scanexpress 1200 UB Plus, the
+Medion/Lifetec/Tevion LT 9452, and the Trust Compact Scan USB 19200.
+.B override "artec\-ultima\-2000"
+is used for the Artec Ultima 2000, the Boeder SmartScan Slim Edition, the
+Medion/ Lifetec/ Tevion/ Cytron MD/LT 9385, the Medion/ Lifetec/ Tevion MD
+9458, and the Trust Flat Scan USB 19200.
+.B override "mustek\-bearpaw\-2400\-cu"
+is necessary for the Mustek BearPaw 2400 CU and the Fujitsu 1200CUS. The
+.B override
+option must be the first one after the
+.B usb
+line.
+.PP
+Option
+.B firmware
+selects the name and path of the firmware file. It's only necessary if the
+default (or override) doesn't work. The default firmware directory is
+.IR @DATADIR@/sane/gt68xx/ .
+You may need to create this directory. If you want to place the firmware files
+at a different path, use a
+.B firmware
+line.
+.PP
+The
+.B vendor
+and
+.B model
+options are not absolutely necessary but for convenience. Quite a lot of
+scanners from different manufacturers share the same vendor/product ids so you
+can set the "correct" name here.
+.PP
+The
+.B afe
+option allows to set custom offset and gain values for the Analog FrontEnd of
+the scanner. This option can be either used to select the AFE values if
+automatic coarse calibration is disabled, or to make automatic coarse
+calibration faster. For the latter usage, enable debug level 3 (see below),
+scan an image and look for debug line string with "afe". Copy this line to
+.IR gt68xx.conf .
+The option has six parameters: red offset, red gain, green offset, green gain,
+blue offset, and blue gain.
+.PP
+A sample configuration file is shown below:
+.PP
+.RS
+usb 0x05d8 0x4002
+.br
+override "mustek\-scanexpress\-1200\-ub\-plus"
+.br
+firmware "/opt/gt68xx/SBfw.usb"
+.br
+vendor "Trust"
+.br
+model "Compact Scan USB 19200"
+.br
+afe 0x20 0x02 0x22 0x03 0x1f 0x04
+.RE
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/gt68xx.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-gt68xx.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-gt68xx.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_GT68XX
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend. Higher debug levels
+increase the verbosity of the output. If the debug level is set to 1 or higher,
+some debug options become available that are normally hidden. Handle them with
+care.
+
+Example:
+export SANE_DEBUG_GT68XX=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.BR sane\-artec_eplus48u (5)
+.BR sane\-plustek (5),
+.BR sane\-ma1509 (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-mustek (5),
+.BR sane\-mustek_pp (5)
+.br
+.I @DOCDIR@/gt68xx/gt68xx.CHANGES
+.br
+.I http://www.meier\-geinitz.de/sane/gt68xx
+
+.SH AUTHOR
+Henning Meier-Geinitz <henning@meier\-geinitz.de>
+.br
+The original gt68xx driver was written by Sergey Vlasov, Andreas Nowack, and
+David Stevenson. Thanks for sending patches and answering questions to them
+and all the other contributors.
+
+.SH BUGS
+The first few lines of the image are garbage for the 2400 TA
+Plus.
+.PP
+Interpolation should be used instead of just copying data, when the X- and
+Y-resolution differ.
+.PP
+Support for buttons is missing.
+.PP
+More detailed bug information is available at the gt68xx backend homepage
+.IR http://www.meier\-geinitz.de/sane/gt68xx\-backend/ .
+Please contact us if you find a bug or missing feature:
+<sane\-devel@lists.alioth.debian.org>. Please send a debug log if your scanner isn't
+detected correctly (see SANE_DEBUG_GT68XX above).
diff --git a/doc/sane-hp.man b/doc/sane-hp.man
new file mode 100644
index 0000000..4e7d35d
--- /dev/null
+++ b/doc/sane-hp.man
@@ -0,0 +1,273 @@
+.TH sane\-hp 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hp
+.SH NAME
+sane\-hp \- SANE backend for HP ScanJet scanners
+.SH DESCRIPTION
+The
+.B sane\-hp
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to HP ScanJet scanners which support SCL (Scanner
+Control Language by HP). The following
+scanners are known positively to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Model: Product id: Interface:
+---------- ----------- ----------
+ScanJet Plus C9195A HP Parallel Interface Card
+ScanJet IIc C1750A 3226 SCSI
+ScanJet IIcx C2500A 3332 SCSI
+ScanJet IIp C1790A SCSI
+ScanJet 3C C2520A 3503 SCSI
+ScanJet 3P C2570A 3406 SCSI
+ScanJet 4C C2520A SCSI
+ScanJet 4P C1130A 3540 SCSI
+ScanJet 4100C C6290A USB
+ScanJet 5P C5110A SCSI
+ScanJet 5100C C5190A parallel port
+ScanJet 5200C C7190A 3846 parallel port/USB
+ScanJet 6100C C2520A 3644 SCSI
+ScanJet 6200C C6270A 3828 SCSI/USB
+ScanJet 6250C C6270A 3828 SCSI/USB
+ScanJet 6300C C7670A SCSI/USB
+ScanJet 6350C C7670A SCSI/USB
+ScanJet 6390C C7670A SCSI/USB
+PhotoSmart C5100A R029,R030,R032 SCSI
+.fi
+.ft R
+.RE
+.PP
+Support for models 5100C/5200C connected to the parallel port requires
+the ppSCSI driver available at
+.I http://cyberelk.net/tim/parport/ppscsi.html
+and
+.IR http://penguin-breeder.org/kernel/download/ .
+
+.PP
+Support for models 5200C/62X0C/63X0C connected to the USB require
+the kernel scanner driver or libusb. See
+.BR sane\-usb (5)
+for more details.
+.PP
+The "hp" backend no longer supports OfficeJet multi-function peripherals.
+For these devices use the external "hpoj" backend in version 0.90 and later of
+the "HP OfficeJet Linux driver", available at
+.br
+.IR http://hpoj.sourceforge.net
+.
+.PP
+Because Hewlett-Packard does no longer produce scanners that support
+SCL (beside the OfficeJets), the above list of supported scanners is
+complete.
+Other HP scanners are not supported by the "hp" backend, but might be supported
+by another one. See
+.IR http://www.sane\-project.org/ .
+You can also watch the sane\-devel mailing list at
+.IR http://www.sane\-project.org/mailing\-lists.html .
+.PP
+More details about the hp backend can be found on its homepage
+.IR http://www.kirchgessner.net/sane.html .
+.PP
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the UNIX path-name for the special device that corresponds to the
+scanner. For SCSI scanners 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
+.I /dev/sga
+or
+.IR /dev/sg2 ,
+for example. If the special device name contains "usb", "uscanner" or "ugen",
+it is assumed that the scanner is connected by USB.
+For the HP ScanJet Plus the special device name must be the device
+that corresponds to the parallel interface card that was shipped with the
+scanner. That is
+.IR /dev/hpscan .
+A special driver is required for this card.
+See ftp://rvs.ctrl\-c.liu.se/pub/wingel/hpscan for details. If the link
+does not work, try ftp://sunsite.unc.edu/pub/Linux/kernel/patches/scanners.
+.SH CONFIGURATION
+The contents of the
+.I hp.conf
+file is a list of options and device names that correspond to HP ScanJet
+scanners. Empty lines and lines starting with a hash mark
+(#) are ignored. See
+.BR sane\-scsi (5)
+and
+.BR sane\-usb (5)
+on details of what constitutes a valid device name.
+.PP
+Options specified in front of the first line that contains a device name
+are defaults for all devices. Options specified below a line that
+contains a device name apply just to the most recently mentioned device.
+.PP
+Supported options are
+.BR connect\-scsi ,
+.BR connect\-device ,
+.BR enable\-image\-buffering ,
+and
+.BR dumb\-read .
+
+Option
+.B connect\-scsi
+specifies that the scanner is connected to the system by SCSI.
+Input/output is performed using SCSI-commands. This is the default.
+But if your SCSI device name contains "usb", "uscanner" or "ugen",
+option connect\-scsi must be specified. Otherwise it is assumed that
+the scanner is connected by USB.
+
+Option
+.B connect\-device
+specifies that the scanner is connected to the system by a special
+device. Input/output is performed by read()/write()-operations
+on the device. This option must be used for HP ScanJet Plus
+or scanners connected to USB which are accessed through a named device
+(e.g. /dev/usb/scanner0).
+For device names that contain "usb", "uscanner" or "ugen", it is not
+necessary to specify option connect\-device.
+
+Option
+.B enable\-image\-buffering
+stores the scanned image in memory before passing it to the frontend. Could be
+used in case of forward/backward moving scanner lamp.
+
+Option
+.B dumb\-read
+can be used to work around problems with "Error during device I/O". These
+problems may occur with certain SCSI-to-USB converters or Buslogic SCSI cards.
+The option should not be used for SCSI devices which are working correctly.
+Otherwise startup of frontends and changing parameters might be slower.
+.PP
+A sample configuration file is shown below:
+.PP
+.RS
+.ft CR
+.nf
+/dev/scanner
+# this is a comment
+/dev/hpscan
+ option connect\-device
+.fi
+.ft R
+.RE
+.PP
+/dev/scanner is typically a symlink to the actual SCSI scanner device.
+.RE
+.SH FILES
+.TP
+.I @CONFIGDIR@/hp.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-hp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hp.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.TP
+.I $HOME/.sane/calib-hp:<device>.dat
+Calibration data for HP PhotoSmart PhotoScanner that is retrieved from the
+scanner after calibration. The data is uploaded to the scanner at start
+of the backend if it is in media mode 'print media' or if the media mode is
+changed to 'print media'.
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_HP
+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.
+.TP
+.B SANE_HOME_HP
+Only used for OS/2 and along with use of HP PhotoSmart PhotoScanner.
+Must be set to the directory where the directory .sane is located.
+Is used to save and read the calibration file.
+.TP
+.B SANE_HP_KEEPOPEN_SCSI
+.TP
+.B SANE_HP_KEEPOPEN_USB
+.TP
+.B SANE_HP_KEEPOPEN_DEVICE
+For each type of connection (connect\-scsi, connect\-usb, connect\-device)
+it can be specified if the connection to the device should be kept open ("1")
+or not ("0").
+Usually the connections are closed after an operation is performed.
+Keeping connection open to SCSI-devices can result in errors during device IO
+when the scanner has not been used for some time. By default, USB-connections
+are kept open. Other connections are closed.
+.TP
+.B SANE_HP_RDREDO
+Specifies number of retries for read operation before returning an EOF error.
+Only supported for non-SCSI devices. Default: 1 retry. Time between retries
+is 0.1 seconds.
+
+.SH BUGS
+.TP
+.B HP PhotoSmart PhotoScanner
+In media mode 'slide' and 'negative', scan resolutions are rounded to
+multiple of 300 dpi. The scanner does not scale the data correctly
+on other resolutions. Some newer models (firmware code R030 and later)
+do not support adjustment of contrast/intensity level and tone map.
+The backend will simulate this by software, but only for gray
+and 24 bit color.
+.TP
+.B Automatic Document Feeder (ADF)
+For use of the ADF with xscanimage(1), first place paper in the ADF and
+then change option scan source to 'ADF'. Press 'change document'
+to load a sheet. Then press 'scan' to start a scan.
+Maybe it is sufficient to press 'scan' without 'change document'
+for repeated scans. The use of the preview window is not recommended
+when working with the ADF.
+Setting a window to scan from ADF is not supported with xscanimage(1).
+Try xsane(1).
+.TP
+.B Immediate actions
+Some actions in xscanimage(1) (i.e. unload, select media, calibrate)
+have an immediate effect on the scanner without starting a scan.
+These options can not be used with scanimage.
+
+.SH TODO
+.TP
+.B HP PhotoSmart PhotoScanner
+PhotoScanners with firmware release R030 and up have
+no firmware support for contrast/brightness/gamma table. In the current
+backend this is simulated by software on 24 bits data.
+Simulation on 30 bits should give better results.
+.TP
+.B Data widths greater than 8 bits
+Custom gamma table does not work.
+.TP
+.B Parallel scanner support
+Beside the ScanJet Plus which came with its own parallel interface card,
+currently only the HP ScanJet 5100C/5200C are supported.
+These scanners are using an internal parallel-to-SCSI converter which
+is supported by the ppSCSI-driver (see above).
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5), sane\-usb(5)
+.SH AUTHOR
+The sane\-hp backend was written by Geoffrey T. Dairiki. HP PhotoSmart
+PhotoScanner support by Peter Kirchgessner.
diff --git a/doc/sane-hp3500.man b/doc/sane-hp3500.man
new file mode 100644
index 0000000..2785b0e
--- /dev/null
+++ b/doc/sane-hp3500.man
@@ -0,0 +1,53 @@
+.TH sane\-hp3500 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hp3500
+.SH NAME
+sane\-hp3500 \- SANE backend for Hewlett-Packard ScanJet 3500 series scanners
+.SH DESCRIPTION
+The
+.B sane\-hp3500
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following Hewlett-Packard USB flatbed scanners:
+.PP
+.RS
+ScanJet 3500C
+.br
+ScanJet 3530C
+.br
+ScanJet 3570C
+.RE
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.SH CONFIGURATION
+None required.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-hp3500.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hp3500.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.B SANE_DEBUG_HP3500
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_HP3500=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.br
+.I http://projects.troy.rollo.name/rt-scanners/
+
+.SH AUTHOR
+Troy Rollo <sane@troy.rollo.name>
+
diff --git a/doc/sane-hp3900.man b/doc/sane-hp3900.man
new file mode 100644
index 0000000..ab0a100
--- /dev/null
+++ b/doc/sane-hp3900.man
@@ -0,0 +1,110 @@
+.TH sane\-hp3900 5 "06 Jan 2009" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hp3900
+.SH NAME
+sane\-hp3900 \- SANE backend for RTS8822 chipset based scanners
+.SH DESCRIPTION
+The
+.B sane\-hp3900
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access at least to the following USB flatbed scanners:
+.PP
+.RS
+.ft CR
+.nf
+Model: Chipset:
+------ --------
+HP ScanJet 3800 RTS8822BL-03A
+HP ScanJet 3970 RTS8822L-01H
+HP ScanJet 4070 Photosmart RTS8822L-01H
+HP ScanJet 4370 RTS8822L-02A
+HP ScanJet G2710 RTS8822BL-03A
+HP ScanJet G3010 RTS8822L-02A
+HP ScanJet G3110 RTS8822L-02A
+UMAX Astra 4900/4950 RTS8822L-01H *
+BenQ 5550 RTS8823L-01E *
+.fi
+.ft R
+.RE
+.PP
+More details can be found on the hp3900 backend homepage
+.IR http://sourceforge.net/projects/hp3900\-series/ .
+.PP
+This is ALPHA software. Keep your hand at the scanner's plug and unplug it, if
+scanner does not start to scan. See also the BUGS section.
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.PP
+
+.SH CONFIGURATION
+The contents of the
+.I hp3900.conf
+file is a list of usb lines containing vendor and product ids that correspond
+to USB scanners. The file can also contain the names of device files that
+correspond to an HP 39XX scanner. Empty lines and lines starting with a hash
+mark (#) are ignored. The scanners are autodetected by
+.B usb vendor_id product_id
+statements which are already included into
+.IR hp3900.conf .
+"vendor_id" and "product_id" are hexadecimal numbers that identify the
+scanner. If autodetection does not work, add the device name of your scanner
+to the configuration file,
+.PP
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/hp3900.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-hp3900.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hp3900.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"/etc/sane.d" being searched (in this order).
+.TP
+.B SANE_DEBUG_HP3900
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_HP3900=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.br
+.I http://sourceforge.net/projects/hp3900\-series/
+.I http://jkdsoftware.dyndns.org/drupal/?q=es/books/151
+
+.SH AUTHOR
+Jonathan Bravo Lopez <jkdsoft@gmail.com>
+
+.SH BUGS
+Scanning is only tested with Linux/ix86/gcc. Be careful when testing on other
+operating systems and especially on big-endian platforms. The scanner may get
+wrong data.
+
diff --git a/doc/sane-hp4200.man b/doc/sane-hp4200.man
new file mode 100644
index 0000000..e392d85
--- /dev/null
+++ b/doc/sane-hp4200.man
@@ -0,0 +1,105 @@
+.TH sane\-hp4200 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hp4200
+.SH NAME
+sane\-hp4200 \- SANE backend for Hewlett-Packard 4200 scanners
+.SH DESCRIPTION
+The
+.B sane\-hp4200
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following Hewlett-Packard USB flatbed scanners:
+.PP
+.RS
+ScanJet 4200 C
+.br
+ScanJet 4200 Cxi
+.br
+ScanJet 4200 Cse
+.RE
+.PP
+More details can be found on the hp4200 backend homepage
+.IR http://hp4200\-backend.sourceforge.net/ .
+.PP
+This is BETA software. Keep your hand at the scanner's plug and unplug it, if
+the head bumps at the end of the scan area.
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.PP
+
+.SH CONFIGURATION
+The contents of the
+.I hp4200.conf
+file is a list of usb lines containing vendor and product ids that correspond
+to USB scanners. The file can also contain the names of device files that
+correspond to an HP 4200 scanner. Empty lines and lines starting with a hash
+mark (#) are ignored. The scanners are autodetected by
+.B usb vendor_id product_id
+statements which are already included into
+.IR hp4200.conf .
+"vendor_id" and "product_id" are hexadecimal numbers that identify the
+scanner. If autodetection does not work, add the device name of your scanner
+to the configuration file, e.g.
+.IR /dev/usb/scanner0 .
+.PP
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/hp4200.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-hp4200.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hp4200.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_HP4200
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_HP4200=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.br
+.I http://hp4200\-backend.sourceforge.net/
+
+.SH AUTHOR
+Adrian Perez Jorge, Andrew John Lewis, Arnar Mar Hrafnkelsson, Frank Zago,
+Henning Meier-Geinitz. Current maintainer: Henning Meier-Geinitz <henning@meier\-geinitz.de>.
+
+.SH BUGS
+Tested only with Linux.
+.PP
+Only 8 bit color mode works.
+.PP
+Scanning is slow due to backtracking.
+.PP
+Send bug reports to the sane\-devel mailing list:
+sane\-devel@lists.alioth.debian.org.
diff --git a/doc/sane-hp5400.man b/doc/sane-hp5400.man
new file mode 100644
index 0000000..d789215
--- /dev/null
+++ b/doc/sane-hp5400.man
@@ -0,0 +1,102 @@
+.TH sane\-hp5400 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hp5400
+.SH NAME
+sane\-hp5400 \- SANE backend for Hewlett-Packard 54XX scanners
+.SH DESCRIPTION
+The
+.B sane\-hp5400
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following Hewlett-Packard USB flatbed scanners:
+.PP
+.RS
+ScanJet 5400C
+.br
+ScanJet 5470C
+.br
+ScanJet 5490C
+.RE
+.PP
+More details can be found on the hp5400 backend homepage
+.IR http://hp5400backend.sourceforge.net/ .
+.PP
+This is ALPHA software. Keep your hand at the scanner's plug and unplug it, if
+the head bumps at the end of the scan area. See also the BUGS section.
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.PP
+
+.SH CONFIGURATION
+The contents of the
+.I hp5400.conf
+file is a list of usb lines containing vendor and product ids that correspond
+to USB scanners. The file can also contain the names of device files that
+correspond to an HP 54XX scanner. Empty lines and lines starting with a hash
+mark (#) are ignored. The scanners are autodetected by
+.B usb vendor_id product_id
+statements which are already included into
+.IR hp5400.conf .
+"vendor_id" and "product_id" are hexadecimal numbers that identify the
+scanner. If autodetection does not work, add the device name of your scanner
+to the configuration file, e.g.
+.IR /dev/usb/scanner0 .
+.PP
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/hp5400.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-hp5400.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hp5400.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_HP5400
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_HP5400=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.br
+.I http://hp5400backend.sourceforge.net/
+
+.SH AUTHOR
+Martijn van Oosterhout <kleptog@svana.org>, Thomas Soumarmon
+<soumarmt@nerim.net>. Manpage by Henning Meier-Geinitz
+<henning@meier\-geinitz.de>.
+
+.SH BUGS
+Scanning is only tested with Linux/ix86/gcc. Be careful when testing on other
+operating systems and especially on big-endian platforms. The scanner may get
+wrong data.
+
diff --git a/doc/sane-hp5590.man b/doc/sane-hp5590.man
new file mode 100644
index 0000000..2ccfcc5
--- /dev/null
+++ b/doc/sane-hp5590.man
@@ -0,0 +1,69 @@
+.TH sane\-hp5590 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hp5590
+.SH NAME
+sane\-hp5590 \- SANE backend for
+Hewlett-Packard 4500C/4570C/5500C/5550C/5590/7650 Workgroup/Document scanners
+.SH DESCRIPTION
+The
+.B sane\-hp5590
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following Hewlett-Packard Workgroup/Document scanners:
+.PP
+.RS
+ScanJet 4500C
+.br
+ScanJet 4570C
+.br
+ScanJet 5500C
+.br
+ScanJet 5550C
+.br
+ScanJet 5590
+.br
+ScanJet 7650
+.RE
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.SH CONFIGURATION
+None required.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-hp5590.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hp5590.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_HP5590
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output. See used levels below.
+.P
+.RS
+Level 10 - generic processing
+.br
+Level 20 - verbose backend messages
+.br
+Level 40 - HP5590 high-level commands
+.br
+Level 50 - HP5590 low-level (USB-in-USB) commands
+
+.P
+Example:
+
+export SANE_DEBUG_HP5590=50
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+
+.SH AUTHOR
+Ilia Sotnikov <hostcc@gmail.com>
diff --git a/doc/sane-hpljm1005.man b/doc/sane-hpljm1005.man
new file mode 100644
index 0000000..ff1006a
--- /dev/null
+++ b/doc/sane-hpljm1005.man
@@ -0,0 +1,37 @@
+.TH sane\-hpljm1005 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hpljm1005
+.SH NAME
+sane\-hpljm1005 \- SANE backend for Hewlett-Packard LaserJet M1005 MFP Scanner
+.SH DESCRIPTION
+The
+.B sane\-hpljm1005
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following Hewlett-Packard scanner:
+.PP
+.RS
+LaserJet M1005
+.RE
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.SH CONFIGURATION
+None required.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-hpljm1005.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hpljm1005.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+
+.SH AUTHOR
+Philippe R\['e]tornaz <couriousous@mandriva.org>
diff --git a/doc/sane-hpsj5s.man b/doc/sane-hpsj5s.man
new file mode 100644
index 0000000..d42b49e
--- /dev/null
+++ b/doc/sane-hpsj5s.man
@@ -0,0 +1,103 @@
+.TH sane\-hpsj5s 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hpsj5s
+.SH NAME
+sane\-hpsj5s \- SANE backend for HP ScanJet 5S sheet-fed scanner
+.SH DESCRIPTION
+The
+.B sane\-hpsj5s
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to a parallel port Hewlett-Packard ScanJet 5S scanner.
+.PP
+IMPORTANT: this is alpha code. Don't expect this to work
+correctly. Many functions are missing, others contain errors. In some
+cases, your computer might even hang. It cannot be excluded (although
+I consider it extremely improbable) that your scanner will be
+damaged.
+.PP
+LIMITATIONS: For now this backend works only on Linux. This limitation
+is due to dependence on the libieee1284 library. If your system supports libieee1284 too,
+this backend should work. If you ported libieee1284 for your platform, please let
+me know. Your system should support
+.B EPP
+(or
+.B EPP+ECP
+) mode to operate this scanner. Future versions will support ECP and SPP
+(Nibble and Byte) modes also. It's planned to support scanners not only
+at daisy-chain position 0, but anywhere. Support for multiple scanners could
+be implemented too.
+.PP
+Current version implements only gray scale scanning. True Color and B/W modes are
+not supported for now.
+.PP
+That said, TESTERS ARE WELCOME. Send your bug reports and comments to
+Max Vorobiev <pcwizard@yandex.ru>.
+.PP
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the parallel port name in form, libieee1284 expects. It seems to be system dependent.
+Under Linux it's parport0, parport1, etc.
+.SH CONFIGURATION
+The contents of the
+.I hpsj5s.conf
+file is a list of parport names that correspond to HP ScanJet 5S
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. Only one device name can be listed in
+.IR hpsj5s.conf
+for this moment. Future versions will support daisy chain selection.
+
+.SH TIPS
+.PP
+It seems that HP ScanJet 5S scanner uses software noise correction. This
+feature is not implemented for now. So does gamma correction and calibration.
+I'll handle it in future versions.
+Native resolution for this scanner is 300 DPI. Other modes could be jagged in some
+ways.
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/hpsj5s.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-hpsj5s.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hpsj5s.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+
+.TP
+.SH "SEE ALSO"
+sane(7)
+.br
+http://hpsj5s.sourceforge.net
+.br
+http://cyberelk.net/tim/libieee1284
+.br
+.SH AUTHOR
+Max Vorobiev
+.br
+Man page mostly based on canon.man
diff --git a/doc/sane-hs2p.man b/doc/sane-hs2p.man
new file mode 100644
index 0000000..b0df57d
--- /dev/null
+++ b/doc/sane-hs2p.man
@@ -0,0 +1,120 @@
+.TH sane\-hs2p 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-hs2p
+.SH NAME
+sane\-hs2p \- SANE backend for Ricoh SCSI flatbed/ADF scanners
+.SH DESCRIPTION
+The
+.B sane\-hs2p
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the Ricoh IS450 family of scanners. Should also work with the IS420,
+IS410, and IS430 scanners, but these are untested.
+Please contact the maintainer or the sane\-devel mailing list if you own such a scanner.
+.PP
+This backend is alpha-quality. It may have bugs and some scanners haven't been
+tested at all. Be careful and pull the plug if the scanner causes unusual
+noise.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is either the path-name for the special device that corresponds to a SCSI
+scanner. The program
+.I sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name could be
+.I /dev/sg0
+or
+.IR /dev/sga ,
+for example. See
+.BR sane\-scsi (5)
+for details.
+
+.SH CONFIGURATION
+The contents of the
+.I hs2p.conf
+file is a list of device names that correspond to SCSI
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. See
+.BR sane\-scsi (5)
+on details of what constitutes a valid device name.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/hs2p.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-hs2p.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-hs2p.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_HS2P
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend.
+A value of 255 prints all debug output. Smaller values reduce verbosity.
+
+.SH CURRENT STATUS
+The hs2p backend is now in version 1.00. All major scanning-related features
+are supported, except for those features requiring the optional IPU. Scanning
+from the flatbed or ADF (either simplex or duplex) is supported. Lineart,
+halftone, 4-bit gray, and 8-bit gray are supported. Pre-set gamma tables and
+halftone patterns are supported, as well as brightness, threshold, contrast.
+Also supported is scan wait mode, binary and gray filtering, negative scanning,
+and absolute or relative white setting. Printing with the optional endorser
+also is supported.
+
+.SH PLANNED FUNCTIONALITY
+This scanner can scan from the ADF in continuous simplex mode.
+Surprisingly, many scanners scan an entire document from the ADF
+into memory before ejecting the sheet. Thus if the document is too
+long, the scanner cannot hold the entire image data in memory.
+But if the scanner would send its image data when its memory got full,
+and then read the next buffer's worth of data, continuous scanning
+could be achieved.
+
+.SH MISSING FUNCTIONALITY
+The SCSI commands for uploading (2AH) or downloading (28H)
+custom halftone patterns (02H) and gamma vectors (03H) should work,
+but require implementing the SANE Option-Value code to allow the
+user to create the tables to be uploaded to the scanner. No support
+for Maintenance Data (80H) is planned as this functionality is more
+suited to a stand-alone utility to be used by a technician when
+replacing the lamp or ADF unit. Nor is support for reading or changing
+IPU (93H) parameters and adjustments planned, since my IS450 lacks
+such a unit. The 31-byte Auto Photo/Letter struct and 21-byte Dynamic
+threshold struct are documented in the hs2p-scsi.h file should someone
+wish to use their IPU for image data processing.
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-find\-scanner (1),
+.BR sane\-scsi (5),
+
+.SH AUTHOR
+jeremy <jeremy@acjlaw.net>
+.br
+Maintained by Jeremy Johnson <jeremy@acjlaw.net>
diff --git a/doc/sane-ibm.man b/doc/sane-ibm.man
new file mode 100644
index 0000000..50138d7
--- /dev/null
+++ b/doc/sane-ibm.man
@@ -0,0 +1,88 @@
+.TH sane\-ibm 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-ibm
+.SH NAME
+sane\-ibm \- SANE backend for IBM and Ricoh SCSI flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-ibm
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the IBM 2456 and the Ricoh IS-410, IS-420, and IS-430 flatbed
+scanners. Support for the IS-410 and IS-430 is untested. Please contact the
+maintainer or the sane\-devel mailing list if you own such a scanner.
+.PP
+This backend is alpha-quality. It may have bugs and some scanners haven't been
+tested at all. Be careful and pull the plug if the scanner causes unusual
+noise.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is either the path-name for the special device that corresponds to a SCSI
+scanner. The program
+.I sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name could be
+.I /dev/sg0
+or
+.IR /dev/sga ,
+for example. See
+.BR sane\-scsi (5)
+for details.
+
+.SH CONFIGURATION
+The contents of the
+.I ibm.conf
+file is a list of device names that correspond to SCSI
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. See
+.BR sane\-scsi (5)
+on details of what constitutes a valid device name.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/ibm.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-ibm.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-ibm.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_IBM
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-find\-scanner (1),
+.BR sane\-scsi (5),
+
+.SH AUTHOR
+mf <massifr@tiscalinet.it>
+.br
+Maintained by Henning Meier-Geinitz <henning@meier\-geinitz.de>
diff --git a/doc/sane-kodak.man b/doc/sane-kodak.man
new file mode 100644
index 0000000..2566f3d
--- /dev/null
+++ b/doc/sane-kodak.man
@@ -0,0 +1,142 @@
+.TH sane\-kodak 5 "10 Feb 2010" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-kodak
+
+.SH NAME
+sane\-kodak \- SANE backend for big Kodak flatbed and ADF scanners
+
+.SH DESCRIPTION
+The
+.B sane\-kodak
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to large Kodak flatbed and ADF scanners.
+
+This document describes backend version 7, which shipped with SANE 1.0.21.
+
+.SH SUPPORTED HARDWARE
+This version should support models which speak the Kodak SCSI and Firewire
+protocols. The i1860 was used to develop the backend, but other models may
+work with only minimal modifications. Please see the list at
+http://www.sane\-project.org/sane\-supported\-devices.html for an updated list.
+
+If you have a machine not on that list, or reported as 'untested': the best way
+to determine level of support is to test the scanner directly, or to collect a
+trace of the windows driver in action. Please contact the author for help or
+with test results.
+
+.SH UNSUPPORTED HARDWARE
+Most of the recent Kodak consumer or workgroup level machines are based on
+other chipsets and are not supported by this backend. Some of these scanners
+may be supported by another backend.
+
+.SH OPTIONS
+Effort has been made to expose the basic hardware options, including:
+.PP
+source s
+.RS
+Selects the source for the scan. Options
+may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
+.RE
+.PP
+mode m
+.RS
+Selects the mode for the scan. Options
+may include "Lineart", "Halftone", "Gray", and "Color".
+.RE
+.PP
+resolution
+.RS
+Controls scan resolution. Available choices may be limited by mode.
+.RE
+.PP
+tl\-x, tl\-y, br\-x, br\-y
+.RS
+Sets scan area upper left and lower right coordinates. These are renamed
+t, l, x, y by some frontends.
+.RE
+.PP
+page\-width, page\-height
+.RS
+Sets paper size. Used by scanner to determine centering of scan
+coordinates when using ADF and to detect double feed errors.
+.RE
+.PP
+Other options will be available based on the capabilities of the scanner.
+Use 'scanimage \-\-help' to get a list, but be aware that some options may
+be settable only when another option has been set, and that advanced options
+may be hidden by some frontend programs.
+.PP
+.SH CONFIGURATION FILE
+The configuration file "kodak.conf" is used to tell the backend how to look
+for scanners, and provide options controlling the operation of the backend.
+This file is read each time the frontend asks the backend for a list
+of scanners, generally only when the frontend starts. If the configuration
+file is missing, the backend will use a set of compiled defaults, which
+are identical to the default configuration file shipped with SANE.
+.PP
+Scanners can be specified in the configuration file in 2 ways:
+.PP
+"scsi KODAK"
+.RS
+Requests backend to search all scsi busses in the system for a device
+which reports itself to be a scanner made by 'KODAK'.
+.RE
+.PP
+"scsi /dev/sg0" (or other scsi device file)
+.RS
+Requests backend to open the named scsi device. Only useful if you have
+multiple compatible scanners connected to your system, and need to
+specify one. Probably should not be used with the other "scsi" line above.
+.RE
+.PP
+The only configuration option supported is "buffer\-size=xxx", allowing you
+to set the number of bytes in the data buffer to something other than the
+compiled\-in default, 32768 (32K). Some users report that their scanner will
+"hang" mid\-page, or fail to transmit the image if the buffer is not large
+enough.
+.PP
+Note: This option may appear multiple times in the configuration file. It only
+applies to scanners discovered by 'scsi/usb' lines that follow this option.
+.PP
+Note: The backend does not place an upper bound on this value, as some users
+required it to be quite large. Values above the default are not recommended,
+and may crash your OS or lockup your scsi card driver. You have been
+warned.
+.PP
+
+.SH ENVIRONMENT
+The backend uses a single environment variable, SANE_DEBUG_KODAK, which
+enables debugging output to stderr. Valid values are:
+.PP
+.RS
+5 Errors
+.br
+10 Function trace
+.br
+15 Function detail
+.br
+20 Option commands
+.br
+25 SCSI trace
+.br
+30 SCSI detail
+.br
+35 Useless noise
+.RE
+
+.SH KNOWN ISSUES
+Most hardware options are either not supported or not exposed for control by
+the user, including: multifeed detection, image compression, autocropping,
+endorser, iThresholding, multi\-stream, etc.
+.PP
+
+.SH CREDITS
+The various authors of the sane\-fujitsu backend provided useful code.
+.br
+Kodak provided access to hardware, documentation and personnel.
+
+.SH "SEE ALSO"
+sane(7),
+sane\-scsi(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
diff --git a/doc/sane-kodakaio.man b/doc/sane-kodakaio.man
new file mode 100644
index 0000000..e5303b6
--- /dev/null
+++ b/doc/sane-kodakaio.man
@@ -0,0 +1,40 @@
+.TH sane\-kodakaio 2.4 "17 Jun 2012" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-kodakaio
+
+.SH NAME
+sane\-kodakaio \- SANE backend for Kodak aio printer / scanners
+
+.SH DESCRIPTION
+The
+.B sane\-kodakaio
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to Kodak aio printer / scanners, like the ESP and Hero series.
+
+This document describes backend version 2.4, which is the first candidate for
+incorporation in sane-backends.
+
+.SH SUPPORTED HARDWARE
+This version should support models of the Kodak ESP and Hero series, and possibly some
+Advent AiO scanners. The ESP 5250 and Hero 9.1 were used to develop the backend,
+but other models may work. Please see the desc file.
+
+If you have a model not on that list, or reported as 'untested': the best way
+to determine level of support is to test the scanner directly.
+
+.SH CONFIGURATION FILE
+The configuration file "kodakaio.conf" is used to tell the backend how to look
+for scanners, and provide options controlling the operation of the backend.
+This file is read each time the frontend asks the backend for a list
+of scanners, generally only when the frontend starts.
+
+.SH ENVIRONMENT
+The backend uses a single environment variable, SANE_DEBUG_KODAKAIO, which
+enables debugging output to stderr.
+
+.SH KNOWN ISSUES
+Most hardware options are either not supported or not exposed for control by
+the user, including: multifeed detection, image compression etc.
+.PP
+
+.SH AUTHOR
+P. Newall
diff --git a/doc/sane-kvs1025.man b/doc/sane-kvs1025.man
new file mode 100644
index 0000000..23dcd50
--- /dev/null
+++ b/doc/sane-kvs1025.man
@@ -0,0 +1,31 @@
+.TH sane\-kvs1025 5 "16 Apr 2010" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-kvs1025
+
+.SH NAME
+sane\-kvs1025 \- SANE backend for Panasonic KV-S102xC USB ADF scanners.
+
+.SH DESCRIPTION
+The
+.B sane\-kvs1025
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to the Panasonic KV-S1020C/1025C and KV-S1045C scanners.
+
+.SH KNOWN ISSUES
+This document was written by the SANE project, which has no information
+regarding the capabilities or reliability of the backend. All information
+contained here is suspect.
+
+.SH CREDITS
+The backend was written by Tao Zhang / Panasonic Russia Ltd.
+
+The backend was ported to sane-backends 1.0.21 and updated to use
+sanei_usb instead of libusb by m. allan noah.
+
+The backend was tested on KV-S1025C and 1045C by Tiago Zaniquelli.
+
+.SH "SEE ALSO"
+sane(7), sane\-usb(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-kvs20xx.man b/doc/sane-kvs20xx.man
new file mode 100644
index 0000000..8cb8b9c
--- /dev/null
+++ b/doc/sane-kvs20xx.man
@@ -0,0 +1,29 @@
+.TH sane\-kvs20xx 5 "09 Jun 2010" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-kvs20xx
+
+.SH NAME
+sane\-kvs20xx \- SANE backend for Panasonic KV-S20xxC USB/SCSI ADF scanners.
+
+.SH DESCRIPTION
+The
+.B sane\-kvs20xx
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to the Panasonic KV-S202xC and KV-S204xC scanners.
+
+.SH KNOWN ISSUES
+This document was written by the SANE project, which has no information
+regarding the capabilities or reliability of the backend. All information
+contained here is suspect.
+
+.SH CREDITS
+The backend was written by Panasonic Russia Ltd.
+
+The backend was ported to sane-backends 1.0.22 and downgraded to C89
+by m. allan noah.
+
+.SH "SEE ALSO"
+sane(7), sane\-usb(5), sane\-scsi(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-kvs40xx.man b/doc/sane-kvs40xx.man
new file mode 100644
index 0000000..f1aecbc
--- /dev/null
+++ b/doc/sane-kvs40xx.man
@@ -0,0 +1,31 @@
+.TH sane\-kvs40xx 5 "03 Jun 2011" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-kvs40xx
+
+.SH NAME
+sane\-kvs40xx \- SANE backend for Panasonic KV-S40xxC USB/SCSI ADF scanners.
+
+.SH DESCRIPTION
+The
+.B sane\-kvs40xx
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to the Panasonic KV-S40xxC and KV-S70xxC scanners.
+
+.SH KNOWN ISSUES
+This document was written by the SANE project, which has no information
+regarding the capabilities or reliability of the backend. All information
+contained here is suspect.
+
+The backend uses pthreads directly, and so requires pthreads to be enabled.
+
+.SH CREDITS
+The backend was written by Panasonic Russia Ltd.
+
+The backend was ported to sane-backends 1.0.23 and downgraded to C89
+by m. allan noah.
+
+.SH "SEE ALSO"
+sane(7), sane\-usb(5), sane\-scsi(5)
+
+.SH AUTHOR
+m. allan noah: <kitno455 a t gmail d o t com>
+
diff --git a/doc/sane-leo.man b/doc/sane-leo.man
new file mode 100644
index 0000000..a346403
--- /dev/null
+++ b/doc/sane-leo.man
@@ -0,0 +1,157 @@
+.TH sane\-leo 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-leo
+.SH NAME
+sane\-leo \- SANE backend for LEO Technologies scanners
+.SH DESCRIPTION
+The
+.B sane\-leo
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some LEO SCSI flatbed scanners. This backend
+should be considered
+.B beta-quality
+software! LEO scanners were also sold under the Across Technologies brand.
+.PP
+The scanners that should work with this backend are:
+.PP
+.RS
+.ft CR
+.nf
+ Vendor Model status
+---------------------- -----------
+ Across FS-1130 tested
+ Leo S3 tested
+.fi
+.ft R
+.RE
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xscanimage or xsane.
+
+.br
+If you have any strange behavior, please report to the backend
+maintainer or to the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d leo
+.RE
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I Black & White
+,
+.I Grayscale
+and
+.I Color
+The Black & White mode is black and white only (1 bit). Grayscale
+will produce 256 levels of gray (8 bits). Color will produce a 24 bits
+color image.
+
+.TP
+.B \-\-resolution
+selects the resolution for a scan. The scanner can do all resolutions
+between 1 and 300, in increments of 1.
+
+
+.TP
+.B Geometry options
+
+.TP
+.B \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters by default.
+
+
+.TP
+.B Enhancement options
+
+.TP
+.B \-\-custom\-gamma
+(grayscale and color mode only) allows the user to specify a gamma table (see the
+next 3 parameters).
+
+.TP
+.B \-\-red\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the red channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-green\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the green channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-blue\-gamma\-table
+(color mode only) can be used to download a user defined gamma table
+for the blue channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-halftone
+(Black & White only) select the halftone mask to use. Possible values are
+.I Diamond
+,
+.I 8x8 Coarse Fatting
+,
+.I 8x8 Fine Fatting
+,
+.I 8x8 Bayer
+and
+.I 8x8 Vertical Line
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 28 dpi
+and the scan area is the maximum allowed. The scan mode is user
+selected. The default is "no".
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/leo.conf supports only one information: the device name to use (eg /dev/scanner).
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-leo.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-leo.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_LEO
+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.
+
+
+.SH LIMITATIONS
+The windows TWAIN driver has many more options than this SANE
+backend. However they are only software adjustments. This backend only
+implements what the scanner can support.
+
+
+.SH BUGS
+
+None known.
+
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH AUTHOR
+
+.TP
+The package is actively maintained by Frank Zago.
+.I http://www.zago.net/sane/#leo
diff --git a/doc/sane-lexmark.man b/doc/sane-lexmark.man
new file mode 100644
index 0000000..30bba87
--- /dev/null
+++ b/doc/sane-lexmark.man
@@ -0,0 +1,151 @@
+.TH "sane\-lexmark" "5" "12 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-lexmark
+.SH "NAME"
+sane\-lexmark \- SANE backend for Lexmark X1100/X1200 Series scanners
+.SH "DESCRIPTION"
+The
+.B sane\-lexmark
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the scanner part of Lexmark X1100/X1200 AIOs. This backend
+should be considered
+.B beta-quality
+software!
+.PP
+The scanners that should work with this backend are:
+.PP
+.RS
+.ft CR
+.nf
+ Vendor Model status
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-
+ Lexmark X74 good
+ Lexmark X1110 untested
+ Lexmark X1140 untested
+ Lexmark X1150 good
+ Lexmark X1170 good
+ Lexmark X1180 good
+ Lexmark X1185 complete
+ Lexmark X12xx good in USB1.1,
+ not fully tested in USB2.0
+ Dell A920 good
+.fi
+.ft R
+.RE
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xscanimage or xsane.
+
+.br
+If you have any strange behavior, please report to the backend
+maintainer or to the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d lexmark:usb:<usb port>
+.RE
+
+.TP
+.B Scan Mode Options
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.IR Color ,
+.I Gray
+and
+.I Lineart
+The default mode is Color. The Lineart mode is black and white only (1 bit).
+Grayscale will produce 256 levels of gray (8 bits). Color mode allows for over
+16 million different colors produced from 24 bits of color information.
+
+.TP
+.B \-\-resolution
+selects the resolution for a scan. The horizontal and vertical resolutions are set
+by the value of this option. The scanner is capable of the following resolutions for the specified option value:
+.PP
+.RS
+.ft CR
+.nf
+ Value Hor. Resolution Vert. Resolution
+ \-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+ 75 75dpi 75dpi
+ 150 150dpi 150dpi
+ 300 300dpi 300dpi
+ 600 600dpi 600dpi
+ 1200 600dpi 1200dpi (only for X11xx models with 'B2' sensor)
+.fi
+.ft R
+.RE
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 75 dpi
+and the scan area and the scan mode are as specified through their options,
+or the default if not specified. The default value for preview mode is "no".
+
+.TP
+.B \-\-threshold
+selects the minimum-brightness to get a white point. The threshold is only used with Lineart mode scans.
+It is specified as a percentage in the range 0..100% (in steps of 1).
+The default value of the threshold option is 50.
+
+
+.SH "CONFIGURATION FILE"
+The configuration file @CONFIGDIR@/lexmark.conf contains only the usb device id (eg usb 0x043d 0x007c).
+
+
+.SH "FILES"
+.TP
+.I @LIBDIR@/libsane\-lexmark.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-lexmark.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH "ENVIRONMENT"
+.TP
+.B SANE_DEBUG_LEXMARK
+.B SANE_DEBUG_LEXMARK_LOW
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller levels
+reduce verbosity.
+
+
+.SH "LIMITATIONS"
+The windows TWAIN driver has many more options than this SANE
+backend. However they are only software adjustments. This backend only
+implements what the scanner can support. For instance, shading correction
+(vertical stripes due to sensor variation across its width) is done in
+software. Head park position is also detected by software.
+The data compression isn't supported for the X1200 series on USB 1.1,
+leading to slow scans.
+
+.SH "BUGS"
+.br
+No bugs currently known.
+
+
+
+.SH "SEE ALSO"
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH "AUTHOR"
+.TP
+The backend was originally written by Fred Odendaal.
+.I http://ca.geocities.com/freshshelf@rogers.com/
+.TP
+The new version is currently developed by St\['e]phane Voltz.
+.I http://stef.dev.free.fr/sane/lexmark
+.TP
+X74 support was written by Torsten Houwaart (<ToHo@gmx.de>)
+.SH "CREDITS"
+.TP
+Many thanks go to:
+Julien Furgerot who lend me a Dell A920.
+Robert Price, Dani Ele and Dalai Felinto for the time they spent recording
+USB activity and testing the experimental version.
diff --git a/doc/sane-logo.png b/doc/sane-logo.png
new file mode 100644
index 0000000..a8b2526
--- /dev/null
+++ b/doc/sane-logo.png
Binary files differ
diff --git a/doc/sane-logo2.jpg b/doc/sane-logo2.jpg
new file mode 100644
index 0000000..e0f604f
--- /dev/null
+++ b/doc/sane-logo2.jpg
Binary files differ
diff --git a/doc/sane-ma1509.man b/doc/sane-ma1509.man
new file mode 100644
index 0000000..bdd20f7
--- /dev/null
+++ b/doc/sane-ma1509.man
@@ -0,0 +1,134 @@
+.TH sane\-ma1509 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-ma1509
+.SH NAME
+sane\-ma1509 \- SANE backend for Mustek BearPaw 1200F USB scanner
+.SH DESCRIPTION
+The
+.B sane\-ma1509
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the Mustek BearPaw 1200F USB flatbed scanner. This scanner is based
+on the MA-1509 chipset. Other scanners that use this chip (if they exist) may
+also work.
+.PP
+This backend is ALPHA software. Be careful and remove the power plug
+immediately if your hear unusual noises.
+.PP
+More details can be found on the ma1509 backend homepage
+.IR http://www.meier\-geinitz.de/sane/ma1509\-backend/ .
+.PP
+Other Mustek USB scanners are supported by the gt68xx, mustek_usb and the
+plustek backends. See
+.BR sane\-mustek_usb (5),
+.BR sane\-gt68xx (5)
+and
+.BR sane\-plustek (5)
+for details.
+.PP
+This backend can only work with scanners that are already detected by the
+operating system. See
+.BR sane\-usb (5)
+for details.
+.PP
+If you own a scanner other than the Mustek BearPaw 1200F that works with this
+backend, please let me know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.I /proc/bus/usb/devices
+or syslog) to me.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is a path-name for the special device that corresponds to a USB scanner.
+With Linux, such a device name could be
+.I /dev/usb/scanner0
+or
+.IR libusb:001:002 ,
+for example.
+.PP
+
+.SH CONFIGURATION
+The contents of the
+.I ma1509.conf
+file is a list of options and device names that correspond to Mustek BearPaw
+1200F scanners. Empty lines and lines starting with a hash mark (#) are
+ignored.
+.PP
+Instead of using the device name, the scanner can be autodetected by
+.B "usb vendor_id product_id"
+statements which are already included into
+.IR ma1509.conf .
+This is only supported with Linux 2.4.8 and higher and all systems that
+support libsub. "vendor_id" and "product_id" are hexadecimal numbers that
+identify the scanner. If this doesn't work, a device name must be placed in
+.I ma1509.conf
+as described above.
+.PP
+To set the time the lamp needs for warm-up, use
+.B option
+.B warmup-time
+in
+.IR ma1509.conf .
+The time is given in seconds after the option. The default is 30 seconds.
+.SH FILES
+.TP
+.I @CONFIGDIR@/ma1509.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-ma1509.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-ma1509.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_MA1509
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.BR sane\-gt68xx (5),
+.BR sane\-plustek (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-mustek (5),
+.BR sane\-mustek_pp (5),
+.br
+.I http://www.meier\-geinitz.de/sane/ma1509\-backend/
+
+.SH AUTHOR
+Henning Meier-Geinitz <henning@meier\-geinitz.de>
+
+.SH BUGS
+Resolutions higher than 600 dpi don't work
+.br
+Transparency adapter and automatic document feeder is not supported yet
+.br
+No support for "high-speed" mode (jpeg)
+.PP
+More detailed bug information is available at the MA-1509 backend homepage
+.IR http://www.meier\-geinitz.de/sane/ma1509-backend/ .
diff --git a/doc/sane-magicolor.man b/doc/sane-magicolor.man
new file mode 100644
index 0000000..1e6c0a5
--- /dev/null
+++ b/doc/sane-magicolor.man
@@ -0,0 +1,72 @@
+.\" .IX sane-magicolor
+.TH "sane-magicolor" "5" "10 Jan 2011" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.SH "NAME"
+sane\-magicolor \- SANE backend for KONICA MINOLTA magicolor scanners
+.SH "DESCRIPTION"
+The
+.B sane\-magicolor
+backend supports KONICA MINOLTA magicolor scanners connected via USB or LAN. Currently, only the magicolor 1690MF device is supported, no other devices with the same scanning protocol are known.
+.SH "SUPPORTED DEVICES"
+The following scanner should work with this backend:
+
+Device Details
+.br
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+.br
+Vendor: KONICA MINOLTA
+.br
+Model: magicolor 1690MF
+
+.SH "CONFIGURATION"
+.PP
+This section describes the backend's configuration file entries. The file is located at:
+.IP
+.I @CONFIGDIR@/magicolor.conf
+.PP
+For a proper setup, at least one of the following entries are needed:
+.IP
+.I net autodiscovery
+.br
+.I net [IP ADDRESS] [DEVICE-ID]
+.br
+.I usb
+.br
+.I usb [VENDOR-ID] [DEVICE-ID]
+
+.SH "FILES"
+.TP
+.I @CONFIGDIR@/magicolor.conf
+The backend configuration file
+.TP
+.I @LIBDIR@/libsane\-magicolor.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-magicolor.so
+The shared library implementing this backend (present on systems that support dynamic loading).
+.SH "ENVIRONMENT"
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "/tmp/config", ".", and "@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_MAGICOLOR
+If the library was compiled with debug support enabled, this environment variable controls the debug level for this backend. Higher debug levels increase the verbosity of the output.
+
+Example: export SANE_DEBUG_MAGICOLOR=127
+
+To obtain debug messages from the backend, set this environment variable before calling your favorite frontend (e.g. xscanimage).
+
+Example: SANE_DEBUG_MAGICOLOR=65 xscanimage
+.SH "KNOWN BUGS AND RESTRICTIONS"
+.PP
+Large color scans may sometimes timeout due to unknown reasons (the scanner simply stops returning data)
+.PP
+Cancelling large scans may lock up the scanner.
+.SH "SEE ALSO"
+.BR sane (7),
+.br
+.I http://wiki.kainhofer.com/hardware/magicolor_scan
+.SH "AUTHOR"
+.PP
+Reinhold Kainhofer <reinhold@kainhofer.com>
diff --git a/doc/sane-matsushita.man b/doc/sane-matsushita.man
new file mode 100644
index 0000000..578421a
--- /dev/null
+++ b/doc/sane-matsushita.man
@@ -0,0 +1,169 @@
+.TH sane\-matsushita 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-matsushita
+.SH NAME
+sane\-matsushita \- SANE backend for Panasonic KV-SS high speed scanners
+.SH DESCRIPTION
+The
+.B sane\-matsushita
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some Panasonic KV-SS high speed scanners. This
+backend is stable.
+.PP
+At present, the following scanners are known to work with this
+backend:
+.PP
+.RS
+.ft CR
+.nf
+ Product id
+--------------
+ KV-SS25
+ KV-SS25D
+ KV-SS55EX (*)
+ KV-S2025C (*)
+ KV-S2045C (*)
+ KV-S2065L (*)
+.fi
+.ft R
+.RE
+.PP
+(*) WARNING: None of the advanced options of these scanners are available (ie no color, no high resolution, no automatic cropping). Basically, the driver does no more than what it does for the KV-SS25. I don't have access to such scanners, and thus cannot add these options.
+
+Other Panasonic high speed scanners may or may not work with that backend.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d matsushita
+.RE
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner.
+.TP
+.B \-\-resolution
+selects the resolution for a scan. Each model supports all or a subset of these resolutions: 100, 150, 200, 240, 300, 360, 400.
+.TP
+.B \-\-duplex
+indicates whether to scan both side of the sheet.
+.TP
+.B \-\-feeder\-mode
+selects the number of pages to scan (one or until the tray is empty).
+
+.TP
+.B Geometry
+
+.TP
+.B \-\-paper\-size A4|...|Legal|Letter [A4]
+options selects the area to scan. It adjust the
+.B \-l \-t \-x \-y
+options accordingly. It does not need to be the real size of the paper.
+
+.TP
+.B \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters. It is possible to use
+the option
+.I \-\-paper\-size
+instead.
+
+.TP
+.B Enhancement
+
+.TP
+.B \-\-brightness
+controls the brightness of the acquired image. The value varies from 1 to 255, or less, depending on the scanner model.
+.TP
+.B \-\-contrast
+controls the contrast of the acquired image. Some models do not support that option.
+.TP
+.B \-\-automatic\-threshold
+automatically sets brightness, contrast, white level, gamma, noise reduction and image emphasis. These options are not available when automatic\-threshold is in use.
+.TP
+.B \-\-halftone\-pattern
+option sets the tonal gradation for the halftone mode. Pattern downloading is not implemented by the backend.
+.TP
+.B \-\-autoseparation
+provides automatic separation of text and images.
+.TP
+.B \-\-white\-level
+option indicate the source of the white base.
+.TP
+.B \-\-noise\-reduction
+reduces the isolated dot noise. This option is not supported by all scanners.
+.TP
+.B \-\-image\-emphasis
+option sets the image emphasis. Some selection are not available on all scanners.
+.TP
+.B \-\-gamma
+options set the gamma curve. It is only valid for Gray modes, and is not available on all scanners. Gamma downloading is not implemented by the backend.
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/matsushita.conf supports the device name to use (eg /dev/scanner) and the SCSI option to auto-detect the scanners supported.
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-matsushita.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-matsushita.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_MATSUSHITA
+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.
+
+
+.SH LIMITATIONS
+.TP
+.B Memory in the KV-SS 25
+The KV-SS 25 has not enough internal memory to scan a whole A4 page in duplex mode at high resolution. The frontend will return a memory error in that case. Apparently, the KV-SS 25D has not that problem.
+.TP
+.B Pattern and gamma downloading
+The scanner, with the proper firmware, can download a halftone pattern
+and a gamma table. This is not implemented.
+.TP
+.B Sub-areas
+The scanner can support up to 3 sub-areas on each side to define some
+more precise enhancement options. This is not implemented.
+.TP
+.B Duplex mode
+The backend does not support the setting of different options for each side. The scan will occur with the same options (halftone pattern, brightness, image emphasis) for both sides.
+
+
+.SH SCANNING EXAMPLE
+To date, the only frontend capable of using this scanner at full speed is
+.B
+scanadf.
+
+A scanadf command line would be:
+
+scanadf \-d matsushita \-\-output\-file scan%04d.pbm \-\-start\-count 0 \-\-duplex \-\-resolution 300 \-\-feeder\-mode="All pages" \-\-paper\-size="A4"
+
+
+.SH BUGS
+
+None known.
+
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH AUTHOR
+
+.TP
+The package is actively maintained by Frank Zago.
+.I http://www.zago.net/sane/#matsushita
diff --git a/doc/sane-microtek.man b/doc/sane-microtek.man
new file mode 100644
index 0000000..84047dc
--- /dev/null
+++ b/doc/sane-microtek.man
@@ -0,0 +1,194 @@
+.TH sane\-microtek 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-microtek
+.SH NAME
+sane\-microtek \- SANE backend for Microtek scanners
+.SH DESCRIPTION
+The
+.B sane\-microtek
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the "second generation" Microtek scanners. At present,
+the following hardware is known to work with this backend:
+.PP
+.RS
+Microtek ScanMaker E2, E3, E6
+.br
+Microtek ScanMaker II, IIG, IIHR, IISP, III
+.br
+Microtek ScanMaker 35t, 35t+, 45t
+.br
+Microtek ScanMaker 600GS, 600ZS (see bug notes)
+.br
+Agfa StudioScan
+.br
+Agfa StudioScan II, StudioScan IIsi
+.br
+Agfa Arcus II (but not the "Arcus")
+.br
+Agfa DuoScan (preliminary)
+.br
+Vobis "Highscreen Realscan"
+.br
+Microtek Color PageWiz (preliminary)
+.br
+.PP
+Transparent Media Adapter
+.br
+Document AutoFeeder
+.br
+.RE
+.PP
+The driver supports line art, halftone, 8bpp gray, and 24bpp color scans
+at normal and "expanded" resolutions (i.e. 1200x1200 on an E6), fast scans
+for color previews, and downloadable gamma tables.
+.PP
+The supported scanners are all SCSI scanners. However, some parallel
+port models may work (under Linux), if they use a parport->scsi chip,
+and if you can find a scsi->parport driver. This is known to be the
+case for the Color PageWiz.
+.PP
+The driver does
+.B not
+support the newest Microtek scanners, such as the V330 and V660, which use
+a new and very different SCSI-II command set. For those, try the alternate
+.B microtek2
+backend. Most non-SCSI scanners would use the new command set. Most
+scanners newer than the Scanmaker E6 would use the new command set.
+.PP
+If you own a Microtek scanner other than the ones listed above, tell us
+what happens --- see the
+.BR BUGS
+section at the end of this document.
+.PP
+Although this manual page is generally updated with each release,
+up-to-date information on new releases and extraneous helpful hints
+are available from the backend homepage:
+.br
+.RS
+.B http://www.mir.com/mtek/
+.RE
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the UNIX path-name for the special device that corresponds to the
+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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example.
+.PP
+
+.SH CONFIGURATION
+The contents of the
+.I microtek.conf
+file is a list of device names that correspond to Microtek
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+/dev/scanner
+.br
+# this is a comment
+.br
+/dev/sge
+.RE
+.PP
+The configuration file may also contain the special tokens
+.I norealcal
+or
+.I noprecal.
+.I norealcal
+will disable the use of magic, undocumented scanner calibration commands
+which are known to work on the E6, but may not work with other models.
+.I noprecal
+will disable logic which tries to avoid scanner precalibration. This logic
+would only have been activated if the magic calibration code was turned off.
+
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/microtek.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-microtek.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-microtek.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_MICROTEK
+If the library was compiled with debugging support enabled, this
+environment variable controls the debug level for this backend.
+A value of 128 requests maximally copious debug output; smaller
+levels reduce verbosity.
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+
+.SH AUTHOR
+Matt Marjanovic
+
+.SH BUGS
+Known bugs/limitations are:
+.PP
+.RS
+Brightness and contrast broken.
+.br
+The 600GS is grayscale only, and will lock up if you select color.
+(Unfortunately, the 600GS and 600ZS are indistinguishable by software.)
+.br
+.RE
+.PP
+i.e. don't complain about these --- but if brightness and/or contrast
+.B do
+work for you, please tell me.
+.PP
+If your scanner locks up, try setting the
+.I norealcal
+or
+.I noprecal
+option in the configuration file (first one, then both), and see if it helps.
+(If it does, report it.)
+.PP
+Send lengthy bug reports and new scanner information to
+.BR mtek\-bugs@mir.com .
+All bug reports and new scanner inquiries should include an error log file.
+You can generate copious
+stderr output by setting the SANE_DEBUG_MICROTEK environment variable
+described above. For example:
+.PP
+.RS
+setenv SANE_DEBUG_MICROTEK 128
+.RE
+.PP
+More general comments, suggestions, and inquiries about frontends
+or SANE should go to
+.BR sane\-devel@lists.alioth.debian.org ,
+the SANE Developers mailing list. Have a look at
+http://www.sane\-project.org/mailing\-lists.html concerning subscription to sane\-devel.
diff --git a/doc/sane-microtek2.man b/doc/sane-microtek2.man
new file mode 100644
index 0000000..b0e359b
--- /dev/null
+++ b/doc/sane-microtek2.man
@@ -0,0 +1,318 @@
+.TH sane\-microtek2 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.SH NAME
+sane\-microtek2 \- SANE backend for Microtek scanners with SCSI-2 command set
+.SH DESCRIPTION
+The
+.B sane\-microtek2
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Microtek scanners with a SCSI-2 command set.
+This backend can be considered alpha to beta. Some scanner models are reported
+to work well, others not. New development versions of this backend can be
+obtained from
+.B http://karstenfestag.gmxhome.de
+.PP
+There exists a different backend for Microtek scanners with SCSI-1 command
+set.
+Refer to sane\-microtek(5) for details.
+.PP
+And there is work in progress for the ScanMaker 3600.
+See
+.B http://sourceforge.net/projects/sm3600
+.PP
+At present, the following scanners are known positively to work with this
+backend:
+.PP
+.ft CR
+.nf
+Vendor Product id Remark
+--------------------------------------------------------------------
+Microtek E3+ Parport and SCSI
+Microtek X6 SCSI
+Microtek X6EL SCSI
+Microtek X6USB USB
+Microtek ScanMaker V300 Parport and SCSI
+Microtek ScanMaker V310 Parport and SCSI
+Microtek ScanMaker V600 Parport and SCSI
+Microtek ScanMaker 330 SCSI
+Microtek ScanMaker 630 SCSI
+Microtek ScanMaker 636 SCSI
+Microtek ScanMaker 9600XL SCSI; only flatbed mode?
+Microtek Phantom 330CX Parport
+Microtek SlimScan C3 Parport
+Microtek SlimScan C6 USB
+Microtek Phantom 636 SCSI
+Microtek Phantom 636CX Parport
+Microtek V6USL SCSI and USB
+Microtek V6UPL USB; not stable
+Microtek X12USL SCSI; only 8bit color, work in progress
+Vobis HighScan SCSI (E3+ based models)
+Scanport SQ300 Parport?
+Scanport SQ4836 SCSI
+Scanpaq SQ2030 Parport
+.fi
+.ft R
+.PP
+Additional information can be found at
+.BR http://www.sane\-project.org/ .
+.PP
+If you own a Microtek scanner other than the ones listed above,
+it may or may not work with SANE! Because equal scanners are sold under
+different names in different countries your model may be equivalent to one of
+the above.
+.PP
+The parport scanners work with the ppscsi + onscsi kernel modules. See
+.I http://cyberelk.net/tim/parport/ppscsi.html
+and
+.IR http://penguin-breeder.org/kernel/download/ .
+
+.PP
+The USB scanners work with the microtek kernel module. You may have to add the
+vendor and model codes to microtek.c if they aren't yet listed there.
+.PP
+Both parport and USB scanners need the generic SCSI support, so check if you
+have loaded the scsi_mod and sg modules!
+.PP
+If you try your scanner for the first time keep an eye on it. If it gets
+commands that it doesn't understand the scanhead may go beyond the scan area.
+The scanner then makes strange noises. In this case immediately switch off
+the scanner or disconnect its power cable to prevent damages!
+.PP
+If your scanner is a different one than the models mentioned above and it is
+working please tell the author about it. It would be nice if you add a logfile
+to this information (creation of the logfile: see below).
+.PP
+If your scanner is not working properly you also should create a logfile and
+send it to the author. He will use the information to improve the backend and
+possibly make your scanner work.
+.PP
+.br
+How to create the logfile?
+.TP
+\- put the line
+.br
+"option dump 2" into your
+.I microtek2.conf
+file or change the existing "option dump" to "2"
+.TP
+\- in a terminal (bash) type
+.br
+"export SANE_DEBUG_MICROTEK2=30" and then
+.br
+"scanimage \-l0 \-t0 \-x100 \-y20 2>scan.log >sout.pnm"
+.br
+You get two files: scan.log contains the logfile and sout.pnm the scanned
+image (if there was scanned something). Zip them before sending.
+
+.SH "FRONTEND OPTIONS"
+This backend dynamically enables the options for the frontend, that are
+supported by the scanner in dependence of the scanning-mode and other
+options.
+Not supported options are disabled.
+.PP
+The following options are supported by the Microtek2-driver:
+.PP
+Color, grayscale, halftone and lineart scans.
+.PP
+Highlight, midtone, shadow, contrast, brightness, exposure time control,
+gamma correction, threshold (dependent of the scan mode and the scanner
+capabilities)
+.PP
+Transparency media adapter, automatic document feeder
+.PP
+Additional options can be enabled or disabled in the
+.I microtek2.conf
+file. See the configuration section of this manpage.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the UNIX path-name for the special device that corresponds to the
+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
+.I /dev/sga
+or
+.I /dev/sge
+for example.
+.SH "CONFIGURATION"
+The configuration file for this backend resides in
+.IR @CONFIGDIR@/microtek2.conf .
+
+Its contents is a list of device names that correspond to Microtek
+scanners with SCSI-2 interface. Empty lines and lines starting with
+a hash mark (#) are ignored.
+.PP
+The configuration file may also contain options. Global options that are valid
+for all devices are placed above the device names. Device-specific options
+are
+placed under the device name. Note that, except for option dump <n> and
+option strip-height <n>, the entry in the microtek2.conf file only enables
+the corresponding option for being showed in the frontend. There, in the
+frontend, you can switch the options on and off.
+Currently the following options are supported:
+.PP
+.RS
+option dump <n>
+.br
+option strip\-height <n>
+.br
+option no\-backtrack\-option <on/off>
+.br
+option lightlid\-35 <on/off>
+.br
+option toggle\-lamp <on/off>
+.br
+option lineart\-autoadjust <on/off>
+.br
+option backend\-calibration <on/off>
+.br
+option colorbalance\-adjust <on/off>
+.RE
+.PP
+.I option dump <n>
+enables printing of additional information about the SCSI commands that are
+sent to the scanner to stderr. This option is primarily useful for debugging
+purpose. This option has to be a global option and is best placed at the top
+of the
+.I microtek2.conf
+file.
+.PP
+If n=1 the contents of the command blocks
+and the results for the INQUIRY and READ SCANNER ATTRIBUTES command are
+printed to stderr.
+.PP
+If n=2 the contents of the command blocks for all other SCSI commands are
+printed to stderr, too. If n=3 the contents of the gamma table is
+printed, too. If n=4 all scan data is additionally printed to stderr.
+.PP
+The default is n=1.
+.PP
+.I option strip\-height <n>
+, where <n> is a floating point number, limits the amount of data that is
+read from the scanner with one read command.
+The unit is inch and <n> defaults to 1.0, if this option is not set in the
+configuration file. If less than <n> inch of data fit into the SCSI buffer,
+then the smaller value is used and this option has no effect.
+.PP
+If your system has a big SCSI buffer and you want to make use of the whole
+buffer, increase the value for <n>. For example, if <n> is set to 14.0,
+no restrictions apply for scanners with a letter, legal or A4 sized scan area.
+.PP
+.PP
+The following options enable or disable additional frontend options. If an
+option is set to <on> an appropriate option will appear in the frontend.
+.PP
+.I option no\-backtrack\-option <on/off>
+prevents the scanner head from moving backwards between the read commands.
+This speeds up scanning. Try it.
+.PP
+.I option lightlid\-35 <on/off>
+If you use the LightLid-35 transparency adapter you get an advanced
+option which switches off the flatbed lamp during the scan.
+.PP
+.I option toggle\-lamp <on/off>
+You get a button in the frontend where you can switch on and off the flatbed
+lamp.
+.PP
+.I option lineart\-autoadjust <on/off>
+You can tell the backend to try to determine a good value for the lineart
+threshold.
+.PP
+.I option backend\-calibration <on/off>
+Some scanners (e.g. Phantom 330CX and 636CX) need to have calibrated the data
+by the backend. Try this option if you see vertical stripes in your pictures.
+.PP
+.I option colorbalance\-adjust <on/off>
+Some scanners (e.g. Phantom 330CX and 636CX) need to have corrected
+the color balance. If this option is enabled you get advanced options
+where you can balance the colors. And you will have a button
+to use the values that the firmware of the scanner provides.
+.PP
+A sample configuration file is shown below:
+.PP
+.RS
+option dump 1
+.br
+option strip\-height 1.0
+.br
+/dev/scanner
+.br
+option no\-backtrack\-option on
+.br
+# this is a comment
+.br
+/dev/sge
+.br
+option lightlid\-35 on
+.RE
+
+This backend also supports the new configuration file format which makes
+it easier to detect scanners under Linux. If you have only one scanner it
+would be best to use the following configuration file for this backend:
+.PP
+.RS
+option dump 1
+.br
+option strip\-height 14.0
+.br
+option no\-backtrack\-option on
+.br
+option backend\-calibration on
+.br
+option lightlid\-35 on
+.br
+option toggle\-lamp on
+.br
+option lineart\-autoadjust on
+.br
+option colorbalance\-adjust off
+.br
+scsi * * Scanner
+.RE
+
+In this case all SCSI-Scanners should be detected automatically because of the
+.PP
+scsi * * Scanner
+.PP
+line.
+
+.SH "FILES"
+.TP
+.I @CONFIGDIR@/microtek2.conf
+The backend configuration file.
+.TP
+.I @LIBDIR@/libsane\-microtek2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-microtek2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH "ENVIRONMENT"
+.TP
+.B SANE_DEBUG_MICROTEK2
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller
+levels reduce verbosity. To see error messages on stderr set
+SANE_DEBUG_MICROTEK2 to 1 (Remark: The whole debugging levels should
+be better revised).
+.br
+E.g. just say:
+.br
+export SANE_DEBUG_MICROTEK2=128
+.SH "SEE ALSO"
+sane\-scsi(5), sane(7)
+.SH "AUTHORS"
+Bernd Schroeder (not active anymore)
+.br
+Karsten Festag karsten.festag@gmx.de
+
+
+
+
+
diff --git a/doc/sane-mustek.man b/doc/sane-mustek.man
new file mode 100644
index 0000000..536466f
--- /dev/null
+++ b/doc/sane-mustek.man
@@ -0,0 +1,407 @@
+.TH sane\-mustek 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-mustek
+.SH NAME
+sane\-mustek \- SANE backend for Mustek SCSI flatbed scanners (and some other devices)
+.SH DESCRIPTION
+The
+.B sane\-mustek
+library implements a SANE (Scanner Access Now Easy) backend that provides access
+to Mustek (and some relabeled Trust and Primax) SCSI and parport flatbed
+scanners. At present, the following scanners are known to work more or less
+with this backend:
+.PP
+.RS
+Paragon MFS-6000CX
+.br
+Paragon MFS-12000CX
+.br
+Paragon MFC-600S, 600 II CD, ScanMagic 600 II SP
+.br
+Paragon MFC-800S, 800 II SP
+.br
+Paragon MFS-6000SP
+.br
+Paragon MFS-8000SP
+.br
+Paragon MFS-1200SP, MFS-12000SP
+.br
+ScanExpress 6000SP
+.br
+ScanExpress 12000SP, 12000SP Plus, Paragon 1200 III SP, ScanMagic 9636S, 9636S Plus
+.br
+Paragon 1200 LS
+.br
+ScanExpress A3 SP
+.br
+Paragon 1200 SP Pro
+.br
+Paragon 1200 A3 Pro
+.br
+Paragon 600 II EP
+.br
+Paragon 600 II N
+.br
+Trust Imagery 1200
+.br
+Trust Imagery 1200 SP
+.br
+Trust Imagery 4800 SP
+.br
+Trust SCSI Connect 19200
+.br
+Primax Compact 4800 SCSI
+.br
+.RE
+.PP
+More details can be found on the Mustek SCSI backend homepage
+.IR http://www.meier\-geinitz.de/sane/mustek\-backend/ .
+.PP
+Don't mix up MFS (Paragon), Pro and ScanExpress models! They're
+completely different. Check the exact model name!
+.PP
+Note that most of the above scanners come with a SCSI interface. The only
+non-SCSI scanners that have some support at this point is the 600 II N and 600
+II EP scanners. The former one comes with its own parallel port adapter (i.e.,
+it does
+.I not
+attach to the printer port). Both scanners use the SCSI protocol internally,
+too. More info on how to use these parallel port scanners can be found below in
+section
+.BR "PARALLEL PORT SCANNERS" .
+Other parallel port scanners are not supported by this backend but you may be
+successful using the Mustek parallel port backend mustek_pp, see
+.BR sane\-mustek_pp (5).
+USB scanners are also not supported by this backend but the ma1509, mustek_usb,
+gt68xx, and plustek backends include support for some of them, see
+.BR sane\-ma1509 (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-gt68xx "(5), and"
+.BR sane\-plustek (5).
+.PP
+Mustek scanners have no protection against exceeding the physical scan
+area height. That is, if a scan is attempted with a height that
+exceeds the height of the scan surface, the scanner begins making loud
+noises and the scan mechanism may be damaged. Thus, if you hear such
+a noise, IMMEDIATELY turn off the scanner. This shouldn't happen if
+your scanner is in the list of known scanners. There is more
+information in the
+.I @DOCDIR@/PROBLEMS
+file.
+.PP
+If you own a Mustek (or Trust) scanner other than the ones listed
+above that works with this backend, please let us know by sending the
+scanner's exact model name (look at the front and back of the scanner)
+and a debug output to
+.IR sane\-devel@lists.alioth.debian.org .
+You can get the debug output by setting the environment variable
+.B SANE_DEBUG_MUSTEK
+to 5 and showing the list of available scanners with scanimage \-L. Please
+send all of it to the mailing list. You must be subscribed to sane\-devel
+before you can send mail to the list. See
+.I http://www.sane\-project.org/mailing\-lists.html
+for details.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is either the path-name for the special device that corresponds to a
+SCSI scanner or the port number at which the parallel port scanners can
+be found (see section
+.B "PARALLEL PORT SCANNERS"
+below). For SCSI scanners, the special device name must be a generic SCSI
+device or a symlink to such a device. The program
+.I sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name
+could be
+.I /dev/sg0
+or
+.IR /dev/sg3 ,
+for example. See
+.BR sane\-scsi (5)
+for details.
+.SH CONFIGURATION
+The contents of the
+.I mustek.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. See
+.BR sane\-scsi (5)
+on details of what constitutes a valid device name.
+.PP
+The supported options are
+.BR linedistance\-fix ,
+.BR lineart\-fix ,
+.BR legal\-size ,
+.BR buffersize ,
+.BR blocksize ,
+.BR strip\-height ,
+.BR disable\-double\-buffering ,
+.BR disable\-backtracking ,
+and
+.BR force\-wait .
+.PP
+Options come in two flavors: global and positional ones. Global
+options apply to all devices managed by the backend whereas positional
+options apply just to the most recently mentioned device. Note that
+this means that the order in which the options appear matters!
+.PP
+Option
+.B linedistance\-fix
+is positional and works around a problem that occurs with some SCSI
+controllers (notably the ncr810 controller under Linux). If color
+scans have horizontal stripes and/or the colors are off, then it's
+likely that your controller suffers from this problem. Turning on
+this option usually fixes the problem.
+.PP
+Option
+.B lineart\-fix
+is positional and works around a timing problem that seems to exist
+with certain MFS-12000SP scanners. The problem manifests itself in
+dropped lines when scanning in lineart mode. Turning on this option
+should fix the problem but may slow down scanning a bit.
+.PP
+Option
+.B legal\-size
+is positional and sets the size of the scan area to Legal format. Set this
+option if you own a Paragon 12000 LS. It can't be distinguished by
+software from a ScanExpress 12000 SP (ISO A4 format).
+.PP
+Option
+.B buffersize
+is a positional option that overrides the default value set for the size of
+the SCSI buffer. The buffer size is specified in kilobytes. The default value
+is 128. Because of double buffering the buffer actually sent to the scanner
+is half the size of this value. Try to increase this value to achieve higher
+scan speeds. Note that some ScanExpress scanners don't like buffer sizes above
+64 kb (buffersize = 128). If your sg driver can't set SCSI buffer sizes at
+runtime you may have to change that value, too. See sane\-scsi(5) for details.
+.PP
+Option
+.B blocksize
+is a positional option that overrides the default value set for the maximum
+amount of data scanned in one block. The buffer size is specified in
+kilobytes. Some scanners freeze if this value is bigger than 2048. The default
+value is 1 GB (so effectively no limit) for most scanners. Don't change this
+value if you don't know exactly what you do.
+.PP
+Option
+.B strip\-height
+is a global option that limits the maximum height of the strip scanned with a
+single SCSI read command. The height is specified in inches and may contain a
+fractional part (e.g., 1.5). Setting the strip\-height to a small value (one
+inch, for example) reduces the likelihood of encountering problems with SCSI
+driver timeouts and/or timeouts with other devices on the same SCSI bus.
+Unfortunately, it also increases scan times. With current SCSI adapters and
+drivers this option shouldn't be needed any more.
+.PP
+Option
+.B disable\-double\-buffering
+is a global option. If set, the backend will only send one buffer at a time to
+the scanner. Try this option if you have trouble while scanning, e.g. SCSI
+errors, freezes, or the first few cm are repeated over and over again in your
+image.
+.PP
+Option
+.B disable\-backtracking
+is a positional option. If set, the scanner will not move back its slider
+after each SCSI buffer is filled (`backtracking'). Setting this option will
+lead to faster scans but may also produce horizontal stripes. This option
+doesn't work with every scanner (only some of the paragon models can modify
+backtracking).
+.PP
+Finally,
+.B force\-wait
+is a global option. If set, the backend will wait until the device is ready
+before sending the inquiry command. Further more the backend will force the
+scan slider to return to its starting position (not implemented for all
+scanners). This option may be necessary with the 600 II N or when scanimage is
+used multiple times (e.g. in scripts). The default is off (not set).
+.PP
+A sample configuration file is shown below:
+.PP
+.RS
+# limit strip height of all scanners to 1.5 inches:
+.br
+option strip\-height 1.5
+.br
+.br
+/dev/scanner # first Mustek scanner
+.br
+# 1 MB buffer for /dev/scanner:
+.br
+option buffersize 1024
+.br
+/dev/sge # second Mustek scanner
+.br
+# turn on fixes for /dev/sge:
+.br
+option lineart\-fix
+.br
+option linedistance\-fix
+.RE
+
+.SH "SCSI ADAPTER TIPS"
+.PP
+You need a SCSI adapter for the SCSI scanners. Even if the connector is the
+same as that of parallel port scanners, connecting it to the computers
+parallel port will NOT work.
+.PP
+Mustek SCSI scanners are typically delivered with an ISA SCSI adapter.
+Unfortunately, that adapter is not worth much since it is not
+interrupt driven. It is (sometimes) possible to get the supplied card
+to work, but without interrupt line, scanning will be very slow and put
+so much load on the system, that it becomes almost unusable for other tasks.
+.PP
+If you already have a working SCSI controller in your system, you
+should consider that Mustek scanners do not support the SCSI-2
+disconnect/reconnect protocol and hence tie up the SCSI bus while a
+scan is in progress. This means that no other SCSI device on the same
+bus can be accessed while a scan is in progress.
+.PP
+Because the Mustek-supplied adapter is not worth much and because
+Mustek scanners do not support the SCSI-2 disconnect/reconnect
+protocol, it is recommended to install a separate (cheap) SCSI
+controller for Mustek scanners. For example, ncr810 based cards are
+known to work fine and cost as little as fifty US dollars.
+.PP
+For Mustek scanners, it is typically necessary to configure the low-level SCSI
+driver to disable synchronous transfers (sync negotiation), tagged command
+queuing, and target disconnects. See
+.BR sane\-scsi (5)
+for driver- and platform-specific information.
+.PP
+The ScanExpress models have sometimes trouble with high resolution
+color mode. If you encounter sporadic corrupted images (parts duplicated
+or shifted horizontally) kill all other applications before scanning
+and (if sufficient memory is available) disable swapping.
+.PP
+Details on how to get the Mustek SCSI adapters and other cards running can be
+found at
+.IR http://www.meier\-geinitz.de/sane/mustek\-backend/#SCSI .
+
+.SH "PARALLEL PORT SCANNERS"
+This backend has support for the Paragon 600 II EP and Paragon 600 II N parallel
+port scanners. Note that the latter scanner comes with its own ISA card that
+implements a funky parallel port (in other words, the scanner does not connected
+to the printer parallel port).
+.PP
+These scanners can be configured by listing the port number
+of the adapter or the parallel port in the mustek.conf file. Valid port numbers
+for the 600 II N are
+.IR 0x26b ", " 0x2ab ", " 0x2eb ", " 0x22b ", " 0x32b ", " 0x36b ", "
+.IR 0x3ab ", " 0x3eb .
+For the 600 II EP use one of these:
+.IR parport0 ", " parport1 ", " parport2 ", " 0x378 ", " 0x278 ", " 0x3bc .
+Pick one that doesn't conflict with the other hardware in your computer. Put
+only one number on a single line. Example:
+.PP
+.RS
+.I 0x3eb
+.RE
+.PP
+Note that for these scanners usually root privileges are required to access the
+I/O ports. Thus, either make frontends such as
+.BR scanimage (1)
+and
+.BR xscanimage (1)
+setuid root (generally not recommended for safety reasons) or, alternatively,
+access this backend through the network daemon
+.BR saned (8).
+.PP
+If the Mustek backend blocks while sending the inquiry command to the scanner,
+add the option
+.B force\-wait
+to
+.IR mustek.conf .
+.PP
+Also note that after a while of no activity, some scanners themselves (not
+the SANE backend) turns off their CCFL lamps. This shutdown is not always
+perfect with the result that the lamp sometimes continues to glow
+dimly at one end. This doesn't appear to be dangerous since as soon as
+you use the scanner again, the lamp turns back on to the normal high
+brightness. However, the first image scanned after such a shutdown may
+have stripes and appear to be over-exposed. When this happens, just
+take another scan, and the image will be fine.
+.SH FILES
+.TP
+.I @CONFIGDIR@/mustek.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-mustek.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-mustek.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_MUSTEK
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+.ft CR
+.nf
+Value Description
+0 no output
+1 print fatal errors
+2 print important messages
+3 print non-fatal errors and less important messages
+4 print all but debugging messages
+5 print everything
+.fi
+.ft R
+
+Example:
+export SANE_DEBUG_MUSTEK=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-find\-scanner (1),
+.BR sane\-scsi (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-gt68xx (5),
+.BR sane\-plustek (5),
+.BR sane\-mustek_pp (5)
+.br
+.I @DOCDIR@/mustek/mustek.CHANGES
+.br
+.I http://www.meier\-geinitz.de/sane/mustek\-backend/
+
+.SH AUTHOR
+David Mosberger, Andreas Czechanowski, Andreas Bolsch (SE extensions),
+Henning Meier-Geinitz, James Perry (600 II EP).
+
+.SH BUGS
+Scanning with the SCSI adapters supplied by Mustek is very slow at
+high resolutions and wide scan areas.
+.PP
+Some scanners (e.g. Paragon 1200 A3 + Pro, SE A3) need more testing.
+.PP
+The gamma table supports only 256 colors, even if some scanners can do more.
+.PP
+More detailed bug information is available at the Mustek backend
+homepage:
+.IR http://www.meier\-geinitz.de/sane/mustek\-backend/ .
diff --git a/doc/sane-mustek_pp.man b/doc/sane-mustek_pp.man
new file mode 100644
index 0000000..1316cf2
--- /dev/null
+++ b/doc/sane-mustek_pp.man
@@ -0,0 +1,490 @@
+.TH sane\-mustek_pp 5 "13 Jul 2008"
+.de EX
+.sp
+.nf
+.ft CW
+..
+.de EE
+.ft R
+.fi
+.sp
+..
+.IX sane\-mustek_pp
+.SH NAME
+sane\-mustek_pp \- SANE backend for Mustek parallel port flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-mustek_pp
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Mustek parallel port flatbed scanners and OEM versions.
+
+There are 2 classes of Mustek parallel port scanners: regular
+.B CCD
+(cold cathode device) scanners and
+.B CIS
+(contact image sensor) scanners.
+.P
+The current version of this backend supports both CCD type scanners and
+CIS type scanners.
+.P
+The following scanners might work with this backend:
+
+.SS "CCD scanners"
+
+.EX
+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 no
+SM 1200 ED Plus 1015 01 no
+SE 12000 P 1505 05 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
+.EE
+.SS CIS scanners
+.EX
+Model: ASIC ID: works:
+-----------------------------------------------
+Mustek 600 CP & 96 CP 1015 yes (*)
+Mustek 1200 CP 1015 yes
+Mustek 1200 CP+ 1015 yes
+.EE
+
+.EX
+OEM versions Original works
+--------------------------------------------------
+Medion/LifeTec/Tevion
+ MD/LT 9350/9351 1200 CP yes
+ MD/LT 9850/9851 1200 CP maybe (**)
+ MD/LT 9858 1200 CP probably
+ MD/LT 9890/9891 1200 CP yes
+Targa
+ Funline TS12EP 1200 CP yes
+ Funline TS6EP 600 CP yes
+Trust
+ Easy Connect 9600+ 600 CP yes
+Cybercom
+ 9352 1200 CP yes (***)
+.EE
+.HP
+(*) Calibration problems existed with earlier version of
+this driver. They seem to be solved now.
+.HP
+(**) Problems have been reported in the past for the
+MD/LT9850 type (striped scans, head moving in wrong
+direction at some resolutions). It is not known whether
+the current version of the driver still has these problems.
+.PP
+.B IF YOU HEAR LOUD CLICKING NOISES, IMMEDIATELY UNPLUG THE SCANNER !
+(This holds for any type of scanner).
+.HP
+(***) Possibly, the engine_delay parameter has to be set to 1 ms
+for accurate engine movements.
+.PP
+Please note that this backend is still under construction. Certain models
+are currently not supported and some may never be because the communication
+protocol is still unknown (eg., SE 12000 P).
+.PP
+Some scanners work faster when
+.B EPP/ECP
+is enabled in the BIOS. EPP mode however may lead to hard-locks on some Linux
+systems. If that is the case for you, you can either disable ECP/EPP in your
+BIOS or disable it in the backend itself (see GLOBAL OPTIONS).
+.PP
+Note that the backend needs to run as root or has to have appropriate access
+rights to /dev/parport* if libieee1284 support is compiled in. To allow user
+access to the scanner run the backend through the network interface (See
+saned(8) and sane\-net(5)). Note also that the backend
+.I does not
+support
+.IR "parport sharing" ,
+i.e. if you try printing while scanning, your computer may crash. To enable
+parport sharing, you have to enable libieee1284 at compile time. This backend
+also conflicts with the
+.I 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".
+
+.SH "DEVICE DEFINITION"
+This backend allows multiple devices being defined and configured via the
+.B mustek_pp.conf
+file (even simultaneously, provided that they are connected to different
+parallel ports). Please make sure to edit this file
+.B before
+you use the backend.
+.PP
+A device can be defined as follows:
+.PP
+.RS
+.I scanner <name> <port name> <driver>
+.RE
+.PP
+where
+.HP
+.B <name>
+is an arbitrary name for the device, optionally enclosed by double quotes,
+for instance "LifeTec 9350".
+.HP
+.B <port name>
+is the name of the parallel port to which the device is connected. In case
+libieee1284 is used for communication with the port
+.I (default
+.IR setup) ,
+valid port names are
+.BR parport0 ,
+.BR parport1 ,
+and
+.BR parport2 .
+.PP
+In case the backend is configured for raw IO
+.I (old
+.IR setup) ,
+port addresses have to be used instead of port names:
+.BR 0x378 ,
+.BR 0x278 ,
+or
+.BR 0x3BC .
+The mapping of parallel ports (lp0, lp1, and lp2) to these addresses
+can be different for different Linux kernel versions. For instance,
+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 /etc/conf.modules,
+/etc/modules.conf and/or /proc/ioports.
+.PP
+If you are unsure which port to use, you can use the magic value
+.BR *
+to probe for your scanner.
+.PP
+.HP
+.B <driver>
+is the driver to use for this device. Currently available drivers are:
+.IP
+.BR cis600 " : for 600 CP, 96 CP & OEM versions"
+.br
+.BR cis1200 " : for 1200 CP & OEM versions"
+.br
+.BR cis1200+ " : for 1200 CP+ & OEM versions"
+.br
+.BR ccd300 " : for 600 IIIE P & OEM version"
+.IP
+.B Choosing the wrong driver can damage your scanner!
+.br
+Especially, using the 1200CP settings on a 600CP can be
+harmful. If the scanner starts making a loud noise, turn
+it off immediately !!!
+.PP
+Using the cis600 driver on a 1200CP or a 1200CP+ is probably not
+dangerous. The cis1200+ driver also works for the 1200CP, and using
+the cis1200 driver on a 1200CP+ will typically result in scans that
+cover only half of the width of the scan area (also not dangerous).
+.PP
+If unsure about the exact model of your OEM version, check the optical
+resolution in the manual or on the box: the 600CP has a maximum optical
+resolution of 300x600 DPI, whereas the 1200CP and 1200CP+ have a maximum
+optical resolution of 600x1200 DPI.
+.PP
+Examples:
+.PP
+.RS
+scanner "LifeTec 9350" 0x378 cis1200
+.PP
+scanner Mustek_600CP 0x378 cis600
+.PP
+scanner Mustek_600IIIEP * ccd300
+.RE
+
+If in doubt which port you have to use, or whether your scanner is
+detected at all, you can use
+.B sane\-find\-scanner \-p
+to probe all configured ports.
+
+.SH CONFIGURATION
+.PP
+The contents of the
+.B mustek_pp.conf
+file is a list of device definitions and device options that correspond to
+Mustek scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. Options have the following format:
+.PP
+.RS
+.I option <name> [<value>]
+.RE
+.PP
+Depending on the nature of the option, a value may or may not be present.
+Options always apply to the scanner definition that precedes them. There
+are no global options. Options are also driver-specific: not all drivers
+support all possible options.
+
+.SS Common options
+.TP
+.B bw <value>
+Black/white discrimination value to be used during lineart scanning. Pixel
+values below this value are assumed to be black, values above are
+assumed to be white.
+.br
+Default value: 127
+.br
+Minimum: 0
+.br
+Maximum: 255
+.sp
+Example: option bw 150
+
+.SS CIS driver options
+.TP
+.B top_adjust <value>
+Vertical adjustment of the origin, expressed in millimeter (floating point).
+This option can be used to calibrate the position of the origin, within
+certain limits. Note that CIS scanners are probably temperature sensitive, and
+that a certain inaccuracy may be hard to avoid. Differences in offset between
+runs in the order of 1 to 2 mm are not unusual.
+.br
+Default value: 0.0
+.br
+Minimum: \-5.0
+.br
+Maximum: 5.0
+.br
+.sp
+Example: option top_adjust \-2.5
+.TP
+.B slow_skip
+Turns fast skipping to the start of the scan region off. When the region to
+scan does not start at the origin, the driver will try to move the scanhead
+to the start of the scan area at the fastest possible speed. On some models,
+this may not work, resulting in large inaccuracies (up to centimeters).
+By setting this option, the driver is forced to use normal speed during
+skipping, which can circumvent the accuracy problems. Currently, there are
+no models for which these inaccuracy problems are known to occur.
+.sp
+By default, fast skipping is used.
+.sp
+Example: option slow_skip
+.TP
+.B engine_delay <value>
+Under normal circumstances, it is sufficient for the driver to wait for the
+scanner signaling that the engine is stable, before a new engine command can
+be transmitted. In rare cases, certain scanners and/or parallel port chipsets
+appear to prevent reliable detection of the engine state. As a result, engine
+commands are transmitted too soon and the movement of the scanner head becomes
+unreliable. Inaccuracies ranging up to 10 cm over the whole vertical scan
+range have been reported. To work around this problem, the engine_delay option
+can be set. If it is set, the driver waits an additional amount of time after
+every engine command, equal to the engine_delay parameter, expressed in
+milliseconds. It practice an engine_delay of 1 ms is usually sufficient. The
+maximum delay is 100 ms.
+.sp
+Note that every additional ms of delay can add up to 14 seconds to the total
+scanning time (highest resolution), so an as small as possible value is
+preferred.
+.sp
+Default value: 0
+.br
+Minimum: 0
+.br
+Maximum: 100
+.sp
+Example: option engine_delay 1
+
+.SS CCD driver options
+.TP
+.B top <value>
+Number of scanlines to skip to the start of the scan area. The number can
+be any positive integer. Values known to me are 47 and 56.
+.sp
+Default value: 47
+.br
+Minimum: 0
+.br
+Maximum: none
+.br
+.sp
+Example: option top 56
+.TP
+.B waitbank <value>
+The number of usecs to wait for a bank change. You should not touch this
+value actually. May be any positive integer
+.sp
+Default value: 700
+.br
+Minimum: 0
+.br
+Maximum: none
+.sp
+Example: option waitbank 700
+.PP
+A sample configuration file is shown below:
+.PP
+.EX
+#
+# LifeTec/Medion 9350 on port 0x378
+#
+scanner "LifeTec 9350" 0x378 cis1200
+
+# Some calibration options (examples!).
+option bw 127
+option top_skip \-0.8
+
+#
+# A Mustek 600CP on port 0x3BC
+#
+scanner "Mustek 600CP" 0x3BC cis600
+
+# Some calibration options (examples!).
+option bw 120
+option top_skip 1.2
+
+#
+# A Mustek 1200CP+ on port 0x278
+#
+scanner "Mustek 1200CP plus" 0x278 cis1200+
+
+# Some calibration options (examples!).
+option bw 130
+option top_skip 0.2
+
+#
+# A Mustek 600 III EPP on port parport0
+#
+scanner "Mustek 600 III EPP" parport0 ccd300
+
+# Some calibration options (examples!).
+option bw 130
+option top 56
+.EE
+
+.SH GLOBAL OPTIONS
+.PP
+You can control the overall behaviour of the mustek_pp backend by global
+options which precede any scanner definition in the mustek_pp.conf file.
+.sp
+Currently, there is only one global option:
+
+.SS Global options
+.TP
+.B no_epp
+Disable parallel port mode EPP: works around a known bug in the Linux parport
+code. Enable this option, if the backend hangs when trying to access the
+parallel port in EPP mode.
+.sp
+Default value: use EPP
+.sp
+Example: option no_epp
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/mustek_pp.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-mustek_pp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-mustek_pp.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_MUSTEK_PP
+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.
+.EX
+level debug output
+--------------------------------------
+ 0 nothing
+ 1 errors
+ 2 warnings & minor errors
+ 3 additional information
+ 4 debug information
+ 5 code flow (not supported yet)
+ 6 special debug information
+.EE
+.TP
+.B SANE_DEBUG_SANEI_PA4S2
+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.
+.EX
+level debug output
+----------------------------
+ 0 nothing
+ 1 errors
+ 2 warnings
+ 3 things nice to know
+ 4 code flow
+ 5 detailed code flow
+ 6 everything
+.EE
+
+.SH "SEE ALSO"
+sane(7), sane\-mustek(5), sane\-net(5), saned(8), sane\-find\-scanner(1)
+
+.TP
+For latest bug fixes and information see
+.I http://www.penguin\-breeder.org/sane/mustek_pp/
+
+.TP
+For additional information on the CIS driver, see
+.I http://home.scarlet.be/eddy_de_greef/
+
+.SH AUTHORS
+.nf
+Jochen Eisinger <jochen at penguin\-breeder dot org>
+Eddy De Greef <eddy_de_greef at scarlet dot be>
+.fi
+
+.SH BUGS
+Too many... please send bug reports to
+.I sane\-devel@lists.alioth.debian.org
+(note that you have to subscribe first to the list before you can send
+emails... see http://www.sane\-project.org/mailing\-lists.html)
+
+.SH BUG REPORTS
+If something doesn't work, please contact us (Jochen for the CCD scanners,
+Eddy for the CIS scanners). But we need some information about
+your scanner to be able to help you...
+
+.TP
+.I SANE version
+run "scanimage \-V" to determine this
+.TP
+.I 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 @CONFIGDIR@/dll.conf.
+If your scanner isn't detected, make sure you've defined the right port address
+in your mustek_pp.conf.
+.TP
+.I 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.
+.TP
+.I 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.
+.TP
+.I some nice greetings
diff --git a/doc/sane-mustek_usb.man b/doc/sane-mustek_usb.man
new file mode 100644
index 0000000..dfcb8eb
--- /dev/null
+++ b/doc/sane-mustek_usb.man
@@ -0,0 +1,205 @@
+.TH sane\-mustek_usb 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-mustek_usb
+.SH NAME
+sane\-mustek_usb \- SANE backend for Mustek USB flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-mustek_usb
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to Mustek USB flatbed scanners (including a clone from Trust). At
+present, the following scanners are known to work more or less with this
+backend:
+.PP
+.RS
+Mustek 600 CU
+.br
+Mustek 1200 UB
+.br
+Mustek 1200 CU
+.br
+Mustek 1200 CU Plus
+.br
+Trust Compact Scan USB 19200
+.br
+.RE
+.PP
+More details can be found on the Mustek USB backend homepage
+.IR http://www.meier\-geinitz.de/sane/mustek_usb\-backend/ .
+.PP
+The Mustek BearPaw 1200 and 2400 scanners are supported by the plustek
+backend. See
+.BR sane\-plustek (5)
+for details. The Mustek BearPaw 1200F is supported by the MA-1509 backend. See
+.BR sane\-ma1509 (5)
+for details. Other Mustek USB scanners are supported by the gt68xx backend,
+see
+.BR sane\-gt68xx (5).
+.PP
+This backend can only work with scanners that are already detected by the
+operating system. See
+.BR sane\-usb (5)
+for details.
+.PP
+If you own a Mustek (or Trust) scanner other than the ones listed above that
+works with this backend, please let me know this by sending the scanner's
+exact model name and the USB vendor and device ids (e.g. from
+.I /proc/bus/usb/devices
+or syslog) to me.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is a path-name for the special device that corresponds to a USB scanner.
+With Linux, such a device name could be
+.I /dev/usb/scanner0
+or
+.IR /dev/usbscanner1 ,
+for example.
+.PP
+For FreeBSD use
+.IR /dev/uscanner0 .
+
+.SH CONFIGURATION
+The contents of the
+.I mustek_usb.conf
+file is a list of options and device names that correspond to Mustek
+USB scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. If a device name is placed in
+.IR mustek_usb.conf ,
+it must be followed by a line containing the keyword
+.B option
+and an option specifying the scanner type. The following options can be used:
+.BR 600cu ,
+.BR 1200cu ,
+.BR 1200cu_plus ,
+.BR 1200ub .
+For the Trust Compact Scan USB 19200 use `option 1200ub'.
+.PP
+Instead of using the device name, the scanner can be autodetected by
+.B "usb vendor_id product_id"
+statements which are already included into
+.IR mustek_usb.conf .
+This is only supported with Linux 2.4.8 and higher and all systems that
+support libsub. "vendor_id" and "product_id" are hexadecimal numbers that
+identify the scanner. If this doesn't work, a device name and the option
+specifying the scanner type must be placed in
+.I mustek_usb.conf
+as described above.
+.PP
+The global
+.B option max_block_size
+can be used to limit the amount of data acquired in one turn from the USB
+system. It may be worth trying, if USB errors occur.
+.PP
+A sample configuration file is shown below:
+.PP
+.RS
+# Comment
+.br
+option max_block_size 1024
+.br
+usb 0x055f 0x0001
+.br
+/dev/usb/scanner0
+.br
+option 600cu
+.RE
+.PP
+The first line is ignored. The second line sets the buffer size to a maximum of
+1024 bytes. The third line tries to autodetect a scanner with vendor id 0x055f
+and product id 0x0001 (Mustek 1200 CU). The fourth line tells the backend to
+attach to
+.I /dev/usb/scanner0
+and the fifth line specifies that
+.I /dev/usb/scanner0
+is a Mustek 600 CU.
+.SH FILES
+.TP
+.I @CONFIGDIR@/mustek_usb.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-mustek_usb.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-mustek_usb.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_MUSTEK_USB
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+.ft CR
+.nf
+Value Description
+0 no output
+1 print fatal errors
+2 print important messages
+3 print non-fatal errors and less important messages
+4 print all but debugging messages
+5 print high level debugging messages
+6 print medium level debugging messages
+7 print low level debugging messages
+.fi
+.ft R
+
+Example:
+export SANE_DEBUG_MUSTEK_USB=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.BR sane\-mustek (5),
+.BR sane\-mustek_pp (5),
+.BR sane\-plustek (5),
+.BR sane\-gt68xx (5),
+.BR sane\-ma1509 (5)
+.br
+.IR @DOCDIR@/mustek_usb/mustek_usb.CHANGES ,
+.I @DOCDIR@/mustek_usb/mustek_usb.TODO
+.br
+.I http://www.meier\-geinitz.de/sane/mustek_usb\-backend/
+
+.SH AUTHOR
+Henning Meier-Geinitz <henning@meier\-geinitz.de>
+.br
+This backend is based on the Mustek 1200ub backend from Mustek, maintained by
+Tom Wang.
+
+.SH BUGS
+These devices have a hardware bug: Once data is written to them, they can't be
+reset (toggle = DATA0). That means, any operation that tries to reset the
+device will result in running into timeouts.
+
+In earlier versions this backend failed when it was loaded the second time in
+some configurations. The only choice was to replug the scanner in this case. The
+backend uses a workaround for that bug now but it's only tested on
+Linux. Reports for other operating systems are appreciated.
+
+.PP
+More detailed bug information is available at the Mustek backend homepage
+.IR http://www.meier\-geinitz.de/sane/mustek_usb\-backend/ .
diff --git a/doc/sane-mustek_usb2.man b/doc/sane-mustek_usb2.man
new file mode 100644
index 0000000..b134afa
--- /dev/null
+++ b/doc/sane-mustek_usb2.man
@@ -0,0 +1,72 @@
+.TH sane\-mustek_usb2 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-mustek_usb2
+.SH NAME
+sane\-mustek_usb2 \- SANE backend for SQ113 based USB flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-mustek_usb2
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to USB flatbed scanners based on the Service & Quality SQ113 chipset. At
+the moment, only the Mustek BearPaw 2448 TA Pro is supported. It's planned to add
+support for other scanners that are based on the SQ113 and maybe SQ11 chip. For
+more details, see the mustek_usb2 backend homepage:
+.IR http://www.meier\-geinitz.de/sane/mustek_usb2\-backend/ .
+.PP
+This is BETA software. Especially if you test new or untested scanners, keep
+your hand at the scanner's plug and unplug it, if the head bumps at the end of
+the scan area.
+.PP
+If you own a scanner other than the ones listed on the mustek_usb2 homepage that works with this
+backend, please let me know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.I sane\-find\-scanner
+or syslog) to me. Even if the scanner's name is only slightly different from
+the models already listed as supported, please let me know.
+.PP
+.SH LIBUSB ISSUES
+Please use libusb-0.1.8 or later. Without libusb or with older libusb versions
+all kinds of trouble can be expected. The scanner should be found by
+sane\-find\-scanner without further actions. For setting permissions and general
+USB information looks at
+.BR sane\-usb (5).
+.PP
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-mustek_usb2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-mustek_usb2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_MUSTEK_USB2
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend. Higher debug levels
+increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_MUSTEK_USB2=4
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.BR sane\-plustek (5),
+.BR sane\-ma1509 (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-mustek (5),
+.BR sane\-mustek_pp (5)
+.br
+.I @DOCDIR@/mustek_usb2/mustek_usb2.CHANGES
+.br
+.I http://www.meier\-geinitz.de/sane/mustek_usb2\-backend/
+
+.SH AUTHOR
+The driver has been written Roy Zhou, Jack Xu, and Vinci Cen from
+Mustek. Adjustments to SANE by Henning Meier-Geinitz.
+
+.SH BUGS
+Please contact me if you find a bug or missing feature:
+<henning@meier\-geinitz.de>. Please send a debug log if your scanner isn't
+detected correctly (see SANE_DEBUG_MUSTEK_USB2 above).
diff --git a/doc/sane-nec.man b/doc/sane-nec.man
new file mode 100644
index 0000000..0fd895e
--- /dev/null
+++ b/doc/sane-nec.man
@@ -0,0 +1,59 @@
+.TH sane\-nec 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-nec
+.SH NAME
+sane\-nec \- SANE backend for NEC scanners
+.SH DESCRIPTION
+The
+.B sane\-nec
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to NEC SCSI scanners. This backend should be
+considered
+.B alpha-quality
+software! In the current state it is known to work with PC-IN500/4C
+scanners. Another MultiReader scanner series is not supported. PC-IN
+500/4C and MultiReader scanner are only sold in Japan.(except Multi
+Reader PetiScan.)
+
+For other scanners, it may or may not work.
+.PP
+The backend has the following known problems:
+.RS
+\- ColorLineart mode is not supported.
+.br
+\- device name is fixed to /dev/scanner
+.RE
+.PP
+At present,
+the following scanners are known to work with this backend.
+.RS
+.ft CR
+.nf
+Vendor Product id
+------ -----------
+NEC PC-IN500/4C
+.fi
+.ft R
+.RE
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/nec.conf
+The backend configuration file.
+.TP
+.I @LIBDIR@/libsane\-nec.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-nec.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_NEC
+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.
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.SH AUTHORS
+Kazuya Fukuda
diff --git a/doc/sane-net.man b/doc/sane-net.man
new file mode 100644
index 0000000..5cf0481
--- /dev/null
+++ b/doc/sane-net.man
@@ -0,0 +1,155 @@
+.TH sane\-net 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-net
+.SH NAME
+sane\-net \- SANE network backend
+.SH DESCRIPTION
+The
+.B sane\-net
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to image acquisition devices through a network
+connection. This makes it possible to control devices attached to a
+remote host and also provides a means to grant users access to
+protected resources.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.IR host : device
+.RE
+.PP
+Where
+.I host
+is the name (or IP address) of the (remote) host and
+.I device
+is the name of the device on this host that should be addressed.
+If the device name does not contain a colon (:), then the entire string
+is treated as the
+.I device
+string for the default host. The default host is the host listed last
+in the configuration file (see below).
+.PP
+An IPv6 address can be specified enclosed in square brackets:
+.PP
+.RS
+.IR [::1] : device
+.RE
+.SH CONFIGURATION
+The
+.IR net.conf
+file contains both backend options and a list of host names (or IP
+addresses) that should be contacted for scan requests. Anything that
+isn't one of the options listed below will be treated as an host name.
+.PP
+.TP
+.B connect_timeout = nsecs
+Timeout (in seconds) for the initial connection to the
+.I saned
+server. This will prevent the backend from blocking for several
+minutes trying to connect to an unresponsive
+.I saned
+host (network outage, host down, ...). The environment variable
+.B SANE_NET_TIMEOUT
+can also be used to specify the timeout at runtime.
+.PP
+Empty lines and lines starting with a hash mark (#) are
+ignored. Note that IPv6 addresses in this file do not need to be enclosed
+in square brackets. A sample configuration file is shown below:
+.PP
+.RS
+scan\-server.somedomain.firm
+.br
+192.168.0.1
+.br
+# this is a comment
+.br
+localhost
+.br
+::1
+.RE
+.PP
+The above list of hosts can be extended at run-time using environment
+variable
+.BR SANE_NET_HOSTS .
+This environment variable is a colon-separated list of hostnames or IP
+addresses that should be contacted in addition to the hosts mentioned in
+the configuration file. For example, a user could set the environment
+variable to the string:
+.PP
+.RS
+new.scanner.com:[::1]:192.168.0.2:scanner.univ.edu
+.RE
+.PP
+To request that hosts
+.I new.scanner.com
+,
+.I [::1]
+,
+.I 192.168.0.2
+and
+.I scanner.univ.edu
+are contacted in addition to the hosts listed above.
+.PP
+For this backend to function properly, it is also necessary to define the
+.B sane\-port
+service in
+.IR /etc/services .
+The
+.B sane
+service should be defined using a line of the following form:
+.PP
+.RS
+sane\-port 6566/tcp # SANE network scanner daemon
+.RE
+.PP
+.SH FILES
+.TP
+.I @CONFIGDIR@/net.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-net.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-net.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_NET_HOSTS
+A colon-separated list of host names or IP addresses to be contacted by this
+backend.
+.TP
+.B SANE_NET_TIMEOUT
+Number of seconds to wait for a response from the
+.I saned
+server for the initial connection request.
+.TP
+.B SANE_DEBUG_NET
+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.
+.SH BUGS
+If saned has timed out, the net backend may loop with authorization requests.
+.SH "SEE ALSO"
+sane(7), saned(8), sane\-dll(5), scanimage(1)
+
+.I http://www.penguin-breeder.org/?page=sane\-net
+.SH AUTHOR
+David Mosberger and Andreas Beck
diff --git a/doc/sane-niash.man b/doc/sane-niash.man
new file mode 100644
index 0000000..8e14b76
--- /dev/null
+++ b/doc/sane-niash.man
@@ -0,0 +1,81 @@
+.\" $Id$
+.TH sane\-niash 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-niash
+
+.SH NAME
+sane\-niash \- SANE backend for scanners based on the NIASH chipset.
+
+.SH DESCRIPTION
+The
+.B sane\-niash
+implements a SANE (Scanner Access Now Easy) backend that
+provides access to NIASH chipset based scanners. This backend will try to support
+the following models:
+
+.ft CR
+.nf
+MANUFACTURER: MODEL: USB ID:
+--------------- ---------------- ---------
+Agfa Snapscan Touch 06BD-0100 (1)(a)
+Trust Office Scan 19200 047B-1000 (1)(a)
+Hewlett-Packard Scanjet 3300c 03F0-0205 (1)(a)(b)
+Hewlett-Packard Scanjet 3400c 03F0-0405 (2)(b)
+Hewlett-Packard Scanjet 4300c 03F0-0305 (2)(a)
+Silitek ScanJet 4300c 047B-1002 (2)(b)
+.fi
+.ft R
+.PP
+.br
+ASIC: (1) \- NIASH00012/00013/00014 / (2) \- NIASH00019
+.br
+ANALOG FRONT-END: (a) \- ESIC ES8100QA / (b) \- WM8143-12
+.br
+
+.SH CONFIGURATION
+The
+.I niash.conf
+file is meant for future configuration options.
+Empty lines and lines starting with a hash mark (#) are
+ignored. Currently no configuration options exist.
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-niash.a
+The static library implementing this backend.
+
+.TP
+.I @LIBDIR@/libsane\-niash.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH CAVEATS
+If you use a
+.br
+Hewlett-Packard Scanjet 3400c
+or
+.br
+Hewlett-Packard Scanjet 4300c
+.br
+together with Linux kernel
+.BR 2.6 ,
+kernel version
+.B 2.6.8
+or newer is necessary.
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_NIASH
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_NIASH=255
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5)
+.br
+http://www.sourceforge.net/projects/hp3300backend
+.SH AUTHOR
+Bertrik Sikken <bertrik@zonnet.nl>
diff --git a/doc/sane-p5.man b/doc/sane-p5.man
new file mode 100644
index 0000000..860a019
--- /dev/null
+++ b/doc/sane-p5.man
@@ -0,0 +1,160 @@
+.TH "sane\-p5" "5" "15 Feb 2010" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-p5
+.SH "NAME"
+sane\-p5 \- SANE backend for the Primax PagePartner
+.SH "DESCRIPTION"
+The
+.B sane\-p5
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the Primax PagePartner parallel port sheet fed scanner.
+.PP
+This backend handles 100, 150, 200, 300 and 600 dpi scan resolutions,
+in color and gray modes. The 600 dpi is actually 300x600 with lines
+enlarged to match the vertical resolution.
+.PP
+.B EPP/ECP MODES ONLY
+The current version of the backend uses only EPP or ECP mode to communicate
+with the scanner. It is
+recommended that you set your parallel port to EPP in BIOS with the current
+version of this backend. ECPEPP will only
+work if you use a 2.4 or 2.6 kernel with ppdev character device support.
+.PP
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I port value
+.RE
+.PP
+Where
+\fBvalue\fR is :
+
+.RS
+.TP
+auto
+autodetect all parallel ports and probe
+them for scanner
+.TP
+/dev/parport0
+uses linux ppdev device, depending on the
+number of available parallel port, you
+have to use /dev/parport1, /dev/parport2, ...
+.PP
+.RE
+You can rename any device using the
+.PP
+.RS
+.br
+.I option name my_name
+.RE
+.PP
+option. This option apply to the last port option.
+
+.SH "CONFIGURATION"
+Please make sure to edit dll.conf
+.B before
+you use the backend, since this backend isn't enabled by default.
+.PP
+
+.PP
+
+
+
+.SH "FILES"
+.TP
+.I @CONFIGDIR@/p5.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-p5.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-p5.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH "ENVIRONMENT"
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_P5
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller
+levels reduce verbosity.
+
+.PP
+.RS
+.ft CR
+.nf
+level debug output
+\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+ 0 critical errors
+ 1 errors
+ 2 warnings & minor errors
+ 4 information messages
+ 8 start/stop of functions
+ 16 tracing messages
+ 32 I/O functions
+ 64 I/O functions with traces
+ 128 scanned/calibration data
+.fi
+.ft R
+.RE
+.PP
+.TP
+
+.PP
+.RS
+.ft CR
+.nf
+.PP
+
+.PP
+.SH "SEE ALSO"
+sane(7), sane\-net(5), saned(8)
+
+.SH "AUTHOR"
+St\['e]phane Voltz <stef.dev@free.fr>
+
+.SH "CREDITS"
+Support for the Prima PagePartner has been made possible thank to an hardware donation
+by S\['e]bastien Lange.
+
+.SH "BUG REPORTS"
+If something doesn't work mail sane-devel@lists.alioth.debian.org or use the bug
+tracker at https://alioth.debian.org/tracker/?atid=410366&group_id=30186 .
+Please give as much information as you can.
+
+.TP
+.I SANE version
+run "scanimage \-V" to determine this
+.TP
+.I the backend version and your scanner hardware
+run "SANE_DEBUG_P5=255 scanimage \-L 2>log" as root. If you don't get any output
+from the p5 backend, make sure a line "p5" is included into
+your @CONFIGDIR@/dll.conf.
+If your scanner isn't detected, make sure you've defined the right port address, or the
+correct device
+in your p5.conf.
+.TP
+.I 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.
+.TP
+.I 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.
diff --git a/doc/sane-pie.man b/doc/sane-pie.man
new file mode 100644
index 0000000..f2c9b93
--- /dev/null
+++ b/doc/sane-pie.man
@@ -0,0 +1,58 @@
+.TH sane\-pie 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-pie
+.SH NAME
+sane\-pie \- SANE backend for PIE, Devcom and AdLib SCSI flatbed scanners
+
+.SH DESCRIPTION
+The
+.B sane\-pie
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to PIE, Devcom and AdLib SCSI flatbed scanners.
+.br
+At present, the following scanners should work with this backend:
+.PP
+.ft CR
+.nf
+Model: Status
+---------------------- ------
+Devcom 9636PRO OK
+Devcom 9636S Untested
+Devcom 9630S Untested
+ScanAce 1236S Untested
+ScanAce 1230S Untested
+ScanAce II Untested
+ScanAce III OK
+ScanAce Plus Untested
+ScanAce II Plus Untested
+ScanAce III Plus Untested
+ScanAce V Untested
+ScanAce ScanMedia Untested
+ScanAce ScanMedia II Untested
+ScanAce 630S Untested
+ScanAce 636S Untested
+JetScan 630 OK
+JetScan 636PRO Untested
+.fi
+.ft R
+.PP
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/pie.conf
+The backend configuration file
+.TP
+.I @LIBDIR@/libsane\-pie.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-pie.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.PP
+
+.SH SEE ALSO
+sane(7)
+
+.SH "CONTACT AND BUG-REPORTS"
+Please send any information and bug-reports to:
+.br
+.B Simon Munton <simon@munton.demon.co.uk>
diff --git a/doc/sane-pint.man b/doc/sane-pint.man
new file mode 100644
index 0000000..7e863a5
--- /dev/null
+++ b/doc/sane-pint.man
@@ -0,0 +1,123 @@
+.TH sane\-pint 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-pint
+.SH NAME
+sane\-pint \- SANE backend for scanners that use the PINT device driver
+.SH DESCRIPTION
+The
+.B sane\-pint
+library implements a SANE (Scanner Access Now Easy) backend that
+provides generic access to hand-held and flatbed scanners using the
+PINT (PINT Is Not Twain) device driver. The PINT driver is being
+actively developed on the OpenBSD platform, and has been ported to a
+few other *nix-like operating systems.
+.PP
+PINT is designed to provide an
+.BR ioctl (2)
+interface to many different scanner types. However, this backend has
+only been tested with flatbed single-pass scanners, and more work will
+probably be required to get it to use other scanner types
+successfully.
+.PP
+If have successfully used the PINT driver with your scanner, but it
+does not work using this SANE backend, please let us know. To do
+this, send a mail with the relevant information for your scanner to
+.IR sane\-devel@lists.alioth.debian.org .
+Have a look at http://www.sane\-project.org/mailing\-lists.html concerning subscription
+to sane\-devel.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the UNIX path-name for the special device that corresponds to the
+scanner. The special device name must be a PINT device or a symlink
+to such a device. For example, under NetBSD or OpenBSD, such a device
+name could be
+.I /dev/ss0
+or
+.IR /dev/scan0 .
+.SH CONFIGURATION
+The contents of the
+.IR pint.conf .
+file is a list of device names that correspond to PINT
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+/dev/scanner
+.br
+# this is a comment
+.br
+/dev/ss1
+.RE
+.SH FILES
+.TP
+.I @CONFIGDIR@/pint.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-pint.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-pint.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_PINT
+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.
+.SH SEE ALSO
+sane(7)
+.SH AUTHOR
+Gordon Matzigkeit, adapted from existing backends written by David
+Mosberger.
+.SH BUGS
+
+There are minor roundoff errors when adjusting the ranges, since
+PINT uses units of 1/1200 of an inch, and SANE normally uses
+millimeters. Symptoms of these errors are skewed images. This should
+really be fixed (no pun intended) as soon as possible, but I just
+don't know/care enough about fixed-point representation and roundoff
+errors to do this correctly. Workaround: use inches as the scanning
+unit, and everything usually works fine.
+
+The PINT 0.5e interface does not provide a way to determine valid
+ranges for DPI, modes, and scan sizes. So, the SANE backend queries
+the PINT device, and dynamically discovers valid ranges by doing a
+binary search. This means that the driver takes longer to initialize
+than seems necessary.
+
+Resetting the scanner does not seem to work (at least not on my HP
+ScanJet 4p). For that reason, the driver sends a SCIOCRESTART, then
+gobbles up any remaining input until it hits EOF.
+
+Not all of the scanners have been identified (i.e. whether they are
+flatbed or handheld).
+
+X and Y resolutions are assumed to be the same.
+
+No testing has been done on three-pass or handheld scanners, or with
+Automatic Document Feeder support.
diff --git a/doc/sane-pixma.man b/doc/sane-pixma.man
new file mode 100644
index 0000000..b108679
--- /dev/null
+++ b/doc/sane-pixma.man
@@ -0,0 +1,330 @@
+.TH "sane\-pixma" "5" "24 Sep 2013" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-pixma
+.SH NAME
+sane\-pixma \- SANE backend for Canon Multi-Function Printers and CanoScan Scanners
+.SH DESCRIPTION
+The
+.B sane\-pixma
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to Canon PIXMA / i-SENSYS / imageCLASS / imageRUNNER multi-function
+devices (All-in-one printers) and the Canon CanoScan Flatbed/TPU scanners.
+The backend implements both USB interface and network interface
+using Canon's BJNP protocol. The network interface supports scanners over
+IPv4 as well as IPv6.
+.PP
+Currently, the following models work with this backend:
+.PP
+.RS
+PIXMA MG2100, MG3100, MG4200, MG5100, MG5200, MG5300
+.br
+PIXMA MG6100, MG6200, MG6300, MG8200
+.br
+PIXMA MP140, MP150, MP160, MP170, MP180, MP190
+.br
+PIXMA MP210, MP220, MP230, MP240, MP250, MP260, MP270, MP280
+.br
+PIXMA MP360, MP370, MP390
+.br
+PIXMA MP450, MP460, MP470, MP480, MP490
+.br
+PIXMA MP500, MP510, MP520, MP530, MP540, MP550, MP560
+.br
+PIXMA MP600, MP600R, MP610, MP620, MP630, MP640
+.br
+PIXMA MP700, MP710, MP730, PIXMA MP750 (no grayscale)
+.br
+PIXMA MP800, MP800R, MP810, MP830
+.br
+PIXMA MP960, MP970, MP980, MP990
+.br
+PIXMA MX300, MX310, MX330, MX340, MX350, MX360, MX370
+.br
+PIXMA MX420, MX700, MX7600
+.br
+PIXMA MX850, MX860, MX870, MX882, MX885, MX890
+.br
+imageCLASS MF3110, MF3240, MF4010, MF4018
+.br
+imageCLASS MF4120, MF4122, MF4140, MF4150
+.br
+imageCLASS MF4270, MF4350d, MF4370dn, MF4380dn
+.br
+imageCLASS MF4410, MF4430, MF4660, MF4690, MF4770n
+.br
+imageCLASS MF5730, MF5770, MF6550, D420, D480
+.br
+i-SENSYS MF3010, MF4320d, MF4330d, MF4550d
+.br
+imageRUNNER 1020/1024/1025
+.br
+CanoScan 8800F, 9000F, 9000F Mark II
+.RE
+.PP
+The following models are not well tested and/or the scanner sometimes hangs
+and must be switched off and on.
+.PP
+.RS
+PIXMA MP760, MP770, MP780, MP790
+.br
+PIXMA MX360
+.RE
+.PP
+The following models may use the same Pixma protocol as those listed
+above, but have not yet been reported to work (or not). They are declared
+in the backend so that they get recognized and activated.
+Feedback in the sane\-devel mailing list welcome.
+.PP
+.RS
+PIXMA E500, E510, E600, E610
+.br
+PIXMA MG2200, MG2400, MG2500, MG3200, MG4100, MG5400, MG5500
+.br
+PIXMA MG6400, MG6500, MG7100, MG8100
+.br
+PIXMA MP375R, MP493, MP495, MP740
+.br
+PIXMA MX320, MX390, MX410, MX430, MX450, MX510, MX520
+.br
+PIXMA MX710, MX720, MX920
+.br
+imageCLASS MF4570dw, MF5630, MF5650, MF5750, MF8030, MF8170c
+.br
+imageRUNNER 1133
+.br
+i-SENSYS MF5880dn, MF6680dn
+.RE
+.PP
+\#The following models may use partly the same Pixma protocol as other devices
+\#listed above, but may still need some work. They are declared in the backend
+\#as experimental. Snoop logs are required to further investigate, please contact
+\#the sane\-devel mailing list.
+\#.PP
+\#.RS
+\#PIXMA MP---
+\#.RE
+\#.PP
+The backend supports:
+.PP
+.RS
+* resolutions of 75, 150, 300, 600, 1200, 2400, 4800, and 9600 DPI (some maybe buggy),
+.br
+* color and grayscale mode, as well as lineart on certain models,
+.br
+* a custom gamma table,
+.br
+* Automatic Document Feeder, Simplex and Duplex.
+.br
+* Transparency Unit, 24 or 48 bits depth. Infrared channel on certain models.
+.RE
+.PP
+The device name for USB devices is in the form pixma:xxxxyyyy_zzzzz
+where x, y and z are vendor ID, product ID and serial number respectively.
+Example: pixma:04A91709_123456 is a MP150.
+.PP
+Device names for BJNP devices is in the form pixma:aaaa_bbbbb
+where aaaa is the scanners model and bbbb is the hostname or ip-adress.
+.PP
+This backend, based on cloning original Canon drivers protocols, is in
+a production stage. Designed has been carried out without any applicable
+manufacturer documentation, probably never available. However, we have tested
+it as well as we could, but it may not work in all situations. You will find
+an up-to-date status at the project homepage. (See below).
+Users feedback is essential to help improve features and performances.
+.SH OPTIONS
+Besides "well-known" options (e.g. resolution, mode etc.) pixma backend also
+provides the following
+\#.B experimental
+options for button handling, i.e. the options might change in the future.
+.br
+The button status can be polled i.e. with 'scanimage -A'.
+.br
+Button scan is disabled on MAC OS X due to darwin libusb not handling
+timeouts in usb interrupt reads.
+.TP
+.I button\-controlled
+This option can be used by applications (like
+.BR scanadf (1)
+and
+.BR scanimage (1))
+in batch mode, for example when you want to scan many photos or
+multiple-page documents. If it is enabled (i.e. is set to true or yes), the
+backend waits before every scan until the user presses the "SCAN" button
+(for MP150) or the color-scan button (for other models). Just put the
+first page in the scanner, press the button, then the next page, press
+the button and so on. When you finished, press the gray-scan button. (For
+MP150 you have to stop the frontend by pressing Ctrl-C for example.)
+.TP
+.I button\-update
+(write only) In the past this option was required to be set to force
+reading of the button status for
+.I button\-1
+and
+.I button\-2.
+The
+.B sane\-pixma
+no longer requires this option to be used: if no fresh data is available, it
+will be now requested automatically from the scanner. This option is left for
+backward compatibility reasons.
+.TP
+.I button\-1 button\-2
+(read only) These options will return the value of the respective buttons.
+value 0 means that the button was not pressed, 1 is returned when the button
+was pressed. Some scanners with more than two buttons send the button number
+as target.
+.TP
+.I original
+(read only) Returns the value of the type or size of original to be scanned
+if the scanner provides that data. Known values of type: 1 = document, 2 = foto,
+5 = film. Known values of size: 1 = A4, 2 = Letter, 8 = 10x15, 9 = 13x18, b = auto.
+Not all scanners can provide this data.
+.TP
+.I target
+(read only) Returns the value of the target of the scan operation if the scanner
+provides that data. The values depend on the scanner type. Known values:
+1 = save to disk, 2 = save to pdf, 3 = send to email, 4 = send to application
+or 1 = JPEG, 2 = TIFF, 3 = PDF, 4 = Compact PDF. For some scanners this value
+is equivalent to the number of the pressed button. Not all scanners can provide
+this data.
+.TP
+.I scan-resolution
+(read only) Returns the resolution of the scan operation if the scanner
+provides that data. Known values: 1 = 75 dpi, 2 = 150 dpi, 3 = 300 dpi,
+4 = 600 dpi. Not all scanners can provide this data.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-pixma.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-pixma.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.TP
+.I @CONFIGDIR@/pixma.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below). The files contains an optional list of scanners. Normally only scanners
+that can not be auto-detected because they are on a different subnet shall be
+listed here. If your OS does not allow enumeration of interfaces (i.e. it does not
+support the getifaddrs() function) you may need to add your scanner here as well.
+Scanners shall be listed as:
+.PP
+.RS
+.I bjnp://<host>
+.RE
+.RS
+where host is the hostname or IP address of the scanner, e.g. bjnp://10.0.1.4
+for IPv4, bjnp://[2001:888:118e:18e2:21e:8fff:fe36:b64a] for a literal
+IPv6-address or bjnp://myscanner.mydomain.org. Define each scanner on a new
+line.
+.SH USB SUPPORT
+USB scanners will be auto-detected and require no configuration.
+.SH NETWORKING SUPPORT
+The pixma backend supports network scanners using the so called Canon BJNP
+protocol. Both IPv4 and IPv6 are supported.
+.PP
+Configuration is normally not required.
+The pixma backend will auto-detect your scanner if it is within
+the same subnet as your computer if your OS does support this.
+.PP
+If your scanner can not be auto-detected, you can add it to the pixma
+configuration file (see above).
+.SH FIREWALLING FOR NETWORKED SCANNERS
+The sane pixma backend communicates with port 8612 on the scanner. So
+you will have to allow outgoing traffic TO port 8612 on the common subnet
+for scanning.
+.PP
+Scanner detection is slightly more complicated. The pixma backend sends
+a broadcast on all direct connected subnets it can find (provided your OS
+allows for enumeration of all netowrk interfaces). The broadcast is sent FROM
+port 8612 TO port 8612 on the broadcast address of each interface.
+The outgoing packets will be allowed by the rule described above.
+.PP
+Responses from the scanner are sent back to the computer TO port 8612.
+Connection tracking however does not see a match as the response does not come
+from the broadcast address but from the scanners own address.
+For automatic detection of your scanner, you will therefore have to allow
+incoming packets TO port 8612 on your computer.
+.PP
+So in short: open the firewall for all traffic from your computer to port 8612
+AND to port 8612 to your computer.
+.PP
+With the firewall rules above there is no need to add the scanner to the
+pixma.conf file, unless the scanner is on a network that is not directly
+connected to your computer.
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_PIXMA
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend itself. Higher value increases
+the verbosity and includes the information printed at the lower levels.
+.RS
+0 print nothing (default)
+.br
+1 print error and warning messages (recommended)
+.br
+2 print informational messages
+.br
+3 print debug-level messages
+.br
+11 dump USB traffic
+.br
+21 full dump USB traffic
+.br
+.RE
+.TP
+.B SANE_DEBUG_BJNP
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for the
+.B BJNP
+network protocol for this backend. Higher value increases
+the verbosity and includes the information printed at the lower levels.
+.RS
+0 print nothing (default)
+.br
+1 Print error and warning messages (recommended)
+.br
+2 Print high level function tracing information
+.br
+3 Print more detailed protocol tracing information
+.br
+4 Print protocol headers
+.br
+5 Print full protocol contents
+.RE
+.TP
+.B PIXMA_EXPERIMENT
+Setting to a non-zero value will enable the support for experimental models.
+You should also set SANE_DEBUG_PIXMA to 11.
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-dll (5),
+.I http://home.arcor.de/wittawat/pixma/,
+.I http://mp610.blogspot.com/
+.PP
+In case of trouble with a recent Pixma model, try the latest code for
+the pixma backend, available in the Sane git repository at:
+.br
+.I http://git.debian.org/?p=sane/sane-backends.git
+.PP
+You can also post into the Sane-devel mailing list for support.
+
+.SH AUTHORS
+Wittawat Yamwong, Nicolas Martin, Dennis Lou, Louis Lagendijk, Rolf Bensch
+.PP
+We would like to thank all testers and helpers. Without them we could not be
+able to write subdrivers for models we don't have. See also the project
+homepage.
diff --git a/doc/sane-plustek.man b/doc/sane-plustek.man
new file mode 100644
index 0000000..a6bb993
--- /dev/null
+++ b/doc/sane-plustek.man
@@ -0,0 +1,521 @@
+.TH sane\-plustek 5 "13 Feb 2013" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-plustek
+.SH NAME
+sane\-plustek \- SANE backend for LM983[1/2/3] based
+USB flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-plustek
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to USB flatbed scanners based on National Semiconductor
+Merlin chipsets (LM9831, 9832 and 9833).
+If you're looking for parallel-port support for Plustek scanner
+please refer to the
+.B sane\-plustek_pp
+backend.
+
+.SH "SUPPORTED DEVICES"
+The Backend is able to support USB scanner based on the National
+Semiconductor chipsets LM9831, LM9832 and LM9833. The following tables
+show various devices which are currently reported to work. If your
+Plustek scanner has another Product ID, then the device is
+.B NOT
+supported by this backend.
+.br
+
+Vendor Plustek \- ID: 0x07B3
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+OpticPro U12 LM9831 600x1200dpi 42bit 512Kb 0x0010
+OpticPro UT12 LM9831 600x1200dpi 42bit 512Kb 0x0013
+OpticPro UT12 LM9832 600x1200dpi 42bit 512Kb 0x0017
+OpticPro UT16 LM9832 600x1200dpi 42bit 512Kb 0x0017
+OpticPro U24 LM9831 1200x2400dpi 42bit 2Mb 0x0011
+OpticPro U24 LM9832 1200x2400dpi 42bit 2Mb 0x0015
+OpticPro UT24 LM9832 1200x2400dpi 42bit 2Mb 0x0017
+.fi
+.ft R
+.PP
+
+Vendor KYE/Genius \- ID: 0x0458
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+Colorpage HR6 V2 LM9832 600x1200dpi 42bit 512Kb 0x2007
+Colorpage HR6 V2 LM9832 600x1200dpi 42bit 512Kb 0x2008
+Colorpage HR6A LM9832 600x1200dpi 42bit 512Kb 0x2009
+Colorpage HR7 LM9832 600x1200dpi 42bit 512Kb 0x2013
+Colorpage HR7LE LM9832 600x1200dpi 42bit 512Kb 0x2015
+Colorpage HR6X LM9832 600x1200dpi 42bit 512Kb 0x2016
+.fi
+.ft R
+.PP
+
+Vendor Hewlett-Packard \- ID: 0x03F0
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+ScanJet 2100C LM9831 600x1200dpi 42bit 512Kb 0x0505
+ScanJet 2200C LM9832 600x1200dpi 42bit 512Kb 0x0605
+.fi
+.ft R
+.PP
+
+Vendor Mustek \- ID: 0x0400
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+BearPaw 1200 LM9831 600x1200dpi 42bit 512Kb 0x1000
+BearPaw 1200 LM9832 600x1200dpi 42bit 512Kb 0x1001*
+BearPaw 2400 LM9832 1200x2400dpi 42bit 2Mb 0x1001
+.fi
+.ft R
+* see also description for model override switch below!
+.PP
+
+Vendor UMAX \- ID: 0x1606
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+UMAX 3400 LM9832 600x1200dpi 42bit 512Kb 0x0050
+UMAX 3400/3450 LM9832 600x1200dpi 42bit 512Kb 0x0060
+UMAX 5400 LM9832 1200x2400dpi 42bit 512Kb 0x0160
+.fi
+.ft R
+.PP
+
+Vendor COMPAQ \- ID: 0x049F
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+S4-100 LM9832 600x1200dpi 42bit 512Kb 0x001A
+.fi
+.ft R
+.PP
+
+Vendor Epson \- ID: 0x04B8
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+Perfection 1250 LM9832 1200x2400dpi 42bit 512Kb 0x010F
+Perfection 1260 LM9832 1200x2400dpi 42bit 512Kb 0x011D
+.fi
+.ft R
+.PP
+
+Vendor CANON \- ID: 0x04A9
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+CanoScan N650/656U LM9832 600x1200dpi 42bit 512Kb 0x2206
+CanoScan N1220U LM9832 1200x2400dpi 42bit 512Kb 0x2207
+CanoScan D660U LM9832 600x1200dpi 42bit 512Kb 0x2208
+CanoScan N670/676U LM9833 600x1200dpi 48bit 512Kb 0x220D
+CanoScan N1240U LM9833 1200x2400dpi 48bit 512Kb 0x220E
+CanoScan LIDE20 LM9833 600x1200dpi 48bit 512Kb 0x220D
+CanoScan LIDE25 LM9833 1200x2400dpi 48bit 512Kb 0x2220
+CanoScan LIDE30 LM9833 1200x2400dpi 48bit 512Kb 0x220E
+.fi
+.ft R
+.PP
+
+Vendor Syscan \- ID: 0x0A82
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+Travelscan 662 LM9833 600x1200dpi 48bit 512Kb 0x6620
+Travelscan 464 LM9833 600x1200dpi 48bit 512Kb 0x4600
+.fi
+.ft R
+.PP
+
+Vendor Portable Peripheral Co., Ltd. \- ID: 0x0A53
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+Q-Scan USB001 LM9832 300x600dpi 42bit 512Kb 0x1000
+Q-Scan USB201 LM9832 300x600dpi 42bit 512Kb 0x2000
+.fi
+.ft R
+.PP
+
+Vendor Visioneer \- ID: 0x04A7
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+USB Model: ASIC: Properties: Prod-ID
+----------------------------------------------------------
+Strobe XP100 LM9833 600x1200dpi 48bit 512Kb 0x0427
+.fi
+.ft R
+.PP
+
+.SH "OTHER PLUSTEK SCANNERS"
+For parallelport device support see the
+.B plustek_pp
+backend.
+.br
+The SCSI scanner OpticPro 19200S is a rebadged Artec AM12S scanner
+and is supported by the
+.B Artec
+backend.
+.br
+Only the National Semiconductor LM983[1/2/] based devices of Plustek
+are supported by this backend. Older versions of the U12, the UT12,
+the U1212 and U1248 (GrandTech chipset) are not supported.
+.PP
+.ft CR
+.nf
+Model Chipset backend
+------------------------------------
+U1248 GrandTech gt68xx
+UT16B GrandTech gt68xx
+OpticSlim 1200 GrandTech gt68xx
+OpticSlim 2400 GrandTech gt68xx
+U12 P98003 u12
+UT12 P98003 u12
+1212U P98003 u12
+.fi
+.ft R
+For a more complete and up to date list see:
+.B http://www.sane\-project.org/sane\-supported\-devices.html
+
+.SH "CONFIGURATION"
+To use your scanner with this backend, you need at least two
+entries in the configuration file
+.I @CONFIGDIR@/plustek.conf
+.RS
+.I [usb] vendor-id product-id
+.br
+.I device /dev/usbscanner
+.RE
+.PP
+.I [usb]
+tells the backend, that the following devicename (here
+.IR /dev/usbscanner )
+has to be interpreted as USB scanner device. If vendor- and
+product-id has not been specified, the backend tries to
+detect this by its own. If device is set to
+.I auto
+then the next matching device is used.
+.br
+The following options can be used for a default setup of
+your device. Most of them are also available through
+the frontend.
+.PP
+.B
+The Options:
+.PP
+option warmup t
+.RS
+.I t
+specifies the warmup period in seconds, if set to \-1, the
+automatic warmup function will be used
+.RE
+.PP
+option lampOff t
+.RS
+.I t
+is the time in seconds for switching off the lamps in
+standby mode
+.RE
+.PP
+option lOffonEnd b
+.RS
+.I b
+specifies the behaviour when closing the backend, 1 --> switch
+lamps off, 0 --> do not change lamp status
+.RE
+.PP
+option mov m
+.RS
+.I m
+is the model override switch. It works only with Mustek
+BearPaw devices.
+.br
+.br
+.ft CR
+.nf
+m/PID | 0x1000 | 0x1001
+------+--------------+--------------
+ 0 | BearPaw 1200 | BearPaw 2400
+ 1 | no function | BearPaw 1200
+.fi
+.ft R
+.RE
+.PP
+option invertNegatives b
+.RS
+.I b
+0 --> do not invert the picture during negativ scans,
+.br
+1 --> invert picture
+.RE
+.PP
+option cacheCalData b
+.RS
+.I b
+0 --> do not save calibration results,
+.br
+1 --> save results of calibration in ~/.sane/ directory
+.RE
+.PP
+option altCalibration b
+.RS
+.I b
+0 --> use standard calibration routines,
+.br
+1 --> use alternate calibration (only non Plustek devices, standard for CIS devices)
+.RE
+.PP
+option skipFine b
+.RS
+.I b
+0 --> perform fine calibration,
+.br
+1 --> skip fine calibration (only non Plustek devices)
+.RE
+.PP
+option skipFineWhite b
+.RS
+.I b
+0 --> perform white fine calibration,
+.br
+1 --> skip white fine calibration (only non Plustek devices)
+.RE
+.PP
+option skipDarkStrip b
+.RS
+.I b
+0 --> perform dark calibration, with enabled lamp using the
+dark calibration strip of the scanner. If the scanner does
+not have such a strip, the alternative way is to switch off
+the lamp during this step.
+.br
+1 --> always switch off the lamp for dark calibration, even
+a black strip is available
+.RE
+.PP
+option skipCalibration b
+.RS
+.I b
+0 --> perform calibration,
+.br
+1 --> skip calibration (only non Plustek devices)
+.RE
+.PP
+option enableTPA b
+.RS
+.I b
+0 --> default behaviour, specified by the internal tables,
+.br
+1 --> override internal tables and allow TPA mode (EPSON/UMAX only)
+.RE
+
+.PP
+option posOffX x
+.br
+option posOffY y
+.br
+option tpaOffX x
+.br
+option tpaOffY y
+.br
+option negOffX x
+.br
+option negOffY y
+.RS
+.I x y
+By using this settings, the user can adjust the given image
+positions.
+.B Please note, that there's no internal range checking for
+.B this feature.
+.RE
+.PP
+option posShadingY p
+.br
+option tpaShadingY p
+.br
+option negShadingY p
+.RS
+.I p
+overrides the internal shading position. The values are in steps.
+.B Please note, that there's no internal range checking for
+.B this feature.
+.RE
+.PP
+option redGamma r
+.br
+option greenGamma g
+.br
+option blueGamma b
+.br
+option grayGamma gr
+.RS
+.I r g b gr
+.RE
+By using these values, the internal linear gamma table (r,g,b,gr = 1.0)
+can be adjusted.
+.PP
+option red_gain r
+.br
+option red_offset ro
+.br
+option green_gain g
+.br
+option green_offset go
+.br
+option blue_gain b
+.br
+option blue_offset bo
+.RS
+.I r g b ro go bo
+These values can be used to set the gain and offset values of
+the AFE for each channel. The range is between 0 and 63. \-1
+means autocalibration.
+.RE
+
+.PP
+See the plustek.conf file for examples.
+.PP
+.B Note:
+.br
+You have to make sure, that the USB subsystem is loaded
+correctly and you have access to the device-node. For
+more details see
+.B sane\-usb (5)
+manpage. You might use
+.B sane\-find\-scanner
+to check that you have access to your device.
+.PP
+.B Note:
+.br
+If there's no configuration file, the backend defaults to
+.B device auto
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/plustek.conf
+The backend configuration file
+.TP
+.I @LIBDIR@/libsane\-plustek.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-plustek.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_PLUSTEK
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_PLUSTEK=10
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.BR sane\-u12 (5),
+.BR sane\-gt68xx (5),
+.br
+.I @DOCDIR@/plustek/Plustek-USB.changes
+.br
+.I http://www.gjaeger.de/scanner/plustek/
+
+.SH "CONTACT AND BUG-REPORTS"
+Please send any information and bug-reports to:
+.br
+.B SANE Mailing List
+.PP
+Additional info and hints can be obtained from our
+.br
+Mailing-List archive at:
+.br
+.B http://www.sane\-project.org/mailing\-lists.html
+.PP
+or directly from the projects' homepage at:
+.br
+.B http://www.gjaeger.de/scanner/plustek/
+.PP
+To obtain debug messages from the backend, please set the
+environment-variable
+.I SANE_DEBUG_PLUSTEK
+before calling your favorite scan-frontend (i.e. xscanimage).
+.br
+.B i.e.: export SANE_DEBUG_PLUSTEK=20 ; xscanimage
+.PP
+The value controls the verbosity of the backend. Please note, that
+values greater than 24 force the backend to output raw data files,
+which could be rather large. The ending of these files is ".raw".
+For problem reports it should be enough the set the verbosity to
+13.
+
+.SH "KNOWN BUGS & RESTRICTIONS"
+
+.PP
+* The driver does not support these manic scalings up
+to 16 times the physical resolution. The only scaling
+is done on resolutions between the physical resolution
+of the CCD-/CIS-sensor and the stepper motor i.e. you
+have a 600x1200 dpi scanner and you are scanning using
+800dpi, so scaling is necessary, because the sensor only
+delivers 600dpi but the motor is capable to perform
+1200dpi steps.
+.PP
+* Plusteks' model policy is somewhat inconsistent. They
+sell technically different devices under the
+same product name. Therefore it is possible that some
+devices like the UT12 or U12 won't work \- please check
+the model list above and compare the product-id to
+the one your device has.
+.PP
+* Negative/Slide scanning quality is poor.
diff --git a/doc/sane-plustek_pp.man b/doc/sane-plustek_pp.man
new file mode 100644
index 0000000..c01aba6
--- /dev/null
+++ b/doc/sane-plustek_pp.man
@@ -0,0 +1,518 @@
+.TH sane\-plustek_pp 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-plustek_pp
+.SH NAME
+sane\-plustek_pp \- SANE backend for Plustek parallel port
+flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-plustek_pp
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Plustek ASIC 9600[1/3] and P9800[1/3] based
+parallel port flatbed scanners.
+The access of the scanner is either done directly by the backend
+or via kernel module, called pt_drv which can be created out of
+the plustek_pp backend code \- see also section
+.B "BUILDING THE KERNEL MODULE"
+for further information.
+
+.SH "SUPPORTED DEVICES"
+
+At present, the following scanners should work with this backend
+and/or the kernel module:
+.PP
+.B "PLUSTEK SCANNERS"
+.PP
+.ft CR
+.nf
+Parallelport Model: ASIC: Properties:
+---------------------- ----- ------------------------
+OpticPro PT12 98003 600x1200 dpi 36bit 512Kb
+OpticPro P12 98003 600x1200 dpi 36bit 512Kb
+OpticPro 9636T/12000T 98001 600x1200 dpi 36bit 512Kb
+OpticPro 12000P Turbo 98001 600x1200 dpi 36bit 512Kb
+OpticPro 9636P+/Turbo 98001 600x1200 dpi 36bit 512Kb
+OpticPro 9636P 96003 600x1200 dpi 36bit 128Kb
+OpticPro 12000P/96000P 96003 600x1200 dpi 36bit 128Kb
+OpticPro 1236P 96003 600x1200 dpi 30bit 128Kb
+OpticPro 9600P 96003 600x1200 dpi 30bit 128Kb
+OpticPro 9630P/FBIV 96003 600x1200 dpi 30bit 128Kb
+OpticPro 9630PL (14") 96003 600x1200 dpi 30bit 128Kb
+OpticPro A3I 96003 400x800 dpi 36bit 128Kb
+OpticPro 600P/6000P 96003 300x600 dpi 30bit 32Kb
+OpticPro 4831P 96003 300x600 dpi 30bit 32Kb
+OpticPro 4830P/FBIII 96003 300x600 dpi 30bit 32Kb
+OpticPro 4800P/FBII 96001 300x600 dpi 24bit 32Kb
+.fi
+.ft R
+.PP
+
+.B "PRIMAX SCANNERS"
+
+There are some scanners sold by Primax, but they are in fact
+Plustek devices. These scanners are also supported.
+The following table will show the relationship:
+.PP
+.ft CR
+.nf
+Model: Plustek Model: Remarks:
+--------------------------- -------------- ------------
+Colorado 4800 OpticPro 4800 not tested
+Compact 4800 Direct OpticPro 600 mov=2
+Compact 4800 Direct 30bit OpticPro 4830 mov=7
+Compact 9600 Direct 30bit OpticPro 9630 works
+.fi
+.ft R
+.PP
+
+.B "GENIUS SCANNERS"
+
+The following devices are sold as Genius Scanners, but are in fact
+Plustek devices.
+The table will show the relationship:
+.PP
+.ft CR
+.nf
+Model: Remarks:
+--------------------------- ----------------------------
+Colorpage Vivid III V2 Like P12 but has two buttons
+ and Wolfson DAC
+.fi
+.ft R
+.PP
+
+.B "ARIES SCANNERS"
+
+There's one scanner sold as Aries Scanner, but is in fact a
+Plustek device.
+The following table will show the relationship:
+.PP
+.ft CR
+.nf
+Model: Plustek Model: Remarks:
+--------------------------- -------------- ------------
+Scan-It 4800 OpticPro 600 mov=2
+.fi
+.ft R
+.PP
+
+.B "BrightScan SCANNERS"
+
+There's one scanner sold as BrightScan OpticPro Scanner, this is also
+a rebadged Plustek device.
+The following table will show the relationship:
+.PP
+.ft CR
+.nf
+Model: Remarks:
+--------------------------- ----------------------------
+BrightScan OpticPro OpticPro P12
+.fi
+.ft R
+
+.SH "DEVICE NAMES"
+This backend works in two modes, the so called "direct-mode"
+and the "kernel-mode". In direct-mode, the user-space backend is
+used, in kernel-mode, you should have a kernel-module named pt_drv
+loaded.
+This backends default device is:
+.PP
+.RS
+.I 0x378
+.RE
+.PP
+This "default device" will be used, if no configuration
+file can be found. It is rather the base address of the parallel port
+on i386 machines.
+.PP
+As the backend supports up to four devices, it is possible to
+specify them in the configuration file
+.PP
+.RS
+.I @CONFIGDIR@/plustek_pp.conf
+.RE
+.PP
+See this file for examples.
+.PP
+
+.SH "CONFIGURATION"
+.PP
+This section describes the backends' configuration file entries.
+The file is located at:
+.I @CONFIGDIR@/plustek_pp.conf
+.PP
+For a proper setup, you will need at least two entries:
+.RS
+.I [direct]
+.br
+.I device 0x378
+.RE
+.PP
+or
+.RS
+.I [kernel]
+.br
+.I device /dev/pt_drv
+.RE
+.PP
+.I direct
+tells the backend, that the following devicename (here
+.IR 0x378 )
+has to be interpreted as parallel port scanner device. In
+fact it is the address to use, alternatively you can use
+.I /dev/parport0
+if the backend has been compiled with libieee1284 support.
+.I kernel
+should only be used, when a kernel-module has been built
+out of the backend sources. See below for more instructions
+about this.
+.PP
+Further options:
+.PP
+option warmup t
+.RS
+.I t
+specifies the warmup period in seconds
+.RE
+.PP
+option lampOff t
+.RS
+.I t
+is the time in seconds for switching off the lamps in
+standby mode
+.RE
+.PP
+option lOffonEnd b
+.RS
+.I b
+specifies the behaviour when closing the backend, 1 --> switch
+lamps off, 0 --> do not change lamp status
+.RE
+.PP
+option mov m
+.RS
+.I m
+is the model override switch, which only works in direct mode.
+.TP
+.IR m " = 0"
+default: no override
+.TP
+.IR m " = 1"
+OpticPro 9630PL override (works if OP9630
+has been detected) forces legal size (14")
+.TP
+.IR m " = 2"
+Primax 4800Direct override (works if OP600
+has been detected) swaps red/green color
+.TP
+.IR m " = 3"
+OpticPro 9636 override (works if OP9636 has
+been detected) disables backends
+transparency/negative capabilities
+.TP
+.IR m " = 4"
+OpticPro 9636P override (works if OP9636 has
+been detected) disables backends
+transparency/negative capabilities
+.TP
+.IR m " = 5"
+OpticPro A3I override (works if OP12000 has
+been detected) enables A3 scanning
+.TP
+.IR m " = 6"
+OpticPro 4800P override (works if OP600
+has been detected) swaps red/green color
+.TP
+.IR m " = 7"
+Primax 4800Direct 30bit override (works if
+OP4830 has been detected)
+.RE
+.PP
+See the plustek_pp.conf file for examples.
+.PP
+
+.SH "BUILDING THE KERNEL MODULE"
+As mentioned before, the plustek_pp backend code can also
+be compiled and installed as linux kernel module. To do so,
+you will need the source-files of this sane\-backend installation.
+Unpack this tar-ball and go to the directory:
+.br
+.I sane\-backends/doc/plustek
+.br
+Within this directory, you should find a script called:
+.br
+.I MakeModule.sh
+.br
+Now if your Linux kernelsources are installed correctly,
+it should be possible to build, install and load the
+module
+.B pt_drv.
+.B Please note,
+that the kernelsources need to be configured correctly.
+Refer to your distributions
+manual on how this is done. As root user, try
+.br
+.I ./MakeModule.sh
+.br
+the script will try and get all necessary information about your
+running kernel and will lead you through the whole installation
+process.
+.br
+.B Note: Installing and loading the can only be done as
+superuser.
+.PP
+
+.SH "KERNEL MODULE SETUP"
+The configuration of the kernel module is done by providing
+some or more options found below to the kernel module at
+load time. This can be done by invoking insmod with the
+appropriate parameters or appending the options to the file
+.B /etc/modules.conf (kernel < 2.6.x)
+or
+.B /etc/modprobe.conf (kernel >= 2.6.x)
+.PP
+.B
+The Options:
+.br
+lampoff=lll
+.RS
+The value
+.I lll
+tells the driver, after how many seconds to
+switch-off the lamp(s). The default value is 180.
+0 will disable this feature.
+.br
+.B HINT:
+Do not use a value that is too small, because often
+switching on/off the lamps will reduce their lifetime.
+.RE
+.PP
+port=ppp
+.RS
+.I ppp
+specifies the port base address, where the scanner
+is connected to. The default value is 0x378, which
+is normally a standard.
+.RE
+.PP
+warmup=www
+.RS
+.I www
+specifies the time in seconds, how long a lamp has to be on,
+until the driver will start to scan. The default value is 30.
+.RE
+.PP
+lOffonEnd=e
+.RS
+.I e
+specifies the behaviour when unloading the driver, 1 --> switch
+lamps off, 0 --> do not change lamp status
+.RE
+.PP
+slowIO=s
+.RS
+.I s
+specifies which I/O functions the driver should use, 1 --> use
+delayed functions, 0 --> use the non-delayed ones
+.RE
+.PP
+forceMode=fm
+.RS
+.I fm
+specifies port mode which should be used, 0 --> autodetection,
+1 --> use SPP mode and 2 --> use EPP mode
+.RE
+.PP
+mov=m
+.RS
+.TP
+.IR m " = 0"
+default: no override
+.TP
+.IR m " = 1"
+OpticPro 9630PL override (works if OP9630
+has been detected) forces legal size (14")
+.TP
+.IR m " = 2"
+Primax 4800Direct override (works if OP600
+has been detected) swaps red/green color
+.TP
+.IR m " = 3"
+OpticPro 9636 override (works if OP9636 has
+been detected) disables backends
+transparency/negative capabilities
+.TP
+.IR m " = 4"
+OpticPro 9636P override (works if OP9636 has
+been detected) disables backends
+transparency/negative capabilities
+.TP
+.IR m " = 5"
+OpticPro A3I override (works if OP12000 has
+been detected) enables A3 scanning
+.TP
+.IR m " = 6"
+OpticPro 4800P override (works if OP600
+has been detected) swaps red/green color
+.TP
+.IR m " = 7"
+Primax 4800Direct 30bit override (works if
+OP4830 has been detected)
+.RE
+.PP
+Sample entry for file
+.B "/etc/modules.conf"
+:
+.br
+.I alias char\-major\-40 pt_drv
+.br
+.I pre-install pt_drv modprobe -k parport
+.br
+.I options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=0 forceMode=0
+.PP
+For multidevice support, simply add values separated by commas to
+the different options
+.br
+.I options pt_drv port=0x378,0x278 mov=0,4 slowIO=0,1 forceMode=0,1
+.PP
+Remember to call depmod after changing /etc/conf.modules.
+.PP
+
+.SH "PARALLEL PORT MODES"
+.PP
+The current driver works best, when the parallel port
+has been set to EPP-mode. When detecting any other
+mode such as ECP or PS/2 the driver tries to set to a
+faster, supported mode. If this fails, it will use the
+SPP mode, as this mode should work with all Linux supported
+parallel ports. If in doubt, enter your BIOS and set it to
+any mode except ECP.
+.PP
+Former Plustek scanner models (4830, 9630) supplied a
+ISA parallel port adapter card. This card is
+.BR not
+supported by the driver.
+.PP
+The ASIC 96001/3 based models have sometimes trouble with
+high resolution modes. If you encounter sporadic corrupted
+images (parts duplicated or shifted horizontally) kill all
+other applications before scanning and (if sufficient
+memory available) disable swapping.
+.PP
+See the plustek_pp.conf file for examples.
+.PP
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/plustek_pp.conf
+The backend configuration file
+.TP
+.I @LIBDIR@/libsane\-plustek_pp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-plustek_pp.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.TP
+.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.o
+The Linux kernelmodule for kernels < 2.6.x.
+.TP
+.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.ko
+The Linux kernelmodule for kernels >= 2.6.x.
+.PP
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_PLUSTEK_PP
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_PLUSTEK_PP=10
+
+.SH "SEE ALSO"
+.BR sane (7),
+.br
+.I @DOCDIR@/plustek/Plustek\-PARPORT.changes
+.br
+.I http://www.gjaeger.de/scanner/plustek_pp/
+
+.SH "CONTACT AND BUG-REPORTS"
+Please send any information and bug-reports to:
+.br
+.B SANE Mailing List
+.PP
+Additional info and hints can be obtained from our
+.br
+Mailing-List archive at:
+.br
+.B http://www.sane\-project.org/mailing\-lists.html
+.PP
+or directly from the projects' homepage at:
+.br
+.B http://www.gjaeger.de/scanner/plustek_pp/
+.PP
+To obtain debug messages from the backend, please set the
+environment-variable
+.I SANE_DEBUG_PLUSTEK_PP
+before calling your favorite scan-frontend (i.e. xscanimage).
+.br
+.B i.e.: export SANE_DEBUG_PLUSTEK_PP=20 ; xscanimage
+.PP
+The value controls the verbosity of the backend.
+.PP
+
+.SH "KNOWN BUGS & RESTRICTIONS"
+.PP
+* The Halftoning works, but the quality is poor
+.PP
+* Printers (especially HP models) will start to
+print during scanning. This in fact is a problem
+to other printers too, using bidirectional protocol
+(see www.plustek.com (TAIWAN) page for further details)
+.PP
+* The driver does not support these manic scalings up
+to 16 times the physical resolution. The only scaling
+is done on resolutions between the physical resolution
+of the CCD-sensor and the stepper motor i.e. you have a
+600x1200 dpi scanner and you are scanning using 800dpi,
+so scaling is necessary, because the sensor only delivers
+600dpi but the motor is capable to perform 800dpi steps.
+.PP
+* On some devices, the pictures seems bluish
+.PP
+.I ASIC 98001 based models:
+.PP
+* The 300dpi transparency and negative mode does not work
+correctly.
+.PP
+* There is currently no way to distinguish a model with
+and without transparency unit.
+.PP
+* The scanned images seem to be too dark (P9636T)
+.PP
+.I ASIC 96003/1 based models:
+.PP
+* 30bit mode is currently not supported.
+.PP
+* On low end systems under heavy system load the
+driver may lose data, which can result in picture
+corruption or cause the sensor to hit the scan bed.
+.PP
+* The scanning speed on 600x1200 dpi models is slow.
+.PP
+* The scanning quality of the A3I is poor
diff --git a/doc/sane-pnm.man b/doc/sane-pnm.man
new file mode 100644
index 0000000..bd68667
--- /dev/null
+++ b/doc/sane-pnm.man
@@ -0,0 +1,46 @@
+.TH sane\-pnm 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-pnm
+.SH NAME
+sane\-pnm \- SANE PNM image reader pseudo-backend
+.SH DESCRIPTION
+The
+.B sane\-pnm
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to PNM (Portable aNyMap files, which covers PBM bitmap
+files, PGM grayscale files, and PPM pixmap files). The purpose of
+this backend is primarily to aid in debugging of SANE frontends. It
+also serves as an illustrative example of a minimal SANE backend.
+.SH "DEVICE NAMES"
+This backend provides two devices called
+.B 0
+and
+.BR 1.
+.SH CONFIGURATION
+No configuration required.
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-pnm.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-pnm.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_PNM
+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.
+.SH BUGS
+If the pnm backend is installed and saned is used to allow users on remote
+computers to scan on the local machine, pnm files can be read by the remote
+user. This is limited to the files saned can access (usually it's running as
+user "sane"). All pnm files can be read if saned runs as root which isn't
+recommended anyway. The pnm backend is disabled by default. If you want to use
+it, enable it with configure (see configure \-\-help for details). Be sure that
+only trusted users can access the pnm backend over saned.
+.SH AUTHOR
+Andreas Beck, Gordon Matzigkeit, and David Mosberger
+.SH SEE ALSO
+sane(7)
diff --git a/doc/sane-qcam.man b/doc/sane-qcam.man
new file mode 100644
index 0000000..018b95f
--- /dev/null
+++ b/doc/sane-qcam.man
@@ -0,0 +1,92 @@
+.TH sane\-qcam 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-qcam
+.SH NAME
+sane\-qcam \- SANE backend for Connectix QuickCam cameras
+.SH DESCRIPTION
+The
+.B sane\-qcam
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access Connectix QuickCam cameras.
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I port
+.RE
+.PP
+Where
+.I port
+is the I/O port address at which the device resides. This address is
+normally specified in hexadecimal using C syntax (e.g., 0x37b) and may
+be prefixed with the letter "u" (e.g., u0x37b) to force the backend to
+access the camera in uni-directional mode.
+.SH CONFIGURATION
+The contents of the
+.I qcam.conf
+file is a list port addresses that may be connected to a
+Connectix QuickCam. Empty lines and everything starting from a hash
+mark (#) up to the end of a line are ignored. A sample configuration
+file is shown below:
+.PP
+.RS
+0x37b # /dev/lp0
+.br
+0x378 # /dev/lp1
+.br
+u0x278 # /dev/lp2 forced in uni-directional mode
+.br
+0x3bc # /dev/lp0 (alternate address)
+.RE
+.PP
+In general, it is safest to list only the port addresses that really
+correspond to a QuickCam. For example, if one of the listed addresses
+actually connect to a printer, then starting up this backend will
+cause the printer to perform a device reset (which is generally
+undesirable).
+.SH FILES
+.TP
+.I @CONFIGDIR@/qcam.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-qcam.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-qcam.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_QCAM
+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.
+.SH AUTHOR
+David Mosberger
+.SH BUGS
+Support is currently limited to the color version of the QuickCam.
+The black-and-white camera is starting to work too, but I don't
+believe it works in all cases yet. Reportedly, acquiring images of
+certain sizes work fine, but others result in shifted images (sounds
+like a problem due to byte-padding).
+.PP
+The program needs root-privileges since it needs to be able to access
+the camera's I/O ports.
+.SH SEE ALSO
+sane(7)
diff --git a/doc/sane-ricoh.man b/doc/sane-ricoh.man
new file mode 100644
index 0000000..8cb38a2
--- /dev/null
+++ b/doc/sane-ricoh.man
@@ -0,0 +1,79 @@
+.TH sane\-ricoh 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-ricoh
+.SH NAME
+sane\-ricoh \- SANE backend for Ricoh flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-ricoh
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the following Ricoh flatbed scanners:
+.PP
+.RS
+IS50
+.br
+IS60
+.br
+.RE
+.PP
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is 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. The program
+.IR sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name
+could be
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/ricoh.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-ricoh.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-ricoh.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_RICOH
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_RICOH=4
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.SH AUTHOR
+Feico W. Dillema
+
diff --git a/doc/sane-rts8891.man b/doc/sane-rts8891.man
new file mode 100644
index 0000000..6424f7a
--- /dev/null
+++ b/doc/sane-rts8891.man
@@ -0,0 +1,159 @@
+.TH "sane\-rts8891" "5" "8 Dec 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.SH "NAME"
+sane\-rts8891 \- SANE backend for rts8891 based scanners
+.SH "DESCRIPTION"
+The
+.B sane\-rts8891
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to scanners based on the rts8891 ASIC.
+.PP
+The scanners that work with this backend are:
+.PP
+.RS
+.ft CR
+.nf
+ Vendor Model status
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-
+ Umax Astra 4400 untested
+ Umax Astra 4450 untested
+ HP scanjet 4000c good
+ HP scanjet 4470c good
+.fi
+.ft R
+.RE
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xscanimage or xsane.
+
+.br
+If you have any strange behavior, please report to the backend
+maintainer or to the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d rts8891
+.RE
+
+.TP
+.B Scan Mode Options
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I R Color ,
+.I Gray
+and
+.I Lineart
+The default mode is Color. The Lineart mode is black and white only (1 bit).
+Grayscale will produce 256 levels of gray (8 bits). Color mode allows for over
+16 million different colors produced from 24 bits of color information.
+
+.TP
+.B \-\-resolution
+selects the resolution for a scan. The horizontal and vertical resolutions are set
+by the value of this option. The scanner is capable of the following resolutions for the specified option value:
+.PP
+.RS
+.ft CR
+.nf
+ Value Hor. Resolution Vert. Resolution
+ \-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+ 75 75dpi 75dpi
+ 150 150dpi 150dpi
+ 300 300dpi 300dpi
+ 600 600dpi 600dpi
+ 1200 1200dpi 1200dpi
+.fi
+.ft R
+.RE
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 75 dpi
+and the scan area and the scan mode are as specified through their options,
+or the default if not specified. The default value for preview mode is "no".
+
+.TP
+.B \-\-threshold
+selects the minimum\-brightness to get a white point. The threshold is only used with Lineart mode scans.
+It is specified as a percentage in the range 0..100% (in steps of 1).
+The default value of the threshold option is 50.
+
+
+.SH "CONFIGURATION FILE"
+The configuration file
+.B @CONFIGDIR@/rts8891.conf
+contains the usb device ids of supported scanners (eg usb 0x043d 0x007c) and scanner configuration options.
+Empty lines and lines starting with a hash mark (#) are
+ignored.
+.PP
+The options supported are
+.B allowsharing
+,
+.B modelnumber
+.
+
+Option
+.PP
+.B allowsharing
+enables or not the sharing of the scanner between multiple frontends at the same time.
+.PP
+.B modelnumber
+is used to force the reported model by the backend and is only useful in the case of a scanner which NVRAM has been erased.
+.RS
+.ft CR
+.nf
+0 to report a HP4470c.
+1 to report a HP4400c.
+2 to report an Astra 4400.
+.fi
+.ft R
+.RE
+
+.PP
+.SH "FILES"
+.TP
+.I @LIBDIR@/libsane\-rts8891.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-rts8891.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH "ENVIRONMENT"
+.TP
+.B SANE_DEBUG_RTS8891 SANE_DEBUG_RTS8891_LOW SANE_DEBUG_RTS88XX_LIB
+If the library was compiled with debug support enabled, these
+environment variables controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller levels
+reduce verbosity.
+
+
+.SH "LIMITATIONS"
+Scanners of the same model exist with different sensors, due to lack of data
+(ie USB logs) some sensors are better supported than others. At least 75 dpi
+mode is working for any model. Sharing the scanner between several frontends
+at the same time (allowsharing option) may not work on some USB controllers.
+.PP
+XPA is no (yet) supported.
+.SH "BUGS"
+.br
+No bugs currently known.
+
+
+.SH "SEE ALSO"
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH "AUTHOR"
+.TP
+This backend has been developed by St\['e]phane Voltz.
+.I http://stef.dev.free.fr/sane/rts8891
+.SH "CREDITS"
+.TP
+Many thanks go to:
+Laurent Fournier who donated me a HP4470c.
+Vladimir Sysoev and "TheUnruly Squash" for the time they spent recording
+USB activity and testing the experimental version on HP4400 models.
diff --git a/doc/sane-s9036.man b/doc/sane-s9036.man
new file mode 100644
index 0000000..fe194b6
--- /dev/null
+++ b/doc/sane-s9036.man
@@ -0,0 +1,71 @@
+.TH sane\-s9036 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-s9036
+.SH NAME
+sane\-s9036 \- SANE backend for Siemens 9036 flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-s9036
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Siemens 9036 flatbed scanners.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is 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. The program
+.IR sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name
+could be
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/s9036.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-s9036.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-s9036.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_S9036
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_S9036=4
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.SH AUTHOR
+Ingo Schneider
diff --git a/doc/sane-sceptre.man b/doc/sane-sceptre.man
new file mode 100644
index 0000000..9c34413
--- /dev/null
+++ b/doc/sane-sceptre.man
@@ -0,0 +1,152 @@
+.TH sane\-sceptre 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-sceptre
+.SH NAME
+sane\-sceptre \- SANE backend for SCEPTRE scanners
+.SH DESCRIPTION
+The
+.B sane\-sceptre
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Sceptre flatbed scanners. This backend should be
+considered
+.B beta-quality
+software! Please report any strange behavior to the maintainer of the
+backend or to the SANE mailing list.
+.PP
+At present, only one scanner is known to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Model Connection Type
+--------------------------- -------------------
+Sceptre VividScan S1200 SCSI
+.fi
+.ft R
+.RE
+
+The make of this scanner is KINPO, so other scanners from that manufacturer may also work (eg. the S600).
+.SH OPTIONS
+The options the backend supports can either be selected through command line
+options to programs like scanimage or through GUI elements in xscanimage or xsane.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d sceptre
+.RE
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I Lineart, Halftone, Gray and Color.
+The Lineart and Halftone mode are black and white only (1 bit). Gray
+will produce 256 levels of gray (8 bits). Color will produce a 24 bits
+color image. The scanner supports 30 bits internally but it only
+exports 24.
+
+.TP
+.B \-\-resolution
+selects the resolution for a scan. The scanner can do several
+resolutions between 50 and 1200.
+
+.TP
+.B \-\-halftone\-pattern
+selects the pattern mode that is used in Halftone mode. Valid options
+are 1, 2, 3 and 4.
+
+.TP
+.B \-\-gamma\-correction
+controls the scanner internal gamma correction. Valid options are
+"Default", "User defined", "High density printing" "Low density
+printing" and "High contrast printing".
+
+.TP
+.B \-\-custom\-gamma
+(color mode only) allows the user to specify a gamma table (see the
+next 3 parameters).
+
+.TP
+.B \-\-red\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the red channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-green\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the green channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-blue\-gamma\-table
+(color mode only) can be used to download a user defined gamma table
+for the blue channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-threshold
+sets the threshold for black and white pixels in lineart
+mode. Possible values are from 0 (darker) to 255 (lighter).
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 30 dpi
+and the scan area is the maximum allowed. The scan mode is user
+selected. The default is "no".
+
+.TP
+.B The geometry options
+
+.TP
+.B \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters by default.
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/sceptre.conf supports only one information: the device name to use (eg /dev/scanner).
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-sceptre.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-sceptre.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_SCEPTRE
+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.
+
+
+.SH LIMITATIONS
+.TP
+.B Resolutions
+The windows TWAIN driver can be set to any resolution between 50 to 1200
+(excluding software interpolation). This backend cannot. Only a
+handful of resolution are available, although they should be numerous
+enough.
+
+
+.SH BUGS
+
+None known.
+
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH AUTHOR
+
+.TP
+The package is actively maintained by Frank Zago.
+.I http://www.zago.net/sane/#sceptre
diff --git a/doc/sane-scsi.man b/doc/sane-scsi.man
new file mode 100644
index 0000000..c1032ee
--- /dev/null
+++ b/doc/sane-scsi.man
@@ -0,0 +1,328 @@
+.TH sane\-scsi 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-scsi
+.SH NAME
+sane\-scsi \- SCSI adapter tips for scanners
+.SH DESCRIPTION
+This manual page contains various operating-system specific tips and
+tricks on how to get scanners with a SCSI interface working.
+.SH GENERAL INFO
+For scanners with a SCSI interface, it may be necessary to edit the
+appropriate backend configuration file before using SANE for the first
+time. For most systems, the configuration file should list the name
+of the generic SCSI device that the scanner is connected to (e.g., under
+Linux,
+.B /dev/sg4
+or
+.B /dev/sge
+is such a generic SCSI device). It is customary to create a symlink
+from
+.B /dev/scanner
+to the generic SCSI device that the scanner is connected to. In this
+case, the configuration file simply lists the line
+.BR /dev/scanner .
+For a detailed description of each backend's configuration file,
+please refer to the relevant backend manual page (e.g.,
+.BR sane\-epson (5)
+for Epson scanners,
+.BR sane\-hp (5)
+for HP scanners, etc.).
+.PP
+For some operating systems (e.g. Linux and OS/2), there is an alternate way of
+specifying scanner devices. This alternate way allows to identify scanners by
+the SCSI vendor and model string and/or by the SCSI device address (consisting
+of bus number, channel number, id, and logical unit number). The syntax for
+specifying a scanner in this way is:
+.PP
+.RS
+scsi
+.I VENDOR MODEL TYPE BUS CHANNEL ID LUN
+.RE
+.PP
+where
+.I VENDOR
+is the SCSI vendor string,
+.I MODEL
+is the SCSI model string,
+.I TYPE
+is type SCSI device type string,
+.I BUS
+is the SCSI bus number (named "host" in /proc/scsi/scsi),
+.I CHANNEL
+is the SCSI channel number,
+.I ID
+is the SCSI id, and
+.I LUN
+is the logical unit number of the scanner device. The first two fields are
+strings which must be enclosed in double-quotes if they contain any
+whitespace. The remaining four fields are non-negative integer numbers. The
+correct values for these fields can be found by using operating system
+specific tools, e.g. for Linux by looking at the output of the command "cat
+/proc/scsi/scsi". To simplify configuration, a field's value can be replaced
+with an asterisk symbol (``*''). An asterisk has the effect that any value is
+allowed for that particular field. This can have the effect that a single
+scsi-line matches multiple devices. When this happens, each matching device
+will be probed by the backend one by one and registered if the backend thinks
+it is a compatible device. For example, the line
+.PP
+.RS
+scsi MUSTEK MFS\-06000CX Scanner 0 00 03 00
+.RE
+.PP
+would attach the Mustek SCSI scanner with the following /proc/scsi/scsi entry:
+.PP
+.RS 2
+.ft CR
+.nf
+Host: scsi0 Channel: 00 Id: 03 Lun: 00
+ Vendor: MUSTEK Model: MFS\-06000CX Rev: 4.04
+ Type: Scanner ANSI SCSI revision: 0
+.fi
+.ft R
+.RE
+.PP
+Usually it's sufficient to use vendor and model strings only or even only the
+vendor string. The following example
+.PP
+.RS
+scsi MUSTEK * * * * * *
+.RE
+.PP
+would have the effect that all SCSI devices in the system with a
+vendor string of MUSTEK would be probed and recognized by the backend.
+.PP
+If the remainder of a scsi-string consists of asterisks only, the
+asterisks can be omitted. For example, the following line is
+equivalent to the one specified previously:
+.PP
+.RS
+scsi MUSTEK
+.RE
+.PP
+On some platforms (e.g., OpenStep), SANE device names take a special
+form. This is explained below in the relevant platform-specific section.
+.PP
+When using a SCSI scanner, ensure that the access permission for the
+generic SCSI device is set appropriately. We recommend to add a group
+"scanner" to /etc/group which contains all users that should have
+access to the scanner. The permission of the device should then be
+set to allow group read and write access. For example, if the scanner
+is at generic SCSI device
+.BR /dev/sg0 ,
+then the following two commands would set the permission correctly:
+.PP
+.RS
+$ chgrp scanner /dev/sg0
+.br
+$ chmod 660 /dev/sg0
+.br
+.RE
+.PP
+When your system uses the device filesystem (devfs), you have to edit
+.BR /etc/devfs/perms.
+There you should search the line
+.PP
+.RS
+REGISTER ^sg[^/]* PERMISSIONS root.root 0600
+.RE
+.PP
+and add a new line (eg. for changing permissions of sg4):
+.PP
+.RS
+REGISTER ^sg4 PERMISSIONS root.scanner 0660
+.RE
+.PP
+.SH FREEBSD INFO
+Auto-configuration using the "scsi *" lines in the config files only works if
+the user running the frontend has read/write access to /dev/xpt0. Instead, you
+can also set a link
+.I /dev/scanner
+to the appropriate /dev/uk device.
+.RS
+.TP
+Adaptec AHA1542CF
+Reported to work fine under FreeBSD 2.2.2R with the
+.B aha
+driver.
+.TP
+Adaptec 2940
+Reported to work fine under FreeBSD 2.2.2.
+.TP
+Adaptec 1522
+The scanner probes ok but any attempt to
+access it
+.I hangs
+the entire system. It looks like something is disabling interrupts and
+then not re-enabling them, so it looks like a bug in the FreeBSD
+.B aic
+driver.
+.TP
+Adaptec 1505
+Works on FreeBSD 2.2.5R and 3.0 using the
+.B aic
+driver, provided that Plug-and-Play support is disabled on the card.
+If there are no
+.I uk
+devices, just do a ``sh MAKEDEV uk0'' in the
+.B /dev
+directory. The scanner should then be accessible as
+.B /dev/uk0 if it was probed
+during boot.
+.TP
+Tekram DC390
+Reported to work fine under FreeBSD 2.2.2R with the
+.B amd
+driver.
+.RE
+
+.SH LINUX INFO
+First, make sure your kernel has SCSI generic support enabled. In
+``make xconfig'', this shows up under ``SCSI support->SCSI generic
+support''.
+.PP
+
+To keep scanning times to a minimum, it is strongly recommended to use a large
+buffer size for the generic SCSI driver. From SG driver version 2.0 on, the
+maximum buffer size can be changed at program run time, and there is no restriction in size. This driver version is part of the Linux kernels from
+version 2.2.7 on. If the new SG driver is available some backends
+(e.g. sane\-umax, sane\-mustek, sane\-sharp) automatically request larger scsi
+buffers. If a backend does not automatically request a larger scsi buffer, set
+the environment variable
+.B SANE_SG_BUFFERSIZE
+to the desired buffer size in bytes. It is not recommended to use more
+than 1 MB, because for large values the probability increases that the
+SG driver cannot allocate the necessary buffer(s). For ISA cards, even
+1 MB might be a too large value. For a detailed discussion of memory
+issues of the SG driver, see http://www.torque.net/sg.
+.PP
+For Linux kernels before version 2.2.7 the size of the buffer is only 32KB.
+This works, but for many cheaper scanners this causes scanning to be slower by
+about a factor of four than when using a size of 127KB. Linux defines the
+size of this buffer by macro
+.B SG_BIG_BUFF
+in header file
+.IR /usr/include/scsi/sg.h .
+Unless a system is seriously short on memory, it is recommended to increase
+this value to the maximum legal value of 128*1024-512=130560 bytes. After
+changing this value, it is necessary to recompile both the kernel (or the SCSI
+generic module) and the SCSI backends. Keep in mind that this is only
+necessary with older Linux kernels.
+
+.PP
+A common issue with SCSI scanners is what to do when you booted
+the system while the scanner was turned off? In such a case, the
+scanner won't be recognized by the kernel and SANE won't be able
+to access it. Fortunately, Linux provides a simple mechanism to
+probe a SCSI device on demand. Suppose you have a scanner connected
+to SCSI bus 2 and the scanner has a SCSI id of 5. When the system
+is up and running and the scanner is turned on, you can issue
+the command:
+.PP
+.RS
+echo "scsi add\-single\-device 2 0 5 0" > /proc/scsi/scsi
+.RE
+.PP
+and the kernel will probe and recognize your scanner (this needs to be
+done as root). It's also possible to dynamically remove a SCSI device
+by using the ``remove\-single\-device'' command. For details, please
+refer to to the SCSI-2.4-HOWTO.
+.PP
+Scanners are known to work with the following SCSI adapters under Linux. This
+list isn't complete, usually any SCSI adapter supported by Linux should work.
+.PP
+.RS
+.TP
+Acard/Advance SCSI adapters
+Some old versions of the kernel driver (atp870u.c) cut the inquiry information.
+Therefore the scanner couldn't be detected correctly. Use a current kernel.
+.TP
+Adaptec AHA-1505/AHA-1542/AHA-2940
+Reported to work fine with Linux since v2.0. If you encounter kernel freezes
+or other unexpected behaviour get the latest Linux kernel (2.2.17 seems to
+work) or reduce SCSI buffer size to 32 kB.
+.TP
+ASUS SC200
+Reported to work fine with Linux v2.0.
+.TP
+BusLogic BT958
+To configure the BusLogic card, you may need to follow
+these instructions (contributed by Jeremy <jeremy@xxedgexx.com>):
+During boot, when your BusLogic adapter is being initialized, press
+Ctrl-B to enter your BusLogic adapter setup. Choose the address which
+your BusLogic containing your scanner is located. Choose ``SCSI Device
+Configuration''. Choose ``Scan SCSI Bus''. Choose whatever SCSI id
+that contains your scanner and then choose ``View/Modify SCSI
+configuration''. Change ``Negotiation'' to ``async'' and change
+``Disconnect'' to ``off''. Press Esc, save, and Esc again until you
+are asked to reboot.
+.TP
+NCR/Symbios 53c400/53c400a or Domex DTC3181E/L/LE (DTCT436/436P) ISA SCSI card
+This card is supplied by Mustek (and other vendors). It's supported since
+Linux 2.2. The SCSI cards are supported by the module g_NCR5380. It's
+necessary to tell the kernel the io port and type of card. Example for a
+53c400a: ``modprobe g_NCR5380 ncr_addr=0x280 ncr_53c400a=1''. Once the kernel
+detects the card, it should work all right. However, while it should work, do
+not expect good performance out of this card---it has no interrupt line and
+therefore while a scan is in progress, the system becomes almost unusable.
+You may change the values of the USLEEP macros in drivers/scsi/g_NCR5380.c.
+Some documentation is in this file and NCR5380.c.
+.TP
+NCR/Symbios 810
+For some scanners it may be necessary to disable disconnect/reconnect. To
+achieve this use the option ncr53c8xx="disc:n". Some people reported that
+their scanner only worked with the 53c7,8xx driver, not the ncr53c8xx. Try
+both if you have trouble.
+.br
+For Linux kernels before 2.0.33 it may be necessary to increase the SCSI
+timeout. The default timeout for the Linux kernels before 2.0.33 is 10
+seconds, which is way too low when scanning large area. If you get messages
+of the form ``restart (ncr dead ?)'' in your /var/log/messages file or on the
+system console, it's an indication that the timeout is too short. In this
+case, find the line ``if (np->latetime>10)'' in file ncr53c8xx.c (normally in
+directory /usr/src/linux/drivers/scsi) and change the constant 10 to, say, 60
+(one minute). Then rebuild the kernel/module and try again.
+.TP
+Tekram DC315
+The driver can be downloaded from http://www.garloff.de/kurt/linux/dc395/.
+For some older scanners it may be necessary to disable all the more advanced
+features by using e.g. modprobe dc395x_trm dc395x_trm=7,5,1,32.
+.TP
+Tekram DC390
+Version 1.11 of the Tekram driver seems to work fine mostly, except
+that the scan does not terminate properly (it causes a SCSI timeout
+after 10 minutes). The generic AM53C974 also seems to work fine
+and does not suffer from the timeout problems.
+
+.SH SOLARIS, OPENSTEP AND NEXTSTEP INFO
+Under Solaris, OpenStep and NeXTStep, the generic SCSI device name
+refers to a SCSI bus, not to an individual device. For example,
+.B /dev/sg0
+refers to the first SCSI bus. To tell SANE which device to use,
+append the character 'a'+target-id to the special device name. For
+example, the SCSI device connected to the first SCSI controller
+and with target-id 0 would be called
+.BR /dev/sg0a ,
+and the device with target-id 1 on that same bus would be
+called
+.BR /dev/sg0b,
+and so on.
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_SANEI_SCSI
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for the generic SCSI I/O subsystem. E.g., a
+value of 128 requests all debug output to be printed by the backend. A value
+of 255 also prints kernel messages from the SCSI subsystem (where available).
+Smaller levels reduce verbosity.
+.TP
+.B SANE_SCSICMD_TIMEOUT
+sets the timeout value for SCSI commands in seconds. Overriding the default
+value of 120 seconds should only be necessary for very slow scanners.
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-find\-scanner (1),
+.BR sane\-"backendname" (5),
+.BR sane\-usb (5)
+
+.SH AUTHOR
+David Mosberger
diff --git a/doc/sane-sharp.man b/doc/sane-sharp.man
new file mode 100644
index 0000000..f089538
--- /dev/null
+++ b/doc/sane-sharp.man
@@ -0,0 +1,505 @@
+.TH sane\-sharp 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-sharp
+.SH NAME
+sane\-sharp \- SANE backend for SHARP scanners
+.SH DESCRIPTION
+The
+.B sane\-sharp
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Sharp SCSI scanners. This backend should be
+considered
+.B 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.
+.PP
+For other Sharp scanners, it may or may not work.
+.PP
+At present,
+the following scanners are known to work with this backend.
+.RS
+.PP
+.ft CR
+.nf
+Vendor Product id:
+----- -----------
+Sharp JX-610
+Sharp JX-250
+Sharp JX-320
+Sharp JX-330
+Sharp JX-350
+.fi
+.ft R
+.RE
+.PP
+The following scanners are detected by the backend, but not tested:
+.PP
+.RS
+.ft CR
+.nf
+Vendor Product id:
+----- -----------
+Sharp JX-325
+.fi
+.ft R
+.RE
+.SH DEVICE NAMES
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I 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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+
+.SH SCAN OPTIONS
+
+.B Scan Mode
+(parameter
+.B \-\-mode
+for scanimage). Possible settings:
+.RS
+.B Lineart
+(1 bit black & white scans),
+.br
+.B Gray
+(8 bit gray scale scans),
+.br
+.B Lineart Color
+(bi-level color scans),
+.br
+.B Color
+(8 bit RGB scans).
+.RE
+The default value is
+.B Color.
+
+.B Halftone Pattern
+(parameter
+.B \-\-halftone\-pattern
+for scanimage). Available only for the JX-330 series scanners.
+Possible settings:
+.RS
+.B none
+.br
+.B Dither Bayer
+.br
+.B Dither Spiral
+.br
+.B Dither Dispersed
+.br
+.B Error Diffusion
+.RE
+The default value is
+.B none.
+
+.B Paper Source
+(parameter
+.B \-\-source
+for scanimage). This option is only available, if an automatic document
+feeder or a transparency adapter is installed. Possible settings:
+.RS
+.B Flatbed
+.br
+.B Automatic Document Feeder
+.br
+.B Transparency Adapter
+.RE
+If an ADF or a transparency adapter is installed, using it is the
+default selection.
+
+.B Custom Gamma
+(parameter
+.B \-\-custom\-gamma
+for scanimage). This option determines whether a builtin or a custom
+gamma-table is used. Possible settings:
+.RS
+.B yes
+enables custom gamma tables
+.br
+.B no
+enables a built gamma table
+.RE
+
+.B Gamma
+(parameter
+.B \-\-Gamma
+for scanimage). This option is only available, if
+.B Custom Gamma
+is set to
+.B no.
+Possible values:
+.RS
+.B 1.0
+.br
+.B 2.2
+.RE
+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.)
+
+.B Gamma Table
+(parameter
+.B \-\-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.
+
+.B Red Gamma Table
+(parameter
+.B \-\-red\-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).
+
+.B Green Gamma Table
+(parameter
+.B \-\-green\-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).
+
+.B Blue Gamma Table
+(parameter
+.B \-\-blue\-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).
+
+.B Resolution
+in pixel per inch (parameter
+.B \-\-resolution
+for scanimage). Selects the resolution of the scanned image. Allowed values:
+.RS
+.B 30..600
+(JX-330, JX-350 and JX-610) resp.
+.B 30..400
+(JX-250)
+.RE
+The default value is 150.
+
+.B 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 automatic document feeder resp. the
+transparency adapter. Please refer to the values allowed by xscanimage, or
+xsane. With scanimage, enter one of the following commands:
+
+.RS
+.I scanimage \-d sharp \-\-source """Automatic Document Feeder""" \-\-help
+
+.I scanimage \-d sharp \-\-source Flatbed \-\-help
+
+.I scanimage \-d sharp \-\-source """Transparency Adapter""" \-\-help
+.RE
+
+in order to see the allowed parameter values for the scan window.
+
+The scan window parameters are:
+
+.RS
+Top-left x position of scan area (parameter
+.B \-l
+for scanimage);
+.br
+Top-left y position of scan area (parameter
+.B \-t
+for scanimage);
+.br
+bottom right x position of scan area (parameter
+.B \-x
+for scanimage);
+.br
+bottom right y position of scan area (parameter
+.B \-y
+for scanimage);
+.RE
+
+.B Edge emphasis
+(parameter
+.B \-\-Edge emphasis
+for scanimage). This option is not available for the JX-250 and the JX-350.
+Possible settings:
+.RS
+.B None
+.br
+.B Middle
+.br
+.B Strong
+.br
+.B Blur
+.RE
+The default value is
+.B None.
+
+.B Threshold
+(parameter
+.B \-\-threshold
+for scanimage). Sets the threshold for black and white pixels in lineart
+mode. Possible values:
+.RS
+.B 1..255
+.RE
+The default value is
+.B 128.
+This option is only available in scan mode lineart.
+
+.B Threshold Red
+(parameter
+.B \-\-threshold-red
+for scanimage). Sets the threshold for the red component of a pixel in
+in lineart color scan mode. Possible values:
+.RS
+.B 1..255
+.RE
+The default value is
+.B 128.
+This option is only available in scan mode color lineart.
+
+.B Threshold Green
+(parameter
+.B \-\-threshold-green
+for scanimage). Sets the threshold for the green component of a pixel in
+in lineart color scan mode. Possible values:
+.RS
+.B 1..255
+.RE
+The default value is
+.B 128.
+This option is only available in scan mode color lineart.
+
+.B Threshold Blue
+(parameter
+.B \-\-threshold-blue
+for scanimage). Sets the threshold for the blue component of a pixel in
+in lineart color scan mode. Possible values:
+.RS
+.B 1..255
+.RE
+The default value is
+.B 128.
+This option is only available in scan mode color lineart.
+
+.B Light Color
+(parameter
+.B \-\-LightColor
+for scanimage). Sets the color of the light source. Possible values:
+.RS
+.B white
+.br
+.B red
+.br
+.B green
+.br
+.B blue
+.RE
+The default value is
+.B white.
+This option is only available in scan modes lineart color and color.
+
+.SH ADF USAGE
+If a paper jam occurred, the maintenance cover
+.I
+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.
+
+.SH CONFIGURATION
+The contents of the
+.I 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.
+.PP
+Lines setting an option start with the key word
+.B option,
+followed by the option's name and the option's value. At present, three
+options are defined:
+.B buffers, buffersize,
+and
+.B readqueue.
+.PP
+Options defined at the start of
+.I sharp.conf
+apply to all devices; options defined after a
+device name apply to this device.
+.PP
+The options
+.B buffers
+and
+.B
+readqueue
+are only significant if the backend has been compiled
+so that for each scan a second process is forked (switch
+.B USE_FORK
+in
+.I sharp.c
+). This process reads the
+scan data from the scanner and writes this data into a block of shared memory.
+The parent process 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.
+.PP
+.B option buffers
+defines the number of buffers used. The smallest number allowed is 2.
+.PP
+.B 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.
+.PP
+.B 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,
+.B option readqueue
+should be set to 0. For Linux,
+.B option readqueue
+should be set to 2. Larger values than 2 for
+.B option readqueue
+are not reasonable in most cases.
+.B option buffers
+should be greater than
+.B option readqueue.
+
+.SH Performance Considerations
+This section focuses on the problem of stops of the scanner'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.
+.PP
+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.
+.PP
+Stops of the carriage can be caused by the following reasons:
+.PP
+.RS
+\- too much "traffic" on the SCSI bus
+.br
+\- slow responses by the backend to the scanner,
+.br
+\- a program which processes the data acquired by the backend too slow.
+.PP
+.RE
+Too much "traffic" on the SCSI bus: This happens for example, if hard disks
+are connected to the same SCSI bus as the scanner, and when data transfer
+from/to these hard 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.
+.PP
+Slow responses by the backend to the scanner: Unfortunately,
+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
+.B USE_FORK
+is defined when you compile
+.I 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
+recommended, 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 carriage stops.
+.PP
+Slow processing of the scan data: An example for this situation is
+the access to the scanner via a 10 MBit Ethernet, 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
+.B option buffers,
+so that an entire image can be stored in these buffers.
+.PP
+In order to see, if the backend is too slow or if the further processing
+of the data is too slow, set the environment variable
+.B SANE_DEBUG_SHARP
+to 1. When a scan is finished, the backend writes the line "buffer full
+conditions:
+.I nn"
+to stderr. If
+.I nn
+is zero, carriage stops are caused by too slow responses of the backend
+or too much "traffic" on the SCSI bus. If
+.I nn
+is greater than zero, the backend had to wait
+.I nn
+times until a buffer has been processed by the frontend. (Please note that
+.B option buffers
+must be greater than
+.B option readqueue
+in order to get useful output for "buffer full conditions".)
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/sharp.conf
+The backend configuration file.
+.TP
+.I @LIBDIR@/libsane\-sharp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-sharp.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B 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.
+.SH KNOWN PROBLEMS
+1. ADF Mode
+.RS
+After several ADF scans, the scanner moves the carriage 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 scanner must power off and on to stop this
+annoying behaviour.
+.RE
+
+2. Threshold level does not work (only JX-610)
+.PP
+3. The maximum resolution is limited to 600 dpi(JX-610 supported
+to 1200 dpi) resp. 400 dpi (JX-250)
+.PP
+4. If the JX250 is used with an ADF, the following situation 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
+.I
+every
+scan, in contrast to the calibration, which is done after 10 scans. (For the
+calibration, 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.
+.PP
+5. Usage of a transparency adapter (film scan unit) is supported, but not
+tested.
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.SH AUTHORS
+Kazuya Fukuda, Abel Deuring
+.SH CREDITS
+The Sharp backend is based on the Canon backend written by Helmut Koeberle
+.PP
+Parts of this man page are a plain copy of sane\-mustek(5) by David
+Mosberger-Tang, Andreas Czechanowski and Andreas Bolsch
diff --git a/doc/sane-sm3600.man b/doc/sane-sm3600.man
new file mode 100644
index 0000000..8f58622
--- /dev/null
+++ b/doc/sane-sm3600.man
@@ -0,0 +1,82 @@
+.TH sane\-sm3600 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-sm3600
+.SH NAME
+sane\-sm3600 \- SANE backend for Microtek scanners with M011 USB chip
+.SH DESCRIPTION
+The
+.B sane\-sm3600
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some Microtek scanners with the Toshiba M011 custom
+USB chip. This backend should be considered alpha.
+.PP
+There are also backends for Microtek scanners with SCSI command set.
+Refer to sane\-microtek(5) and sane\-microtek2(5) for details.
+.PP
+At present, the following
+scanners are known positively to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Vendor Product id: Remark:
+-------- -------------- -----------
+Microtek ScanMaker 3600 all modes ok
+Microtek ScanMaker 3700 reported to work
+Microtek ScanMaker 3750 reported to work
+.fi
+.ft R
+.RE
+.PP
+If you own a Microtek scanner with the M011 chip other than the ones
+listed above, it may or may not work with SANE!
+
+.SH "FRONTEND OPTIONS"
+This backend dynamically enables the options for the frontend,
+that are supported by the scanner in dependence of the scanning-mode
+and other options. Not supported options are disabled.
+.PP
+The following options are supported by the Microtek2-driver:
+.PP
+Color, grayscale, halftone and lineart scans.
+.PP
+contrast, brightness, control, gamma correction.
+
+.SH "DEVICE NAMES"
+This backend does not support device names in a standardized form.
+
+.SH CONFIGURATION
+This backend does not support a configuration file right now.
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-sm3600.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-sm3600.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_SM3600
+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. To see error messages on stderr set
+SANE_DEBUG_SM3600 to 1.
+
+.br
+E.g. just say:
+.br
+export SANE_DEBUG_SM3600=5
+
+.SH "SEE ALSO"
+sane\-microtek2(5), http://sm3600.sourceforge.net
+
+.SH AUTHOR
+.br
+Marian Eichholz (eichholz@computer.org)
+.br
+Glenn Ramsey (glenn@componic.com)
+.br
+
diff --git a/doc/sane-sm3840.man b/doc/sane-sm3840.man
new file mode 100644
index 0000000..96959b6
--- /dev/null
+++ b/doc/sane-sm3840.man
@@ -0,0 +1,95 @@
+.TH sane\-sm3840 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-sm3840
+.SH NAME
+sane\-sm3840 \- SANE backend for Microtek scanners with SCAN08 USB chip
+.SH DESCRIPTION
+The
+.B sane\-sm3840
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some Microtek scanners with the SCAN08
+USB chip.
+.PP
+There exist backends for Microtek scanners with SCSI command set.
+Refer to sane\-microtek(5) and sane\-microtek2(5) for details.
+.PP
+There also exists a Microtek 3600 series driver, see sane\-sm3600(5) for
+details.
+.PP
+At present, the following
+scanners are known positively to work with this backend:
+.PP
+.RS
+.ft CR
+.nf
+Vendor Product ID: Remark:
+-------- -------------- -----------
+Microtek ScanMaker 3840 All modes OK
+Microtek ScanMaker 4800 All modes OK
+.fi
+.ft R
+.RE
+.PP
+If you own a Microtek scanner with the SCAN08 chip other than the ones
+listed above, it may or may not work with SANE. Feel free to contact the
+backend author (earle@ziplabel.com) to report results with scanners not
+on the list.
+
+
+.SH "FRONTEND OPTIONS"
+.PP
+The following options are supported by the sm3840-driver:
+.PP
+.B \-\-mode color|gray|lineart|halftone
+.br
+Color or grayscale mode.
+
+.B \-\-resolution 150|300|600|1200
+.br
+Pixels per inch for scans.
+
+.B \-\-depth 8|16
+.br
+Note that the least significant bits of 16bpp mode may be noise.
+
+.B \-\-brightness 1..4096
+.br
+Higher numbers increase brightness of returned image.
+
+.B \-\-contrast 0.1..9.9
+.br
+Larger numbers decrease contrast of returned image.
+
+.B \-\-lamp\-timeout 1..15
+.br
+Time in minutes until the lamp is turned off after a scan.
+
+.SH CONFIGURATION
+This backend does not support a configuration file right now.
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-sm3840.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-sm3840.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_SM3840
+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. To see error messages on stderr set
+SANE_DEBUG_SM3840 to 1.
+
+.SH "SEE ALSO"
+sane\-microtek2(5), sane\-sm3600(5), http://www.ziplabel.com/sm3840
+
+.SH AUTHOR
+.br
+Earle F. Philhower III (earle@ziplabel.com)
+.br
+
diff --git a/doc/sane-snapscan.man b/doc/sane-snapscan.man
new file mode 100644
index 0000000..3914868
--- /dev/null
+++ b/doc/sane-snapscan.man
@@ -0,0 +1,111 @@
+.TH sane\-snapscan 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-snapscan
+.SH NAME
+sane\-snapscan \- SANE backend for AGFA SnapScan flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-snapscan
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to AGFA SnapScan flatbed scanners. At present, the following scanners
+are supported from this backend: AGFA SnapScan 300, 310, 600, and 1236s,
+1236u, 1212u, e20, e25,
+e40, e50, e60, Vuego 310s, Acer 300f, 310s, 610s, 610plus, Prisa 620s, Prisa
+620u, Prisa 620ut, Prisa 640u, Prisa 640bu, Prisa 1240, Prisa 3300, Prisa
+4300, Prisa 5300 and Guillemot Maxi Scan A4 Deluxe (SCSI) (with
+varying success).
+.PP
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the path-name for the special device that corresponds to a
+SCSI scanner. For SCSI
+scanners, 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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+.P
+For USB scanners the devicename must contain the keyword "usb", as in
+.I /dev/usbscanner
+or
+.IR /dev/usb/scanner0 .
+For scanners that need a firmware upload before scanning add a line starting
+with "firmware" followed by the fully qualified path to your firmware file,
+e.g.
+.PP
+.RS
+firmware @DATADIR@/sane/snapscan/firmware.bin
+.RE
+.PP
+For further details read http://snapscan.sourceforge.net.
+
+.SH CONFIGURATION
+The contents of the
+.I snapscan.conf
+file is a list of device names that correspond to SnapScan
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. See sane\-scsi(5) on details of what constitutes a valid
+device name.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/snapscan.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-snapscan.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-snapscan.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_SNAPSCAN
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. E.g.,
+a value of 255 requests all debug output to be printed. Smaller
+levels reduce verbosity.
+
+
+.SH BUGS
+Man page doesn't provide much information yet.
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.br
+http://www.cs.ualberta.ca/~charter/SnapScan/snapscan.html
+.br
+http://sourceforge.net/projects/snapscan/ (new development website)
+
+.SH AUTHOR
+Kevin Charter, Franck Schneider, Michel Roelofs, Emmanuel Blot,
+Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
+Petter Reinholdtsen, Gary Plewa, Sebastien Sable, Oliver Schwartz
+and Mikael Magnusson.
+.br
+Man page by Henning Meier-Geinitz (mostly based on the web pages and
+source code).
diff --git a/doc/sane-sp15c.man b/doc/sane-sp15c.man
new file mode 100644
index 0000000..6a56a8d
--- /dev/null
+++ b/doc/sane-sp15c.man
@@ -0,0 +1,77 @@
+.TH sane\-sp15c 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+
+.SH NAME
+sane\-sp15c \- SANE backend for Fujitsu ScanPartner 15C flatbed scanner
+
+.SH DESCRIPTION
+The
+.B sane\-sp15c
+library implements a SANE (Scanner Access Now Easy) backend which
+provides access to the Fujitsu flatbed scanners.
+At present, the following
+scanner is known to work with these backend:
+.PP
+.RS
+.ft CR
+.nf
+Vendor: Model: Rev:
+-------- ---------------- -----
+FCPA ScanPartner 15C 1.01
+.fi
+.ft R
+.RE
+.P
+
+The ScanPartner 15C driver supports
+lineart (1-bit), halftone (1-bit),
+grayscale (4-bit and 8-bit),
+and color (3 x 8-bit) scanning.
+
+Other scanners in these families may work.
+The ScanPartner 15C seems to be a repackaging
+of the ScanPartner 600C.
+People are encouraged to try these driver with the other scanners
+and to contact the author with test results.
+
+.SH CONFIGURATION
+A modest effort has been made to expose the standard options to the API.
+This allows frontends such as xscanimage to set scanning region,
+resolution, bit-depth (and color), and enable the automatic document feeder.
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5), sane\-fujitsu(5)
+.br
+Fujitsu ScanPartner 15C OEM Manual, Doc. No. 250-0081-0
+.br
+Fujitsu M3096G OEM Manual, part number 50FH5028E-05
+.br
+Fujitsu M3096GX/M3093GX/M3093DG OEM Manual, part number C150-E015...03
+
+.SH AUTHOR
+Randolph Bentson
+<bentson@holmsjoen.com>,
+with credit to the unnamed author of the coolscan driver
+
+.SH LIMITATIONS
+Testing limited to a Linux 2.2.5 kernel
+.br
+Can't quite get the scan page/minute performance in ADF modes.
+This may be due to limited system buffer size.
+
+.SH BUGS
+I'm sure there are plenty, and not too well hidden,
+but I haven't seen them yet.
+.br
+Both scanners claim to have separate control
+of resolution in X and Y directions.
+I confess I haven't tested this yet.
+I have found that xsane doesn't even display this capability.
+.br
+Threshold settings on the SP15C don't seem to
+affect the results of lineart mode scans.
+.br
+It might be possible to merge these two drivers without much effort
+since the SP15C driver was derived from the M3096G driver.
+They were split so as to keep the second driver development from breaking
+the working first driver.
+Watch this space for changes.
diff --git a/doc/sane-st400.man b/doc/sane-st400.man
new file mode 100644
index 0000000..9dac97c
--- /dev/null
+++ b/doc/sane-st400.man
@@ -0,0 +1,146 @@
+.TH sane\-st400 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-st400
+.SH NAME
+sane\-st400 \- SANE backend for Siemens ST/Highscan flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-st400
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Siemens ST400 flatbed scanners and compatibles.
+At present, the following scanners are supported by this backend:
+.PP
+.RS
+Siemens ST400 (6 bit gray scale)
+.br
+Siemens ST800 (6 bit gray scale)
+.br
+.RE
+.PP
+The driver supports line art and gray scans up to 8bpp.
+.PP
+The Siemens ST/Highscan series includes several more models, e.g. the ST300
+and ST600. If you own one of these scanners, or a scanner other than the
+ones listed above that works with this backend, please let us know by sending
+the scanner's model name, SCSI ID, and firmware revision to
+.IR sane\-devel@lists.alioth.debian.org .
+Have a look at http://www.sane\-project.org/mailing\-lists.html concerning subscription
+to sane\-devel.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is either the path-name for the special device that corresponds to a
+SCSI scanner. For SCSI scanners, 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
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+.SH CONFIGURATION
+The contents of the
+.I st400.conf
+file is a list of device names that correspond to Siemens
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+/dev/scanner
+.br
+# this is a comment
+.br
+/dev/sge
+.RE
+.PP
+The default configuration file that is distributed with SANE looks like
+this:
+.PP
+.RS
+scsi SIEMENS "ST 400" Scanner * * 3 0
+.RE
+.PP
+In this configuration, the driver can only access the ST400 model
+at SCSI ID 3 LUN 0 (see section "BUGS" below for the reason).
+To use the driver with other scanner models, add an appropriate line to
+the configuration file. For example, to use it with an ST800 at SCSI
+ID 3 LUN 0, add the line:
+.PP
+.RS
+scsi SIEMENS "ST 800" Scanner * * 3 0
+.RE
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/st400.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-st400.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-st400.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"/etc/sane.d" being searched (in this order).
+.TP
+.B SANE_DEBUG_ST400
+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.
+
+.SH MISSING FUNCTIONALITY
+
+Everything but the most basic stuff.
+
+.SH BUGS
+Currently, the backend does not check if the attached device really is
+a ST400. It will happily accept everything that matches the configuration
+entries. This makes it easy to test the backend with other scanners:
+Just add an appropriate line to the configuration file. The configuration
+file as distributed (see above) only works with the ST400. Be careful:
+If there is no config file at all, the backend defaults to /dev/scanner.
+.PP
+The ST400 answers on all eight SCSI LUNs. Normally this is not a problem,
+as LUN support is usually disabled in SCSI drivers, but if you are seeing
+multiple instances of the scanner in a device list, either disable LUNs in
+your SCSI setup or change the entry in the configuration file to match
+LUN 0 only.
+
+.SH DEBUG
+If you encounter a bug please set the environment variable
+SANE_DEBUG_ST400 to 128 and try to regenerate the problem. Then
+send me a report with the log attached.
+.PP
+If you encounter a SCSI bus error or trimmed and/or displaced images please
+also set the environment variable SANE_DEBUG_SANEI_SCSI to 128 before sending
+me the report.
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.br
+http://www.informatik.uni-oldenburg.de/~ingo/sane/
+
+.SH AUTHOR
+
+Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
diff --git a/doc/sane-stv680.man b/doc/sane-stv680.man
new file mode 100644
index 0000000..7b63b92
--- /dev/null
+++ b/doc/sane-stv680.man
@@ -0,0 +1,176 @@
+.TH sane\-stv680 5 "11 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-stv680
+.SH NAME
+sane\-stv680 \- SANE backend for STV680 camera's
+.SH DESCRIPTION
+The
+.B sane\-stv680
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some STV680 cameras. This backend
+should be considered
+.B beta-quality
+software! STV680 cameras are sold under
+various brands like Aiptek.
+This backend may or may not support yours.
+.PP
+The cameras that should work with this backend are:
+.PP
+.ft CR
+.nf
+Vendor Model USB vendor id USB product id status
+------------------------ ------------- -------------- --------
+AIPTEK stv680 0x0553 0x0202 basic
+Konica e-mini 0x04c8 0x0722 untested
+DigitalDream l'espion XS 0x1183 0x0001 untested
+Creative WebCam Go mini 0x041e 0x4007 untested
+.fi
+.ft R
+
+For all these cameras, see the backend home page (under AUTHOR)
+for the exact status of each camera.
+
+For startup of this backend check that if present the stv680 kernel module is
+removed or disabled.
+.br
+Also before using, enable the backend by editing the /etc/sane.d/dll.conf file,
+change #stv680 to stv680.
+
+For problems with the untested cameras, you
+should contact the author for that.
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xcam. For both programs use the \-B option needed for size buffer.
+
+Some frontends examples:
+.br
+xcam
+.RS
+xcam \-B
+.RE
+
+scanimage: for writing in batch mode to a file or to a new file each time.
+.RS
+scanimage \-B \-d stv680:libusb:001:002 \-\-batch=out.ppm \-\-batch-count 5 \-\-mode "Color RGB"
+.RE
+.RS
+scanimage \-B \-d stv680:libusb:001:002 \-\-batch=out%d.ppm \-\-batch-count 5 \-\-mode "Color RGB"
+.RE
+
+.br
+If you have any success with a camera not listed here, or if you have
+any strange behavior, please report to the backend maintainer or to
+the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d stv680
+.RE
+
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the webcams valid choices.
+
+The read resolution mode is 8 bits, output resolution is 24 bits.
+Selects the resolution for a scan.
+The camera can do only the resolutions listed.
+.TP
+.B \-\-Raw
+In this mode raw data is displayed
+.TP
+.B \-\-Color
+In this mode the bayer unshuffle is done but no color correction
+.TP
+.B \-\-Color_RGB
+Bayer unshuffle, color correction
+.TP
+.B \-\-Color_RGB_TXT
+Bayer unshuffle, color correction, textline with date and time is added
+
+
+.TP
+.B Enhancement options
+
+.TP
+.B \-\-white\-level\-r
+Selects what red radiance level should be
+considered "white", when scanning some sheets by changing the calibration
+value loaded into the scanner. Scale \-32 .. 0 .. +32 in steps of 1.
+
+.TP
+.B \-\-white\-level\-g
+Selects what green radiance level should be
+considered "white", when scanning some sheets by changing the calibration i
+value loaded into the scanner. Scale \-32 .. 0 .. +32 in steps of 1.
+
+.TP
+.B \-\-white\-level\-b
+Selects what blue radiance level should be
+considered "white", when scanning some sheets by changing the calibration
+value loaded into the scanner. Scale \-32 .. 0 .. +32 in steps of 1.
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/stv680.conf supports only one
+information: the device name to use (eg usb 0x.... 0x....).
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-stv680.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-stv680.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_STV680
+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.
+
+.SH LIMITATIONS
+The windows TWAIN driver has many more options than this SANE
+backend. However they are only software adjustments. This backend only
+implements what the webcam can support.
+
+
+.SH BUGS
+
+.TP
+Plenty. Parts of this backend are still under development.
+1. Some untested cameras.
+.br
+2. Video streaming slow and stops sometimes (scanimage).
+.br
+3. Sometimes 1/3 of image is NOK (xcam).
+
+
+.SH "SEE ALSO"
+
+sane\-usb(5), scanimage(1), xcam(1), sane(7)
+
+
+.SH AUTHORS
+
+Gerard Klaver http://gkall.hobby.nl/stv680-aiptek.html
+
+
+
+.SH CREDITS
+
+.TP
+Thanks to developers of the other stv680 programs:
+STV680 kernel module
+.br
+pencam2 program
+.br
+libghoto2 program (camlib stv0680)
+
diff --git a/doc/sane-tamarack.man b/doc/sane-tamarack.man
new file mode 100644
index 0000000..628069c
--- /dev/null
+++ b/doc/sane-tamarack.man
@@ -0,0 +1,80 @@
+.TH sane\-tamarack 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-tamarack
+.SH NAME
+sane\-tamarack \- SANE backend for Tamarack flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-tamarack
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the following Tamarack flatbed scanners:
+.PP
+.RS
+Artiscan 6000C
+.br
+Artiscan 8000C
+.br
+Artiscan 12000C
+.br
+.RE
+.PP
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is 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. The program
+.IR sane\-find\-scanner
+helps to find out the correct device. Under Linux, such a device name
+could be
+.I /dev/sga
+or
+.IR /dev/sge ,
+for example. See sane\-scsi(5) for details.
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/tamarack.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-tamarack.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-tamarack.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_TAMARACK
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_TAMARACK=4
+
+.SH "SEE ALSO"
+sane(7), sane\-scsi(5)
+.SH AUTHOR
+Roger Wolff
diff --git a/doc/sane-teco1.man b/doc/sane-teco1.man
new file mode 100644
index 0000000..acb4985
--- /dev/null
+++ b/doc/sane-teco1.man
@@ -0,0 +1,197 @@
+.TH sane\-teco1 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-teco1
+.SH NAME
+sane\-teco1 \- SANE backend for TECO / RELISYS scanners
+.SH DESCRIPTION
+The
+.B sane\-teco1
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some TECO SCSI flatbed scanners. This backend
+should be considered
+.B beta-quality
+software! TECO scanners are sold under
+various brands like RELISYS, PIOTECH, TRUST. This backend may or
+may not support yours.
+.PP
+The scanners that should work with this backend are:
+.PP
+.RS
+.ft CR
+.nf
+ Vendor Model TECO model status
+---------------------- -------------- -----------
+ Relisys AVEC 2400 VM3520 tested
+ Relisys AVEC 2412 VM3520+ tested
+ Relisys AVEC 4800 VM4530 untested
+ Relisys AVEC 4816 VM4530+ untested
+ Relisys RELI 2400 VM3530 untested
+ Relisys RELI 2412 VM3530+ tested
+ Relisys RELI 2412 VM3530+ untested
+ Relisys RELI 4816 VM4540 tested
+ Relisys RELI 4830 VM4542 tested
+ Relisys RELI 9600 VM6530 untested
+ Relisys RELI 9612 VM6530* untested
+ Relisys RELI 9624 VM6530+ untested
+ Relisys RELI 9630 VM6540 untested
+ Relisys RELI DS15 VM3440 untested
+ Relisys RELI DS6 VM3420 untested
+ Dextra DF-600P VM3510 tested
+ Dextra DF-4830T VM4542 untested
+ Dextra DF-1200T+ VM3530+ untested
+ Dextra DF-9624 VM6530+ untested
+.fi
+.ft R
+.RE
+
+Note that the untested scanner will not be directly supported. You
+should contact the author for that.
+
+The TECO VM number can usually be found at the back of the scanner. It
+is also part of the FCC ID. "sane\-find\-scanner \-v" will also show the
+scsi inquiry, and if it is a TECO scanner, the name will be there too.
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xscanimage or xsane.
+
+.br
+If you have any success with a scanner not listed here, or if you have
+any strange behavior, please report to the backend maintainer or to
+the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d teco1
+.RE
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I Black & White
+,
+.I Grayscale
+and
+.I Color
+The Black & White mode is black and white only (1 bit). Grayscale
+will produce 256 levels of gray (8 bits). Color will produce a 24 bits
+color image.
+
+.TP
+.B \-\-resolution
+selects the resolution for a scan. The scanner can do all resolutions
+between 1 and 600, in increments of 1.
+
+
+.TP
+.B Geometry options
+
+.TP
+.B \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters by default.
+
+
+.TP
+.B Enhancement options
+
+.TP
+.B \-\-custom\-gamma
+(color mode only) allows the user to specify a gamma table (see the
+next 3 parameters).
+
+.TP
+.B \-\-red\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the red channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-green\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the green channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-blue\-gamma\-table
+(color mode only) can be used to download a user defined gamma table
+for the blue channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-dither
+(Black & White only) select the dither mask to use. Possible values are
+.I Line art
+,
+.I 2x2
+,
+.I 3x3
+,
+.I 4x4 bayer
+,
+.I 4x4 smooth
+,
+.I 8x8 bayer
+,
+.I 8x8 smooth
+,
+.I 8x8 horizontal
+and
+.I 8x8 vertical
+
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 22 dpi
+and the scan area is the maximum allowed. The scan mode is user
+selected. The default is "no".
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/teco1.conf supports only one information: the device name to use (eg /dev/scanner).
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-teco1.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-teco1.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_TECO1
+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.
+
+
+.SH LIMITATIONS
+The windows TWAIN driver has many more options than this SANE
+backend. However they are only software adjustments. This backend only
+implements what the scanner can support.
+
+
+.SH BUGS
+
+None known.
+
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH AUTHOR
+.TP
+The package is actively maintained by Frank Zago.
+.I http://www.zago.net/sane/#teco
+
+.SH CREDITS
+
+Thanks to Gerard Delafond for the VM4542 support.
+Thanks to Jean-Yves Simon for the VM3510 support.
diff --git a/doc/sane-teco2.man b/doc/sane-teco2.man
new file mode 100644
index 0000000..3abd3b8
--- /dev/null
+++ b/doc/sane-teco2.man
@@ -0,0 +1,229 @@
+.TH sane\-teco2 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-teco2
+.SH NAME
+sane\-teco2 \- SANE backend for TECO / RELISYS scanners
+.SH DESCRIPTION
+The
+.B sane\-teco2
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some TECO SCSI flatbed scanners. This backend
+should be considered
+.B beta-quality
+software! TECO scanners are sold under
+various brands like Mustek, Relisys, Piotech, Primax, TRUST.
+This backend may or may not support yours.
+.PP
+The scanners that should work with this backend are:
+.PP
+.RS
+.ft CR
+.nf
+ Vendor Model TECO model status
+---------------------- -------------- -----------
+ Mustek ScanMagic 4830S VM3575 untested
+ Primax Jewel 4800 VM356A good
+ Primax Profi 9600 VM6575 basic
+ Primax Profi 19200 VM6586 good
+ Relisys APOLLO Express 3 VM356A basic
+ Relisys APOLLO Express 6 VM6565 good
+ Relisys APOLLO Express 12 ? untested
+ Relisys AVEC II S3 VM3564 good
+ Relisys AVEC Super 3 VM3575 basic
+ Relisys SCORPIO Pro VM6575 good
+ Relisys SCORPIO Pro-S VM6586 untested
+ Relisys SCORPIO Super 3 VM3575 good
+.fi
+.ft R
+.RE
+
+For all these scanners, lineart and gray mode work
+well. However, most of them do not support more than a handful of
+resolutions in color mode. See the backend home page (under AUTHOR)
+for the exact status of each scanner.
+
+Note that the untested scanner will not be directly supported. You
+should contact the author for that.
+
+The TECO VM number can usually be found at the back of the
+scanner. It is also part of the FCC ID.
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xscanimage, xsane, quiteinsane or kooka.
+
+.br
+If you have any success with a scanner not listed here, or if you have
+any strange behavior, please report to the backend maintainer or to
+the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d teco2
+.RE
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I Lineart
+,
+.I Gray
+and
+.I Color
+The Lineart mode is black and white only (1 bit). Gray mode
+will produce 256 levels of gray (8 bits). Color will produce a 24 bits
+color image.
+
+.TP
+.B \-\-resolution
+Lineart and Gray
+selects the resolution for a scan. The scanner can do all resolutions
+between 1 and 600, in increments of 1.
+
+
+Color
+selects the resolution for a scan. The scanner can do only the
+resolutions listed.
+
+All values with ydpi > 300 (300 x 600) or 600 (600 x 1200) result in
+a wrong proportion for the scan. The proportion can be adjusted with
+the following imagemagick command:
+convert \-geometry (dpi/max_xdpi * 100%)x100%
+max_xdpi is for the vm3575 constant with 300 dpi
+e.g. 600dpi adjust with: convert \-geometry 200%x100%
+
+.TP
+.B Geometry options
+
+.TP
+.B \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters by default.
+
+
+.TP
+.B Enhancement options
+
+.TP
+.B \-\-custom\-gamma (no custom gamma option for the VM3564 and VM356A)
+(color mode only) allows the user to specify a gamma table (see the
+next 3 parameters).
+
+.TP
+.B \-\-red\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the red channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-green\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the green channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-blue\-gamma\-table
+(color mode only) can be used to download a user defined gamma table
+for the blue channel. The table must be 256 bytes long.
+
+.TP
+.B \-\-white\-level\-r
+(VM3564, VM356A, VM3575 and VM6575 only) Selects what red radiance level should be
+considered "white", when scanning some sheets by changing the calibration
+value loaded into the scanner. Scale 0..64 in steps of 1.
+
+.TP
+.B \-\-white\-level\-g
+(VM3564, VM356A, VM3575 and VM6575 only) Selects what green radiance level should be
+considered "white", when scanning some sheets by changing the calibration i
+value loaded into the scanner. Scale 0..64 in steps of 1.
+
+.TP
+.B \-\-white\-level\-b
+(VM3564, VM356A, VM3575 and VM6575 only) Selects what blue radiance level should be
+considered "white", when scanning some sheets by changing the calibration
+value loaded into the scanner. Scale 0..64 in steps of 1.
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 50 dpi
+(for VM356A and VM6575 75 dpi) and the scan area is the maximum allowed.
+The scan mode is user selected. The default is "no".
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/teco2.conf supports only one
+information: the device name to use (eg /dev/scanner).
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-teco2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-teco2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_TECO2
+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.
+.TP
+.B SANE_TECO2_CAL_ALGO
+Either 0 or 1. Selects the algorithm for the calibration. A
+value of 1 seems to give better scans on the VM356A, VM3575.
+Feedback on it is welcome.
+For VM3564, VM356A, VM3575, VM6575 default 1.
+For other supported types default 0.
+
+
+.SH LIMITATIONS
+The windows TWAIN driver has many more options than this SANE
+backend. However they are only software adjustments. This backend only
+implements what the scanner can support.
+
+
+.SH BUGS
+
+Plenty. Parts of this backend are still under development.
+
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH AUTHORS
+.TP
+Frank Zago
+.I http://www.zago.net/sane/#teco2
+.TP
+The package is actively maintained by Gerard Klaver.
+.I http://gkall.hobby.nl/teco2.html
+
+
+
+
+.SH CREDITS
+
+Thanks to:
+.TP
+Gerard Klaver for his relentless VM3575 testings and contributed a patch to support the VM3564 and VM356A.
+.TP
+Mark Plowman for providing the first SCSI traces from a VM3575.
+.TP
+Andreas Klaedtke for providing the first SCSI traces from a VM6586 and for his testing, and to Stefan von Dombrowski for his testing.
+.TP
+Nicolas Peyresaubes for providing the first SCSI traces from a VM656A and for his testing.
+.TP
+Dave Parker for testing the support for the VM6575.
+.TP
+Michael Hoeller for testing the support for the VM356A.
+.TP
+Christoph.Hoeffner for testing the support for the VM3564 (Relisys AVEC II S3 firmware 1.09).
diff --git a/doc/sane-teco3.man b/doc/sane-teco3.man
new file mode 100644
index 0000000..a2b041d
--- /dev/null
+++ b/doc/sane-teco3.man
@@ -0,0 +1,154 @@
+.TH sane\-teco3 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-teco3
+.SH NAME
+sane\-teco3 \- SANE backend for TECO / RELISYS scanners
+.SH DESCRIPTION
+The
+.B sane\-teco3
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to some TECO SCSI flatbed scanners. This backend
+should be considered
+.B alpha-quality
+software! TECO scanners are sold under
+various brands like RELYSIS, PIOTECH, TRUST. This backend may or
+may not support yours.
+.PP
+The scanners that should work with this backend are:
+.PP
+.RS
+.ft CR
+.nf
+ Vendor Model TECO model status
+ --------------------------- ---------- ----------
+ Relisys Scorpio VM3552 tested
+ Plustek OpticPro 2400SP VM3552 untested
+ PIOTECH Splendeur 3024 VM3552 tested
+ Trust Imagery 2400 SP VM3552 tested
+ Trust Imagery 4800 SP+ VM3552 tested
+ Trust Imagery 9600 SP VM3552 untested
+.fi
+.ft R
+.RE
+
+The TECO VM number can usually be found at the back of the
+scanner. It is also part of the FCC ID.
+
+The options the backend supports can either be selected through
+command line options to programs like scanimage or through GUI
+elements in xscanimage or xsane.
+
+.br
+If you have any success with a scanner not listed here, or if you have
+any strange behavior, please report to the backend maintainer or to
+the SANE mailing list.
+
+Valid command line options and their syntax can be listed by using
+.RS
+scanimage \-\-help \-d teco3
+.RE
+
+.TP
+.B Scan Mode
+
+.TP
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I Black & White
+,
+.I Grayscale
+and
+.I Color
+The Black & White mode is black and white only (1 bit). Grayscale
+will produce 256 levels of gray (8 bits). Color will produce a 24 bits
+color image.
+
+.TP
+.B \-\-resolution
+selects the resolution for a scan. The scanner can do all resolutions
+between 1 and 1200, in increments of 1.
+
+
+.TP
+.B Geometry options
+
+.TP
+.B \-l \-t \-x \-y
+control the scan area: \-l sets the top left x coordinate, \-t the top
+left y coordinate, \-x selects the width and \-y the height of the scan
+area. All parameters are specified in millimeters by default.
+
+
+.TP
+.B Enhancement options
+
+.TP
+.B \-\-custom\-gamma
+(color mode only) allows the user to specify a gamma table (see the
+next 3 parameters).
+
+.TP
+.B \-\-red\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the red channel. The table must be 1024 bytes long.
+
+.TP
+.B \-\-green\-gamma\-table
+(color mode only) can be used to download a user defined
+gamma table for the green channel. The table must be 1024 bytes long.
+
+.TP
+.B \-\-blue\-gamma\-table
+(color mode only) can be used to download a user defined gamma table
+for the blue channel. The table must be 1024 bytes long.
+
+
+.TP
+.B \-\-preview
+requests a preview scan. The resolution used for that scan is 22 dpi
+and the scan area is the maximum allowed. The scan mode is user
+selected. The default is "no".
+
+
+.SH CONFIGURATION FILE
+The configuration file @CONFIGDIR@/teco3.conf supports only one information: the device name to use (eg /dev/scanner).
+
+
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-teco3.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-teco3.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_TECO3
+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.
+
+
+.SH LIMITATIONS
+The windows TWAIN driver has many more options than this SANE
+backend. However they are only software adjustments. This backend only
+implements what the scanner can support.
+
+
+.SH BUGS
+
+Not much.
+
+
+.SH "SEE ALSO"
+
+sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
+
+
+.SH AUTHOR
+.TP
+The package is actively maintained by Frank Zago.
+.I http://www.zago.net/sane/#teco3
diff --git a/doc/sane-test.man b/doc/sane-test.man
new file mode 100644
index 0000000..41b9aa4
--- /dev/null
+++ b/doc/sane-test.man
@@ -0,0 +1,324 @@
+.TH sane\-test 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-test
+.SH NAME
+sane\-test \- SANE backend for testing frontends
+.SH DESCRIPTION
+The
+.B sane\-test
+library implements a SANE (Scanner Access Now Easy) backend that allows
+testing the SANE installation and SANE frontends. It provides access to a
+(nearly) unlimited number of virtual devices. There is no support for real
+scanners or cameras. However, the backend simulates scanning and setting
+options.
+.PP
+The idea is not only to find bugs in frontends but also to show all
+capabilities of SANE. Therefore
+.B sane\-test
+implements functions and options that are not (or seldom) found in other
+backends.
+.PP
+The backend is commented out in @CONFIGDIR@/dll.conf, so either the comment
+character must be removed or the backend must be called explicitly. E.g.
+`scanimage \-d test' or `xscanimage test'.
+
+.SH SCAN MODE OPTIONS
+Option
+.B mode
+selects the scan mode (Gray or Color).
+.PP
+Option
+.B depth
+determines the number of bits per sample (1. 8, or 16). Keep in mind, that
+this value refers to the sample, not the pixel. So depth=16 results in 48
+bits per pixel in color mode. The most usual combinations are mode=Gray,
+depth=1 for lineart, mode=Gray, depth=8 for gray and mode=Color, depth=8 for
+color mode. The combination of color and 1-bit mode is quite obscure (8
+colors) but allowed in the SANE standard. However, the meaning of bits is not
+defined. Currently 1 = high intensity and 0 = low intensity is used.
+.PP
+Setting option
+.B hand\-scanner
+results in the test-backend behaving like a hand-scanner. Hand-scanners do
+not know the image height a priori. Instead, they return a height of \-1.
+Setting this option allows to test whether a frontend can handle this
+correctly. This option also enables a fixed width of 11 cm.
+.PP
+Setting option
+.B three\-pass
+simulates a three-pass scanner. Older color scanners needed to scan the image
+once per color (reg/green/blue) to get the full image. Therefore, in this mode
+three single frames are transmitted in color mode.
+.PP
+Option
+.B three\-pass\-order
+provides support for changing the order of the three frames (see option
+three-pass above). A frontend should support all orders.
+.PP
+Option
+.B resolution
+sets the resolution of the image in dots per inch.
+.PP
+.PP
+Option
+.B source
+can be used to simulate an Automatic Document Feeder (ADF). After 10 scans, the
+ADF will be "empty".
+.PP
+
+.SH SPECIAL OPTIONS
+Option
+.B test\-picture
+allows to set the image that's returned to the frontend. While "Solid white"
+and "Solid black" are quite obvious, the other options need some more
+explanation. Color patterns are used to determine if all modes and their
+colors are represented correctly by the frontend. The grid should look like the
+same in every mode and resolution. A table of all the test pictures can be
+found at: http://www.meier\-geinitz.de/sane/test\-backend/test\-pictures.html.
+.PP
+If option
+.B invert\-endianess
+is set, the upper and lower bytes of image data in 16 bit modes are exchanged.
+This option can be used to test the 16 bit modes of frontends, e.g. if the
+frontend uses the correct endianess.
+.PP
+If option
+.B read\-limit
+is set, the maximum amount of data transferred with each call to sane_read() is
+limited.
+.PP
+Option
+.B read\-limit\-size
+sets the limit for option read-limit. A low limit slows down scanning. It
+can be used to detect errors in frontend that occur because of wrong
+assumptions on the size of the buffer or timing problems.
+.PP
+Option
+.B read\-delay
+enables delaying data to the frontend.
+.PP
+Option
+.B read\-delay\-duration
+selects the number of microseconds the backends waits after each transfer of a
+buffer. This option is useful to find timing-related bugs, especially if
+used over the network.
+.PP
+If option
+.B read\-return\-value
+is different from "Default", the selected status will be returned by every
+call to sane_read(). This is useful to test the frontend's handling of the
+SANE statuses.
+.PP
+If option
+.B ppl\-loss
+is different from 0, it determines the number of pixels that are "lost" at the
+end of each line. That means, lines are padded with unused data.
+.PP
+Option
+.B fuzzy\-parameters
+selects that fuzzy (inexact) parameters are returned as long as the scan
+hasn't been started. This option can be used to test if the frontend uses the
+parameters it got before the start of the scan (which it shouldn't).
+.PP
+Option
+.B non\-blocking
+determines if non-blocking IO for sane_read() should be used if supported by
+the frontend.
+.PP
+If option
+.B select\-fd
+is set, the backend offers a select filedescriptor for detecting if
+sane_read() will return data.
+.PP
+If option
+.B enable\-test\-options
+is set, a fairly big list of options for testing the various SANE option
+types is enabled.
+.PP
+Option
+.B print\-options
+can be used to print a list of all options to standard error.
+.PP
+
+.SH GEOMETRY OPTIONS
+Option
+.B tl\-x
+determines the top-left x position of the scan area.
+.PP
+Option
+.B tl\-y
+determines the top-left y position of the scan area.
+.PP
+Option
+.B br\-x
+determines the bottom-right x position of the scan area.
+.PP
+Option
+.B br\-y
+determines the bottom-right y position of the scan area.
+.PP
+
+.SH BOOL TEST OPTIONS
+There are 6 bool test options in total. Each option is numbered. (3/6)
+means: this is option 3 of 6. The numbering scheme is intended for easier
+detection of options not displayed by the frontend (because of missing support
+or bugs).
+.PP
+Option
+.B bool\-soft\-select\-soft\-detect
+(1/6) is a bool test option that has soft select and soft detect (and
+advanced) capabilities. That's just a normal bool option.
+.PP
+Option
+.B bool\-hard\-select\-soft\-detect
+(2/6) is a bool test option that has hard select and soft detect (and
+advanced) capabilities. That means the option can't be set by the frontend
+but by the user (e.g. by pressing a button at the device).
+.PP
+Option
+.B bool\-hard\-select
+(3/6) is a bool test option that has hard select (and advanced) capabilities.
+That means the option can't be set by the frontend but by the user (e.g. by
+pressing a button at the device) and can't be read by the frontend.
+.PP
+Option
+.B bool\-soft\-detect
+(4/6) is a bool test option that has soft detect (and advanced)
+capabilities. That means the option is read-only.
+.PP
+Option
+.B bool\-soft\-select\-soft\-detect\-emulated
+(5/6) is a Bool test option that has soft select, soft detect, and emulated
+(and advanced) capabilities.
+.PP
+Option
+.B bool\-soft\-select\-soft\-detect\-auto
+(6/6) is a Bool test option that has soft select, soft detect, and automatic
+(and advanced) capabilities. This option can be automatically set by the
+backend.
+.PP
+
+.SH INT TEST OPTIONS
+There are 6 int test options in total.
+.PP
+Option
+.B int
+(1/6) is an int test option with no unit and no constraint set.
+.PP
+Option
+.B int\-constraint\-range
+(2/6) is an int test option with unit pixel and constraint range set. Minimum
+is 4, maximum 192, and quant is 2.
+.PP
+Option
+.B int\-constraint\-word\-list
+(3/6) is an int test option with unit bits and constraint word list set.
+.PP
+Option
+.B int\-constraint\-array
+(4/6) is an int test option with unit mm and using an array without
+constraints.
+.PP
+Option
+.B int\-constraint\-array\-constraint\-range
+(5/6) is an int test option with unit mm and using an array with a range
+constraint. Minimum is 4, maximum 192, and quant is 2.
+.PP
+Option
+.B int\-constraint\-array\-constraint\-word\-list
+(6/6) is an int test option with unit percent and using an array a word list
+constraint.
+
+.SH FIXED TEST OPTIONS
+There are 3 fixed test options in total.
+.PP
+Option
+.B fixed
+(1/3) is a fixed test option with no unit and no constraint set.
+.PP
+Option
+.B fixed\-constraint\-range
+(2/3) is a fixed test option with unit microsecond and constraint range
+set. Minimum is \-42.17, maximum 32767.9999, and quant is 2.0.
+.PP
+Option
+.B fixed\-constraint\-word\-list
+(3/3) is a Fixed test option with no unit and constraint word list set.
+.PP
+
+.SH STRING TEST OPTIONS
+There are 3 string test options in total.
+.PP
+Option
+.B string
+(1/3) is a string test option without constraint.
+.PP
+Option
+.B string\-constraint\-string\-list
+(2/3) is a string test option with string list constraint.
+.PP
+Option
+.B string\-constraint\-long\-string\-list
+(3/3) is a string test option with string list constraint. Contains some more
+entries...
+.PP
+
+.SH BUTTON TEST OPTION
+Option
+.B button
+(1/1) is a Button test option. Prints some text...
+.PP
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/test.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below). The initial values of most of the basic SANE options can be configured
+in this file. A template containing all the default values is provided
+together with this backend. One of the more interesting values may be
+.BR number_of_devices .
+It can be used to check the frontend's ability to show a long list of devices.
+The config values concerning resolution and geometry can be useful to test
+the handling of big file sizes.
+
+.TP
+.I @LIBDIR@/libsane\-test.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-test.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_TEST
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_TEST=4
+
+.SH "SEE ALSO"
+sane(7),
+.IR http://www.meier\-geinitz.de/sane/test\-backend/
+
+
+.SH AUTHOR
+Henning Meier-Geinitz <henning@meier\-geinitz.de>
+
+.SH BUGS
+\- config file values aren't tested for correctness
diff --git a/doc/sane-u12.man b/doc/sane-u12.man
new file mode 100644
index 0000000..8b35fdf
--- /dev/null
+++ b/doc/sane-u12.man
@@ -0,0 +1,184 @@
+.TH sane\-u12 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-u12
+.SH NAME
+sane\-u12 \- SANE backend for Plustek USB flatbed scanners,
+based on older parport designs
+.SH DESCRIPTION
+The
+.B sane\-u12
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to USB flatbed scanners based on Plusteks' ASIC
+98003 (parallel-port ASIC) and a GeneSys Logics' USB-parport
+bridge chip.
+
+.SH "SUPPORTED DEVICES"
+The backend is able to support some early Plustek USB scanner based
+their old parport design around the ASIC 98003 and other rebadged
+Plustek devices. The following tables will give you a short overview.
+
+If your Plustek scanner has another Product ID, then the device is
+.B NOT
+supported by this backend.
+.br
+
+Vendor Plustek \- ID: 0x07B3
+.br
+.ft CR
+.nf
+----------------------------------------------------------
+Model: Vendor-ID: Product-ID:
+----------------------------------------------------------
+OpticPro U12 0x07B3 0x0001
+OpticPro U1212 0x07B3 0x0001
+OpticPro UT12 0x07B3 0x0001
+.fi
+.ft R
+.PP
+
+Vendor KYE/Genius
+.br
+.ft CR
+.nf
+--------------------------------------------------------
+USB Model: Vendor-ID: Product-ID:
+--------------------------------------------------------
+ColorPage Vivid III USB 0x07B3 0x0001
+ColorPage HR6 V1 0x0458 0x2004
+.fi
+.ft R
+.PP
+
+.SH "CONFIGURATION"
+To use your scanner with this backend, you need at least two
+entries in the configuration file
+.I @CONFIGDIR@/u12.conf
+.RS
+.I [usb] vendor-id product-id
+.br
+.I device /dev/usbscanner
+.RE
+.PP
+.I [usb]
+tells the backend, that the following devicename (here
+.IR /dev/usbscanner )
+has to be interpreted as USB scanner device. If vendor- and
+product-id has not been specified, the backend tries to
+detect this by its own. If device is set to
+.I auto
+then the next matching device is used.
+.PP
+.B
+The Options:
+.PP
+option warmup t
+.RS
+.I t
+specifies the warmup period in seconds
+.RE
+.PP
+option lampOff t
+.RS
+.I t
+is the time in seconds for switching off the lamps in
+standby mode
+.RE
+.PP
+option lOffonEnd b
+.RS
+.I b
+specifies the behaviour when closing the backend, 1 --> switch
+lamps off, 0 --> do not change lamp status
+.RE
+
+.PP
+See the u12.conf file for examples.
+.PP
+.B Note:
+.br
+You have to make sure, that the USB subsystem is loaded
+correctly and you have access to the device-node. For
+more details see
+.B sane\-usb (5)
+manpage. You might use
+.B sane\-find\-scanner
+to check that you have access to your device.
+.PP
+.B Note:
+.br
+If there's no configuration file, the backend defaults to
+.B device auto
+
+.SH FILES
+.TP
+.I @CONFIGDIR@/u12.conf
+The backend configuration file
+.TP
+.I @LIBDIR@/libsane\-u12.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-u12.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_U12
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_U12=10
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5),
+.BR sane\-plustek (5),
+.br
+.I @DOCDIR@/u12/U12.changes
+.br
+.I http://www.gjaeger.de/scanner/u12/
+
+.SH "CONTACT AND BUG-REPORTS"
+Please send any information and bug-reports to:
+.br
+.B SANE Mailing List
+.PP
+Additional info and hints can be obtained from our
+.br
+Mailing-List archive at:
+.br
+.B http://www.sane\-project.org/mailing\-lists.html
+.PP
+or directly from the projects' homepage at:
+.br
+.B http://www.gjaeger.de/scanner/u12/
+.PP
+To obtain debug messages from the backend, please set the
+environment-variable
+.I SANE_DEBUG_U12
+before calling your favorite scan-frontend (i.e. xscanimage).
+.br
+.B i.e.: export SANE_DEBUG_U12=20 ; xscanimage
+.PP
+The value controls the verbosity of the backend.
+
+.SH "KNOWN BUGS & RESTRICTIONS"
+* The driver is in alpha state, so please don't expect too much!!!
+.PP
+* When using libusb, it might be, that the backend hangs.
+In that case, reconnect the scanner.
diff --git a/doc/sane-umax.man b/doc/sane-umax.man
new file mode 100644
index 0000000..7dd9382
--- /dev/null
+++ b/doc/sane-umax.man
@@ -0,0 +1,276 @@
+.TH sane\-umax 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-umax
+
+.SH NAME
+sane\-umax \- SANE backend for UMAX scanners
+
+.SH ABOUT THIS FILE
+
+This file only is a short description of the umax-backend for sane! For detailed information take a look at
+sane\-umax\-doc.html (it is included in the sane source directory and in the xsane online help)!
+
+.SH DESCRIPTION
+
+The
+.B sane\-umax
+library implements a SANE backend that provides access to several UMAX-SCSI-scanners and some Linotye Hell SCSI-scanners,
+parallel- and USB-scanners are not (and probably will never be) supported!
+
+.B I suggest you hold one hand on the power-button of the scanner while you try the first scans!
+
+.SH CONFIGURATION
+
+The configuration file for this backend resides in
+.IR @CONFIGDIR@/umax.conf .
+
+Its contents is a list of device names that correspond to UMAX and UMAX compatible scanners. Empty lines
+and lines starting with a hash mark (#) are ignored. A sample configuration file is
+shown below:
+
+.nf
+ # this is a comment
+ #
+ option scsi\-maxqueue 4
+ 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 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 exposure\-time\-rgb\-bind \-1
+ option invert\-shading\-data \-1
+ option lamp\-control\-available 0
+ option gamma\-lsb\-padded 0
+ /dev/sge
+\
+ #scsi Vendor Model Type Bus Channel ID LUN
+ # The following scanner supports lamp control
+ option lamp\-control\-available 1
+ scsi UMAX * Scanner * * * * *
+\
+ # scanner on /dev/scanner does not support lamp control
+ option lamp\-control\-available 0
+ /dev/scanner
+.fi
+
+.TP
+execute\-request\-sense:
+values: 0 = disabled, 1 = enabled
+.br
+default = 0
+.br
+If set to 1 umax_do_request_sense is called in
+umax_do_calibration. This can hang the system
+(but has been enabled until this version)
+.TP
+scsi\-buffer\-size\-min, scsi\-buffer\-size\-max:
+values: 4096-1048576
+.br
+default min = 32768, max = 131072
+.br
+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.
+.TP
+scan\-lines, preview\-lines:
+values: 1-65535
+.br
+default: scan\-lines = 40, preview\-lines = 10
+.br
+define the maximum number of lines that are scanned
+into one buffer
+.TP
+force\-preview\-bit\-rgb:
+values:
+0 = disabled,
+1 = enabled
+.br
+default = 0
+.br
+set preview bit in rgb real scan
+.TP
+slow\-speed, care\-about\-smearing:
+values:
+\-1 = auto,
+0 = disabled,
+1 = enabled
+.br
+default = \-1
+.br
+dangerous options, needed for some scanners
+do not changed these options until you really know
+what you do, you may destroy your scanner when you
+define wrong values for this options
+.TP
+calibration\-full\-ccd:
+values:
+\-1 = auto,
+0 = disabled,
+1 = enabled
+.br
+default = \-1
+.br
+do calibration for each pixel of ccd instead of
+selected image
+.TP
+calibration\-width\-offset:
+values: \-99999 = auto, > \-99999 set value
+.br
+add an offset width to the calculated with for
+image/ccd
+.TP
+calibration\-bytes\-pixel:
+values:
+\-1 = disabled,
+0 = not set,
+1 = 1 byte/pixel,
+2 = 2 bytes/pixel
+.br
+use # bytes per pixel for calibration
+.TP
+exposure\-time\-rgb\-bind:
+values:
+\-1 = automatically set by driver \- if known,
+0 = disabled (own selection for red, green and blue),
+1 = enabled (same values for red, green and blue)
+.TP
+invert\-shading\-data:
+values:
+\-1 = automatically set by driver \- if known,
+0 = disabled,
+1 = enabled
+.br
+default = \-1
+.br
+invert shading data before sending it back to the scanner
+.TP
+lamp\-control\-available:
+values:
+0 = automatically set by driver \- if known,
+1 = available
+.br
+default = 0
+.TP
+gamma\-lsb\-padded:
+values:
+\-1 = automatically set by driver \- if known,
+0 = gamma data is msb padded,
+1 = gamma data is lsb padded
+.br
+default = \-1
+.TP
+handle\-bad\-sense\-error:
+values:
+0 = handle as device busy,
+1 = handle as ok,
+2 = handle as i/o error,
+3 = ignore bad error code \- continue sense handler
+.br
+default = 0
+.TP
+scsi\-maxqueue:
+values:
+1..# (maximum defined at compile time)
+.br
+default = 2
+.br
+most scsi drivers allow internal command queueing with a depth
+of 2 commands. In most cases it does not mprove anything when you
+increase this value. When your scsi driver does not support any
+command queueing you can try to set this value to 1.
+
+.PP
+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.
+
+.SH SCSI ADAPTER TIPS
+
+The ISA-SCSI-adapters that are shipped with some Umax-scanners are not supported very
+well by Linux (I suggest not to use it), the PCI-SCSI-adapters that come with some
+Umax-scanners are not supported at all (as far as I know). On other platforms these
+SCSI-adapters are not supported. So you typically need to purchase another SCSI-adapter
+that is supported by your platform. See the relevant hardware FAQs and HOWTOs for your
+platform for more information.
+
+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) or
+other scsi devices, I suggest you use an own SCSI-adapter for your UMAX-scanner.
+
+If you have any problems with your Umax scanner, check your scsi chain
+(cable length, termination, ...).
+
+See also: sane\-scsi(5)
+
+.SH FILES
+
+.TP
+The backend configuration file:
+.I @CONFIGDIR@/umax.conf
+.TP
+The static library implementing this backend:
+.I @LIBDIR@/libsane\-umax.a
+.TP
+The shared library implementing this backend:
+.I @LIBDIR@/libsane\-umax.so
+(present on systems that support dynamic loading)
+
+.SH ENVIRONMENT
+
+.TP
+.B SANE_DEBUG_UMAX
+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:
+SANE_DEBUG_UMAX values
+
+.ft CR
+.nf
+Number Remark
+\
+ 0 print important errors (printed each time)
+ 1 print errors
+ 2 print sense
+ 3 print warnings
+ 4 print scanner-inquiry
+ 5 print information
+ 6 print less important information
+ 7 print called procedures
+ 8 print reader_process messages
+ 10 print called sane\-init-routines
+ 11 print called sane\-procedures
+ 12 print sane infos
+ 13 print sane option-control messages
+.fi
+.ft R
+
+.TP
+Example:
+export SANE_DEBUG_UMAX=8
+
+.SH BUGS
+
+X-resolutions greater than 600 dpi sometimes make problems
+
+.SH SEE ALSO
+sane(7)
+
+.SH AUTHOR
+
+Oliver Rauch
+
+.SH EMAIL-CONTACT
+Oliver.Rauch@Rauch-Domain.DE
diff --git a/doc/sane-umax1220u.man b/doc/sane-umax1220u.man
new file mode 100644
index 0000000..e90a4e9
--- /dev/null
+++ b/doc/sane-umax1220u.man
@@ -0,0 +1,116 @@
+.TH sane\-umax1220u 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-umax
+.SH NAME
+sane\-umax1220u \- SANE backend for the UMAX Astra 1220U and similar scanners
+
+.SH DESCRIPTION
+
+The
+.B sane\-umax1220
+library implements a SANE (Scanner Access Now Easy) backend for the
+the UMAX Astra 1220U and similar scanners.
+
+For more information on this backend, please visit
+.IR http://umax1220u\-sane.sourceforge.net/ .
+
+.SH UMAX ASTRA 1600U/2000U/2100U SUPPORT
+
+This backend is also able to drive the UMAX Astra 1600U/2000U/2100U. The
+2100U is confirmed to work. For the other scanners no reports have been received
+yet. Please contact us and tell us if your scanner works
+(sane\-devel@lists.alioth.debian.org).
+
+.SH CONFIGURATION
+
+Usually, no manual configuration is necessary. The configuration file for this backend resides in
+.IR @CONFIGDIR@/umax1220u.conf .
+
+Its contents is a list of device names that correspond to UMAX Astra scanners.
+Empty lines and lines starting with a hash mark (#) are ignored. A sample
+configuration file is shown below:
+
+.nf
+ #usb vendor product
+ usb 0x1606 0x0010
+ # Device list for non-linux systems
+ /dev/scanner
+ /dev/usb/scanner0
+.fi
+
+See sane\-usb(5) for information on how to set the access permissions on the usb
+device files.
+
+.SH FILES
+
+.TP
+The backend configuration file:
+.I @CONFIGDIR@/umax1220u.conf
+.TP
+The static library implementing this backend:
+.I @LIBDIR@/libsane\-umax1220u.a
+.TP
+The shared library implementing this backend:
+.I @LIBDIR@/libsane\-umax1220u.so
+(present on systems that support dynamic loading)
+
+.SH ENVIRONMENT
+
+.TP
+.B SANE_DEBUG_UMAX1220U
+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:
+
+SANE_DEBUG_UMAX1220U values
+
+.ft CR
+.nf
+Number Remark
+\
+ 1 print failures
+ 2 print information
+ 3 print high-level function calls
+ 4 print high-level function checkpoints
+ 9 print mid-level function calls
+ 10 print mid-level function checkpoints
+ 80 print protocol-level function entry
+ 90 print protocol-level function exit
+.fi
+.ft R
+
+.TP
+Example:
+export SANE_DEBUG_UMAX1220U=10
+
+.SH KNOWN BUGS
+
+600 dpi scanning may fail for large image sizes.
+
+If you keep getting I/O errors, try cycling the power on your scanner to reset it.
+
+There is no way to cancel a scan, since the driver ignores sane_cancel().
+
+If you try scanning an image which is too small, you will get I/O errors. Be
+sure to adjust the scan area before doing a scan, since by default, the scan
+area is zero.
+
+.SH SEE ALSO
+sane(7), sane\-usb(5)
+
+.TP
+(Old) homepage:
+.I http://umax1220u\-sane.sourceforge.net/
+
+.SH AUTHOR
+
+Marcio Luis Teixeira <marciot@users.sourceforge.net>
+
+.SH EMAIL-CONTACT
+sane\-devel@lists.alioth.debian.org
+
+.SH REPORTING BUGS
+
+This backend isn't actively maintained. Nevertheless, bug reports and comments
+should be sent to the sane\-devel mailing list. When reporting bugs, please run
+the backend with SANE_DEBUG_UMAX1220U set to 10 and attach a copy of the log
+messages.
diff --git a/doc/sane-umax_pp.man b/doc/sane-umax_pp.man
new file mode 100644
index 0000000..2a8349d
--- /dev/null
+++ b/doc/sane-umax_pp.man
@@ -0,0 +1,302 @@
+.TH "sane\-umax_pp" "5" "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-umax_pp
+.SH "NAME"
+sane\-umax_pp \- SANE backend for Umax Astra parallel port flatbed scanners
+.SH "DESCRIPTION"
+The
+.B sane\-umax_pp
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to Umax parallel port flatbed scanners. The
+following scanners work with this backend:
+.PP
+.RS
+Model:
+.br
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+.br
+Astra 610P
+.br
+Astra 1220P
+.br
+HP3200C
+.br
+Astra 1600P
+.br
+Astra 2000P
+.br
+Genius ColorPage-Life Pro
+.br
+.RE
+.PP
+This backend handles 75x75, 150x150, 300x300, 600x600 and 600x1200 for 1220P/1600P/2000P
+dpi scan resolutions, and 75x75, 150x150, 300x300 and 300x600 for 610P. In color and gray
+levels, there is a software lineart mode.
+.PP
+The new generation models share a newer version of the 610P ASIC embedded in an EPAT chip.
+Only parts such as CCD and ADC change from
+one to another. They even all reports being UMAX Astra 1220P via IEEE1284.
+There isn't software way to recognize them properly. Under windows, model is
+set by the driver installed, regardless of the hardware.
+.PP
+.TP
+.B EPP/ECP MODES ONLY
+The current version of the backend uses only EPP or ECP mode to communicate
+with the scanner. PS/2 mode isn't implemented. The 610P only use SPP. It is
+recommended that you set your parallel port to EPP in BIOS with the current
+version of this
+backend. You can leave it to ECP or ECP+EPP, but in this case you may not use
+ppdev but only direct hardware access if you have to use ECP. ECPEPP will only
+work if you use a 2.4 or 2.6 kernel with ppdev character device support.
+.PP
+This backend does support parport sharing only
+.I
+if you have a kernel with ppdev support.
+.I
+.PP
+Note that if you don't use the ppdev character device, the backend
+needs to run as root. To allow user access to the scanner
+run the backend through the network interface (See saned(8) and sane\-net(5)).
+A more relaxed solution (security wise) is to add suid bit to the frontend
+(See chmod(1)).
+The backend drop root priviledges as soon as it can, right after gaining direct
+access to IO ports, which lessen risks when being root.
+
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I port value
+.RE
+.PP
+Where
+\fBvalue\fR is :
+
+.RS
+.TP
+auto
+autodetect all parallel ports and probe
+them for scanner
+.TP
+safe\-auto
+autodetect all parallel ports and probe
+them for scanner, but does not try direct
+hardware access
+.TP
+/dev/ppi0
+uses *BSD ppi device, depending on the
+number of available parallel port, you
+have to use /dev/ppi1, /dev/ppi2, ...
+.TP
+/dev/parport0
+uses linux ppdev device, depending on the
+number of available parallel port, you
+have to use /dev/parport1, /dev/parport2, ...
+.TP
+0x378
+does direct hardware access on the given
+address. Usual values are 0x378, 0x278, 0x3BC
+In this case, you have to run the scanner as
+root (*BSD and linux), or with 'IOPL=yes' on
+OS/2
+.PP
+.RE
+\fBNOTE:\fR in all cases, you must have sufficient priviledges
+to get access to the chosen device or address. Depending on the
+security settings, devices may not be available for all users.
+You have to change permissions on the dev/ppi* or /dev/parport* devices.
+.PP
+.RE
+You can rename any device using the
+.PP
+.RS
+.I name devname
+.br
+.I model model
+.br
+.I vendor vendor
+.RE
+.PP
+options. These options apply to the last port option.
+
+.SH "CONFIGURATION"
+Please make sure to edit umax_pp.conf
+.B before
+you use the backend.
+.PP
+The contents of the
+.B umax_pp.conf
+file is a list of options and device names that correspond to Umax
+scanners. Empty lines and lines starting with a hash mark (#) are
+ignored.
+.PP
+The eight options supported are
+.BR red\-gain ,
+.BR green\-gain ,
+.BR blue\-gain ,
+.BR red\-offset ,
+.BR green\-offset ,
+.BR blue\-offset ,
+.BR astra ,
+and
+.BR buffer .
+
+Options
+.B red\-gain
+,
+.B green\-gain
+and
+.B blue\-gain
+allow you to adjust the sensitivity of your scanner for the given color. Values
+range from 0 (lowest gain) to 15 (highest). If the advanced option "Gain" isn't
+checked in the frontend, the backend does automatic gain calibration, and do not use
+user provided values.
+
+.PP
+
+Options
+.B red\-offset
+,
+.B green\-offset
+and
+.B blue\-offset
+allow you to adjust the offset of your scanner for the given color. Values
+range from 0 (lowest offset) to 15 (highest).
+.PP
+
+Option
+.B astra
+allows you to change the model of your scanner. Current auto detection is based
+on side effects on scanning when using 1220P command set on other models, so
+it may fail on unknown hardware combination. Valid values are 610, 1220, 1600
+and 2000. It is useful only when autodetection fails to detect properly
+your scanner model. If your scanner work properly but is reported wrongly,
+let it be that way.
+The only valid case to change the model is when your scanner produces "black" or
+"inverted" scans. In this case you can put the model. Be aware that it will
+prevent scanner model autodetection.
+.PP
+
+Option
+.B buffer
+allows you to change the size of the scan buffer. The size must be specified in
+bytes. The default value is 2 megabytes. Decreasing this value will improve the
+smoothness of progress bar in the frontend, but will stall the
+scan more often.
+
+.PP
+
+
+
+.SH "FILES"
+.TP
+.I @CONFIGDIR@/umax_pp.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-umax_pp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-umax_pp.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH "ENVIRONMENT"
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_UMAX_PP
+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.
+
+.PP
+.RS
+.ft CR
+.nf
+level debug output
+\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+ 0 nothing
+ 1 errors
+ 2 warnings & minor errors
+ 3 additional information
+ 4 debug information
+ 5 code flow (not supported yet)
+ 6 special debug information
+.fi
+.ft R
+.RE
+.PP
+.TP
+.B SANE_DEBUG_UMAX_PP_LOW
+This variable sets the debug level for the SANE interface for the Umax
+ASIC. Note that enabling this will spam your terminal with some
+million lines of debug output.
+
+.PP
+.RS
+.ft CR
+.nf
+level debug output
+\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+ 0 nothing
+ 1 errors
+ 8 command blocks
+ 16 detailed code flow
+ 32 dump datafiles
+ 255 everything
+.fi
+.ft R
+.RE
+.PP
+
+.PP
+.SH "SEE ALSO"
+sane(7), sane\-net(5), saned(8)
+
+.TP
+For latest bug fixes and information see
+.I http://umax1220p.sourceforge.net/
+
+.SH "AUTHOR"
+St\['e]phane Voltz <stef.dev@free.fr>
+
+.SH "CREDITS"
+Support for the 610P has been made possible thank to an hardware donation
+by William Stuart.
+
+.SH "BUG REPORTS"
+If something doesn't work, please contact me. But I need some information about
+your scanner to be able to help you...
+
+.TP
+.I SANE version
+run "scanimage \-V" to determine this
+.TP
+.I the backend version and your scanner hardware
+run "SANE_DEBUG_UMAX_PP=255 scanimage \-L 2>log" as root. If you don't get any output
+from the umax_pp backend, make sure a line "umax_pp" is included into
+your @CONFIGDIR@/dll.conf.
+If your scanner isn't detected, make sure you've defined the right port address, or the
+correct device
+in your umax_pp.conf.
+.TP
+.I 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.
+.TP
+.I 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.
diff --git a/doc/sane-usb.man b/doc/sane-usb.man
new file mode 100644
index 0000000..5052e41
--- /dev/null
+++ b/doc/sane-usb.man
@@ -0,0 +1,149 @@
+.TH sane\-usb 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-usb
+.SH NAME
+sane\-usb \- USB configuration tips for SANE
+.SH DESCRIPTION
+This manual page contains information on how to access scanners with a USB
+interface. It focusses on two main topics: getting the scanner detected by the
+operating system kernel and using it with SANE.
+.PP
+This page applies to USB most backends and scanners, as they use the generic
+sanei_usb interface. However, there is one exceptions: USB Scanners
+supported by the microtek2 backend need a special USB kernel
+driver, see
+.BR sane\-microtek2 (5)
+for details.
+
+.SH "QUICK START"
+This is a short HOWTO-like section. For the full details, read the following
+sections. The goal of this section is to get the scanner detected by
+.BR sane\-find\-scanner (1).
+.PP
+Run sane\-find\-scanner. If it lists your scanner with the correct vendor and
+product ids, you are done. See section
+.B "SANE ISSUES"
+for details on how to go on.
+.PP
+sane\-find\-scanner doesn't list your scanner? Does it work as root? If yes,
+there is a permission issue. See the
+.B LIBUSB
+section for details.
+.PP
+Nothing is found even as root? Check that your kernel supports USB and that
+libusb is installed (see section
+.BR LIBUSB ).
+
+.SH "USB ACCESS METHODS"
+For accessing USB devices, the USB library libusb is used. There used to exist
+another method to access USB devices: the kernel scanner driver. The kernel
+scanner driver method is deprecated and shouldn't be used anymore. It may be
+removed from SANE at any time. In Linux, the kernel scanner driver has been
+removed in the 2.6.* kernel series. Only libusb access is documented in this
+manual page.
+
+.SH LIBUSB
+SANE can only use libusb 0.1.6 or newer. It needs to be installed at
+build-time. Modern Linux distributions and other operating systems come with
+libusb.
+.PP
+Libusb can only access your scanner if it's not claimed by the kernel scanner
+driver. If you want to use libusb, unload the kernel driver (e.g. rmmod
+scanner under Linux) or disable the driver when compiling a new kernel. For
+Linux, your kernel needs support for the USB filesystem (usbfs). For kernels
+older than 2.4.19, replace "usbfs" with "usbdevfs" because the name has
+changed. This filesystem must be mounted. That's done automatically at boot
+time, if /etc/fstab contains a line like this:
+.PP
+.RS
+none /proc/bus/usb usbfs defaults 0 0
+.RE
+.PP
+The permissions for the device files used by libusb must be adjusted for user
+access. Otherwise only root can use SANE devices. For
+.IR Linux ,
+the devices are located in /proc/bus/usb/ or in /dev/bus/usb, if you use
+udev. There are directories named e.g. "001" (the bus name) containing files
+"001", "002" etc. (the device files). The right device files can be found out by
+running scanimage \-L as root. Setting permissions with "chmod" is not permanent,
+however. They will be reset after reboot or replugging the scanner.
+.PP
+Usually udev or for older distributions the hotplug utilities are used, which
+support dynamic setting of access permissions. SANE comes with udev and hotplug
+scripts in the directory tools/udev and tools/hotplug. They can be used for
+setting permissions, see @DOCDIR@/README.linux, tools/README and the README in
+the tools/hotplug directory for more details.
+.PP
+For the
+.BR BSDs ,
+the device files used by libusb are named
+.IR /dev/ugen* .
+Use chmod to apply appropriate permissions.
+
+.SH "SANE ISSUES"
+.PP
+This section assumes that your scanner is detected by sane\-find\-scanner. It
+doesn't make sense to go on, if this is not the case. While sane\-find\-scanner
+is able to detect any USB scanner, actual scanning will only work if the
+scanner is supported by a SANE backend. Information on the level of support
+can be found on the SANE webpage
+.RI ( http://www.sane\-project.org/ ),
+and the individual backend manpages.
+.PP
+Most backends can detect USB scanners automatically using "usb" configuration
+file lines. This method allows to identify scanners by the USB vendor and
+product numbers. The syntax for specifying a scanner this way is:
+.PP
+.RS
+usb
+.I VENDOR PRODUCT
+.RE
+.PP
+where
+.I VENDOR
+is the USB vendor id, and
+.I PRODUCT
+is the USB product id of the scanner. Both ids are non-negative integer numbers
+in decimal or hexadecimal format. The correct values for these fields can be
+found by running sane\-find\-scanner, looking into the syslog (e.g.,
+/var/log/messages) or under Linux by issuing the command "cat
+/proc/bus/usb/devices". This is an example of a config file line:
+.PP
+.RS
+usb 0x055f 0x0006
+.RE
+.PP
+would have the effect that all USB devices in the system with a vendor id of
+0x55f and a product id of 0x0006 would be probed and recognized by the
+backend.
+.PP
+If your scanner is not detected automatically, it may be necessary to edit the
+appropriate backend configuration file before using SANE for the first time.
+For a detailed description of each backend's configuration file, please refer to
+the relevant backend manual page (e.g.
+.BR sane\-mustek_usb (5)
+for Mustek USB scanners).
+.PP
+Do
+.B not
+create a symlink from
+.I /dev/scanner
+to the USB device because this link is used by the SCSI backends. The scanner
+may be confused if it receives SCSI commands.
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_SANEI_USB
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for the USB I/O
+subsystem. E.g., a value of 128 requests all debug output to be
+printed. Smaller levels reduce verbosity. Values greater than 4 enable
+libusb debugging (if available). Example: export SANE_DEBUG_SANEI_USB=4.
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-find\-scanner (1),
+.BR sane\-"backendname" (5),
+.BR sane\-scsi (5)
+
+.SH AUTHOR
+Henning Meier-Geinitz <henning@meier\-geinitz.de>
diff --git a/doc/sane-v4l.man b/doc/sane-v4l.man
new file mode 100644
index 0000000..c0cae22
--- /dev/null
+++ b/doc/sane-v4l.man
@@ -0,0 +1,91 @@
+.TH sane\-v4l 5 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-v4l
+.SH NAME
+sane\-v4l \- SANE interface for Video for Linux API
+.SH DESCRIPTION
+The
+.B sane\-v4l
+library implements a SANE (Scanner Access Now Easy) backend that
+provides generic access to video cameras and similar equipment using
+the V4L (Video for Linux) API.
+.PP
+This is ALPHA software. Really! Important features are missing and there are
+lots of bugs. The code is currently only tested on a Linux 2.4 system with a
+Hauppauge WinTV video card.
+.PP
+.SH "DEVICE NAMES"
+This backend expects device names of the form:
+.PP
+.RS
+.I special
+.RE
+.PP
+Where
+.I special
+is the UNIX path-name for the special device that corresponds to the
+v4l device. The special device name must be a v4l device or a symlink
+to such a device. For example, such a device name could be
+.I /dev/video0
+or
+.IR /dev/bttv0 .
+.SH CONFIGURATION
+The contents of the
+.I v4l.conf
+file is a list of device names that correspond to v4l
+devices. Empty lines and lines starting with a hash mark (#) are
+ignored. A sample configuration file is shown below:
+.PP
+.RS
+/dev/bttv0
+.br
+# this is a comment
+.br
+/dev/video3
+.RE
+.SH FILES
+.TP
+.I @CONFIGDIR@/v4l.conf
+The backend configuration file (see also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @LIBDIR@/libsane\-v4l.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-v4l.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+.TP
+.B SANE_DEBUG_V4L
+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.
+.SH AUTHOR
+Juergen G. Schimmer, Henning Meier-Geinitz
+
+.SH BUGS:
+If more than one video card is present, a crash may occur. Frequency and geometry
+selection is missing.
+.br
+Send bug reports to the SANE mailing list: sane\-devel@lists.alioth.debian.org. You must
+be subscribed to the list to send mail. See
+http://www.sane\-project.org/mailing\-lists.html for details.
+
+.SH SEE ALSO
+sane(7), xcam(1).
diff --git a/doc/sane-xerox_mfp.man b/doc/sane-xerox_mfp.man
new file mode 100644
index 0000000..0f896ce
--- /dev/null
+++ b/doc/sane-xerox_mfp.man
@@ -0,0 +1,85 @@
+.TH sane\-xerox_mfp 5 "15 Dec 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-xerox_mfp
+.SH NAME
+sane\-xerox_mfp \- SANE backend for Xerox Phaser 3200MFP device
+.SH DESCRIPTION
+The
+.B sane\-xerox_mfp
+library implements a SANE (Scanner Access Now Easy) backend that provides
+access to the following USB and network multifunction-peripheral:
+.PP
+.RS
+Phaser 3200MFP
+.br
+Dell MFP Laser Printer 1815dn
+.br
+Xerox Phaser 6110MFP
+.br
+Samsung CLX-3170fn & CLX-3175FW
+.br
+Samsung SCX-4200
+.br
+Samsung SCX-4300
+.br
+Samsung SCX-4500
+.br
+Samsung SCX-4500W
+.br
+Samsung SCX4725-FN
+.br
+Xerox WorkCentre 3119 Series
+.RE
+.PP
+If you own a scanner other than the ones listed above that works with this
+backend, please let us know this by sending the scanner's exact model name and
+the USB vendor and device ids (e.g. from
+.IR /proc/bus/usb/devices ,
+.I sane\-find\-scanner
+or syslog) to us. Even if the scanner's name is only slightly different from
+the models mentioned above, please let us know.
+.SH CONFIGURATION
+.I @CONFIGDIR@/xerox_mfp.conf
+USB scanners do not need any configuration.
+
+For SCX-4500W in network mode you need to specify
+.PP
+.RS
+.B tcp host_address [port]
+.RE
+.PP
+The
+.B host_address
+is passed through resolver, thus can be a dotted quad or a name from /etc/hosts or resolvable through DNS.
+.SH FILES
+.TP
+.I @CONFIGDIR@/xerox_mfp.conf
+The backend configuration file. By default all scanner types/models are enabled, you
+may want to comment out unwanted.
+.TP
+.I @LIBDIR@/libsane\-xerox_mfp.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-xerox_mfp.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+.SH ENVIRONMENT
+.B SANE_DEBUG_XEROX_MFP
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+Example:
+export SANE_DEBUG_XEROX_MFP=4
+.SH AUTHOR
+Alex Belkin <abc@telekom.ru>
+
+Samsung SCX-4500W scan over network support
+Alexander Kuznetsov <acca(at)cpan.org>
+.SH BUGS:
+Multicast autoconfiguration for LAN scanners is not implemented yet. IPv6 addressing never been tested.
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR sane\-usb (5)
+.br
+
diff --git a/doc/sane.man b/doc/sane.man
new file mode 100644
index 0000000..b062782
--- /dev/null
+++ b/doc/sane.man
@@ -0,0 +1,928 @@
+.TH sane 7 "14 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane
+
+.SH NAME
+sane \- Scanner Access Now Easy: API for accessing scanners
+
+.SH DESCRIPTION
+.B SANE
+is an application programming interface (API) that provides standardized
+access to any raster image scanner hardware. The standardized interface makes
+it possible to write just one driver for each scanner device instead of one
+driver for each scanner and application.
+
+While
+.B SANE
+is primarily targeted at a UNIX environment, the standard has been carefully
+designed to make it possible to implement the API on virtually any hardware or
+operating system.
+.PP
+This manual page provides a summary of the information available about
+.BR SANE .
+.PP
+If you have trouble getting your scanner detected, read the PROBLEMS section.
+
+.SH TERMINOLOGY
+
+An application that uses the
+.B SANE
+interface is called a
+.B SANE frontend.
+A driver that implements the
+.B SANE
+interface is called a
+.B SANE backend.
+A
+.B meta backend
+provides some means to manage one or more other backends.
+
+
+.SH "SOFTWARE PACKAGES"
+The package
+.RB ` sane\-backends '
+contains a lot of backends, documentation (including the
+.B SANE
+standard), networking support, and the command line frontend
+.RB ` scanimage '.
+The frontends
+.RB ` xscanimage "', `" xcam "', and `" scanadf '
+are included in the package
+.RB ` sane\-frontends '.
+Both packages can be downloaded from the
+.B SANE
+homepage
+.RI ( http://www.sane\-project.org/ ).
+Information about other frontends and backends can also be found on the
+.B SANE
+homepage.
+
+.SH "GENERAL INFORMATION"
+The following sections provide short descriptions and links to more
+information about several aspects of
+.B SANE.
+A name with a number in parenthesis (e.g.
+.RB ` sane\-dll (5)')
+points to a manual page. In this case
+.RB ` "man 5 sane\-dll" '
+will display the page. Entries like
+.RI ` @DOCDIR@/sane.tex '
+are references to text files that were copied to the
+.B SANE
+documentation directory
+.RI ( @DOCDIR@/ )
+during installation. Everything else is a URL to a resource on the web.
+
+.TP 2
+.B SANE homepage
+Information on all aspects of SANE including a tutorial and a link to the SANE FAQ
+can be found on the SANE homepage:
+.IR http://www.sane\-project.org/ .
+.TP
+.B SANE device lists
+The
+.B SANE
+device lists contain information about the status of
+.B SANE
+support for a specific device. If your scanner is not listed there (either
+supported or unsupported), please contact us. See section HOW CAN YOU HELP
+SANE for details. There are lists for specific releases of SANE, for the
+current development version and a search engine:
+.IR http://www.sane\-project.org/sane\-supported\-devices.html .
+The lists are also installed on your system at @DOCDIR@/.
+.TP
+.B SANE mailing list
+There is a mailing list for the purpose of discussing the SANE standard and its
+implementations: sane\-devel. Despite its name, the list is not only intended
+for developers, but also for users. There are also some more lists for special
+topics, however, for users, sane\-devel is the right list. How to subscribe and
+unsubscribe:
+.IR http://www.sane\-project.org/mailing\-lists.html .
+.TP
+.B SANE IRC channel
+The IRC (Internet Relay Chat) channel #sane can be found on the Freenode
+network (irc.freenode.net). It's for discussing
+.B SANE
+problems, talking about development and general
+.B SANE
+related chatting. Before asking for help, please read the other documentation
+mentioned in this manual page. The channel's topic is also used for
+announcements of problems with SANE infrastructure (mailing lists, web server,
+etc.).
+.TP
+.B Compiling and installing SANE
+Look at
+.I @DOCDIR@/README
+and the os-dependent README files for information about compiling and
+installing
+.B SANE.
+.TP
+.B SCSI configuration
+For information about various systems and SCSI controllers see
+.BR sane\-scsi (5).
+.TP
+.B USB configuration
+For information about USB configuration see
+.BR sane\-usb (5).
+
+.SH "FRONTENDS AND MISCELLANEOUS PROGRAMS"
+.TP 2
+.B scanimage
+Command-line frontend. See
+.BR scanimage (1).
+.TP
+.B saned
+.B SANE
+network daemon that allows remote clients to access image acquisition devices
+available on the local host. See
+.BR saned (8).
+.TP
+.B sane\-find\-scanner
+Command-line tool to find SCSI and USB scanners and determine their Unix
+device files. See
+.BR sane\-find\-scanner (1).
+.PP
+Also, have a look at the
+.B sane\-frontends
+package (including
+.BR xscanimage ", " xcam ", and " scanadf )
+and the frontend information page at
+.IR http://www.sane\-project.org/sane\-frontends.html .
+
+.SH "BACKENDS FOR SCANNERS"
+.TP 2
+.B abaton
+The SANE backend for Abaton flatbed scanners supports the Scan 300/GS (8bit,
+256 levels of gray) and the Scan 300/S (black and white, untested). See
+.BR sane\-abaton (5)
+for details.
+.TP
+.B agfafocus
+This backend supports AGFA Focus scanners and the Siemens S9036 (untested).
+See
+.BR sane\-agfafocus (5)
+for details.
+.TP
+.B apple
+The SANE backend for Apple flatbed scanners supports the following scanners:
+AppleScanner, OneScanner and ColorOneScanner. See
+.BR sane\-apple (5)
+for details.
+.TP
+.B artec
+The SANE Artec backend supports several Artec/Ultima SCSI flatbed scanners as
+well as the BlackWidow BW4800SP and the Plustek 19200S. See
+.BR sane\-artec (5)
+for details.
+.TP
+.B artec_eplus48u
+The SANE artec_eplus48u backend supports the scanner Artec E+ 48U and re-badged
+models like Tevion MD 9693, Medion MD 9693, Medion MD 9705 and Trust Easy
+Webscan 19200. See
+.BR sane\-artec_eplus48u (5)
+for details.
+.TP
+.B as6e
+This is a SANE backend for using the Artec AS6E parallel port interface
+scanner. See
+.BR sane\-as6e (5)
+for details.
+.TP
+.B avision
+This backend supports several Avision based scanners. This includes the
+original Avision scanners (like AV 630, AV 620, ...) as well as the HP
+ScanJet 53xx and 74xx series, Fujitsu ScanPartner, some Mitsubishi and
+Minolta film-scanners.
+See
+.BR sane\-avision (5)
+for details.
+.TP
+.B bh
+The bh backend provides access to Bell+Howell Copiscan II series document
+scanners. See
+.BR sane\-bh (5)
+for details.
+.TP
+.B canon
+The canon backend supports the CanoScan 300, CanoScan 600, and CanoScan
+2700F SCSI flatbed scanners. See
+.BR sane\-canon (5)
+for details.
+.TP
+.B canon630u
+The canon630u backend supports the CanoScan 630u and 636u USB scanners. See
+.BR sane\-canon630u (5)
+for details.
+.TP
+.B canon_dr
+The canon_dr backend supports the Canon DR-Series ADF SCSI and USB scanners. See
+.BR sane\-canon_dr (5)
+for details.
+.TP
+.B canon_pp
+The canon_pp backend supports the CanoScan FB330P, FB630P, N340P and N640P
+parallel port scanners. See
+.BR sane\-canon_pp (5)
+for details.
+.TP
+.B cardscan
+This backend provides support for Corex Cardscan USB scanners. See
+.BR sane\-cardscan (5)
+for details.
+.TP
+.B coolscan
+This is a SANE backend for Nikon Coolscan film-scanners. See
+.BR sane\-coolscan (5)
+for details.
+.TP
+.B coolscan2
+This is a SANE backend for Nikon Coolscan film-scanners.
+See
+.BR sane\-coolscan2 (5)
+or
+.I http://coolscan2.sourceforge.net
+for details.
+.TP
+.B epjitsu
+The epjitsu backend provides support for Epson-based Fujitsu USB scanners. See
+.BR sane\-epjitsu (5)
+for details.
+.TP
+.B epson
+The SANE epson backend provides support for Epson SCSI, parallel port and USB
+flatbed scanners. See
+.BR sane\-epson (5)
+for details.
+.TP
+.B fujitsu
+The fujitsu backend provides support for most Fujitsu SCSI and USB, flatbed
+and adf scanners. See
+.BR sane\-fujitsu (5)
+for details.
+.TP
+.B genesys
+The genesys backend provides support for several scanners based on the Genesys Logic
+GL646, GL841, GL843, GL847 and GL124 chips like the Medion 6471 and Hewlett-Packard 2300c.
+ See
+.BR sane\-genesys (5)
+for details.
+.TP
+.B gt68xx
+The gt68xx backend provides support for scanners based on the Grandtech
+GT-6801 and GT-6816 chips like the Artec Ultima 2000 and several Mustek
+BearPaw CU and TA models. Some Genius, Lexmark, Medion, Packard Bell, Plustek,
+and Trust scanners are also supported. See
+.BR sane\-gt68xx (5)
+for details.
+.TP
+.B hp
+The SANE hp backend provides access to Hewlett-Packard ScanJet scanners which
+support SCL (Scanner Control Language by HP). See
+.BR sane\-hp (5)
+for details.
+.TP
+.B hpsj5s
+The SANE backend for the Hewlett-Packard ScanJet 5S scanner. See
+.BR sane\-hpsj5s (5)
+for details.
+.TP
+.B hp3500
+The SANE backend for the Hewlett-Packard ScanJet 3500 series. See
+.BR sane\-hp3500 (5)
+for details.
+.TP
+.B hp3900
+The SANE backend for the Hewlett-Packard ScanJet 3900 series. See
+.BR sane\-hp3900 (5)
+for details.
+.TP
+.B hp4200
+The SANE backend for the Hewlett-Packard ScanJet 4200 series. See
+.BR sane\-hp4200 (5)
+for details.
+.TP
+.B hp5400
+The SANE backend for the Hewlett-Packard ScanJet 54XXC series. See
+.BR sane\-hp5400 (5)
+for details.
+.TP
+.B hpljm1005
+The SANE backend for the Hewlett-Packard LaserJet M1005 scanner. See
+.BR sane\-hpljm1005(5)
+for details.
+.TP
+.B hs2p
+The SANE backend for the Ricoh IS450 family of SCSI scanners. See
+.BR sane\-hs2p (5)
+for details.
+.TP
+.B ibm
+The SANE backend for some IBM and Ricoh SCSI scanners. See
+.BR sane\-ibm (5)
+for details.
+.TP
+.B kodak
+The SANE backend for some large Kodak scanners. See
+.BR sane\-kodak (5)
+for details.
+.TP
+.B kodakaio
+The SANE backend for Kodak AiO printer/scanners. See
+.BR sane\-kodakaio (5)
+for details.
+.TP
+.B kvs1025
+The SANE backend for Panasonic KV-S102xC scanners. See
+.BR sane\-kvs1025 (5)
+for details.
+.TP
+.B leo
+This backend supports the Leo S3 and the Across FS-1130, which is a re-badged
+LEO FS-1130 scanner. See
+.BR sane\-leo (5)
+for details.
+.TP
+.B lexmark
+This backend supports the Lexmark X1100 series of USB scanners. See
+.BR sane\-lexmark (5)
+for details.
+.TP
+.B ma1509
+The ma1509 backend supports the Mustek BearPaw 1200F USB flatbed scanner. See
+.BR sane\-ma1509 (5)
+for details.
+.TP
+.B magicolor
+The magicolor backend supports the KONICA MINOLTA magicolor 1690MF multi-function printer/scanner/fax. See
+.BR sane\-magicolor (5)
+for details.
+.TP
+.B matsushita
+This backend supports some Panasonic KVSS high speed scanners. See
+.BR sane\-matsushita (5)
+for details.
+.TP
+.B microtek
+The microtek backend provides access to the "second generation" Microtek
+scanners with SCSI-1 command set. See
+.BR sane\-microtek (5)
+for details.
+.TP
+.B microtek2
+The microtek2 backend provides access to some Microtek scanners with a
+SCSI-2 command set. See
+.BR sane\-microtek2 (5)
+for details.
+.TP
+.B mustek
+The SANE mustek backend supports most Mustek SCSI flatbed scanners including the
+Paragon and ScanExpress series and the 600 II N and 600 II EP (non-SCSI). Some
+Trust scanners are also supported. See
+.BR sane\-mustek (5)
+for details.
+.TP
+.B mustek_pp
+The mustek_pp backend provides access to Mustek parallel port flatbed
+scanners. See
+.BR sane\-mustek_pp (5)
+for details.
+.TP
+.B mustek_usb
+The mustek_usb backend provides access to some Mustek ScanExpress USB flatbed
+scanners. See
+.BR sane\-mustek_usb (5)
+for details.
+.TP
+.B mustek_usb2
+The mustek_usb2 backend provides access to scanners using the SQ113
+chipset like the Mustek BearPaw 2448 TA Pro USB flatbed scanner. See
+.BR sane\-mustek_usb2 (5)
+for details.
+.TP
+.B nec
+The SANE nec backend supports the NEC PC-IN500/4C SCSI scanner. See
+.BR sane\-nec (5)
+for details.
+.TP
+.B niash
+The niash backend supports the Agfa Snapscan Touch and the HP ScanJet 3300c,
+3400c, and 4300c USB flatbed scanners. See
+.BR sane\-niash (5)
+for details.
+.TP
+.B p5
+The SANE backend for Primax PagePartner. See
+.BR sane\-p5 (5)
+for details.
+.TP
+.B pie
+The pie backend provides access to Pacific Image Electronics (PIE) and Devcom
+SCSI flatbed scanners. See
+.BR sane\-pie (5)
+for details.
+.TP
+.B pixma
+The pixma backend supports Canon PIXMA MP series (multi-function devices). See
+.BR sane\-pixma (5)
+or
+.I http://home.arcor.de/wittawat/pixma/
+for details.
+.TP
+.B plustek
+The SANE plustek backend supports USB flatbed scanners that use the National
+Semiconductor LM983[1/2/3]-chipset aka Merlin. Scanners using this LM983x chips
+include some models from Plustek, KYE/Genius, Hewlett-Packard, Mustek, Umax,
+Epson, and Canon. See
+.BR sane\-plustek (5)
+for details.
+.TP
+.B plustek_pp
+The SANE plustek_pp backend supports Plustek parallel port flatbed scanners.
+Scanners using the Plustek ASIC P96001, P96003, P98001 and P98003 include some
+models from Plustek, KYE/Genius, Primax. See
+.BR sane\-plustek_pp (5)
+for details.
+.TP
+.B ricoh
+The ricoh backend provides access to the following Ricoh flatbed
+scanners: IS50 and IS60. See
+.BR sane\-ricoh (5)
+for details.
+.TP
+.B s9036
+The s9036 backend provides access to Siemens 9036 flatbed scanners. See
+.BR sane\-s9036 (5)
+for details.
+.TP
+.B sceptre
+The sceptre backend provides access to the Sceptre S1200 flatbed scanner. See
+.BR sane\-sceptre (5)
+for details.
+.TP
+.B sharp
+The SANE sharp backend supports Sharp SCSI scanners. See
+.BR sane\-sharp (5)
+for details.
+.TP
+.B sm3600
+The SANE sm3600 backend supports the Microtek ScanMaker 3600 USB scanner. See
+.BR sane\-sm3600 (5)
+for details.
+.TP
+.B sm3840
+The SANE sm3840 backend supports the Microtek ScanMaker 3840 USB scanner. See
+.BR sane\-sm3840 (5)
+for details.
+.TP
+.B snapscan
+The snapscan backend supports AGFA SnapScan flatbed scanners. See
+.BR sane\-snapscan (5)
+for details.
+.TP
+.B sp15c
+This backend supports the Fujitsu FCPA ScanPartner 15C flatbed scanner. See
+.BR sane\-sp15c (5)
+for details.
+.TP
+.B st400
+The sane\-st400 backend provides access to Siemens ST400 and ST800. See
+.BR sane\-st400 (5)
+for details.
+.TP
+.B tamarack
+The SANE tamarack backend supports Tamarack Artiscan flatbed scanners. See
+.BR sane\-tamarack (5)
+for details.
+.TP
+.B teco1 teco2 teco3
+The SANE teco1, teco2 and teco3 backends support some TECO scanners,
+usually sold under the Relisys, Trust, Primax, Piotech, Dextra
+names. See
+.BR sane\-teco1 "(5), " sane\-teco2 "(5) and " sane\-teco3 (5)
+for details.
+.TP
+.B u12
+The sane\-u12 backend provides USB flatbed scanners based on Plustek's ASIC 98003
+(parallel-port ASIC) and a GeneSys Logics' USB-parport bridge chip like the
+Plustek OpticPro U(T)12. See
+.BR sane\-u12 (5)
+for details.
+.TP
+.B umax
+The sane\-umax backend provides access to several UMAX-SCSI-scanners and some
+Linotype Hell SCSI-scanners. See
+.BR sane\-umax (5)
+for details.
+.TP
+.B umax_pp
+The sane\-umax_pp backend provides access to Umax parallel port flatbed scanners
+and the HP 3200C. See
+.BR sane\-umax_pp (5)
+for details.
+.TP
+.B umax1200u
+The sane\-umax1220u backend supports the UMAX Astra 1220U (USB) flatbed scanner
+(and also the UMAX Astra 2000U, sort of). See
+.BR sane\-umax1220u (5)
+for details.
+.PP
+Also, have a look at the backend information page at
+.I http://www.sane\-project.org/sane\-supported\-devices.html
+and the list of projects in
+.IR @DOCDIR@/PROJECTS .
+
+.SH "BACKENDS FOR DIGITAL CAMERAS"
+.TP 2
+.B dc210
+Backend for Kodak DC210 Digital Camera. See
+.BR sane\-dc210 (5).
+.TP
+.B dc240
+Backend for Kodak DC240 Digital Camera. See
+.BR sane\-dc240 (5).
+.TP
+.B dc25
+Backend for Kodak DC20/DC25 Digital Cameras. See
+.BR sane\-dc25 (5).
+.TP
+.B dmc
+Backend for the Polaroid Digital Microscope Camera. See
+.BR sane\-dmc (5).
+.TP
+.B gphoto2
+Backend for digital cameras supported by the gphoto2 library package. (See
+.I http://www.gphoto.org
+for more information and a list of supported cameras.) Gphoto2 supports over
+140 different camera models. However, please note that more development and
+testing is needed before all of these cameras will be supported by
+.B SANE
+backend. See
+.BR sane\-gphoto2 (5).
+.TP
+.B qcam
+Backend for Connectix QuickCam cameras. See
+.BR sane\-qcam (5).
+.TP
+.B stv680
+The sane\-st680 backend provides access to webcams with a stv680 chip. See
+.BR sane\-st680 (5)
+for details.
+.PP
+Also, have a look at the backend information page at
+.I http://www.sane\-project.org/sane\-supported\-devices.html
+and the list of projects in
+.IR @DOCDIR@/PROJECTS .
+
+.SH "MISCELLANEOUS BACKENDS"
+.TP 2
+.B dll
+The sane\-dll library implements a
+.B SANE
+backend that provides access to an arbitrary number of other
+.B SANE
+backends by dynamic loading. See
+.BR sane\-dll (5).
+.TP
+.B net
+The
+.B SANE
+network daemon saned provides access to scanners located on different
+computers in connection with the net backend. See
+.BR sane\-net "(5) and " saned (8).
+.TP
+.B pnm
+PNM image reader pseudo-backend. The purpose of this backend is primarily to
+aid in debugging of
+.B SANE
+frontends. See
+.BR sane\-pnm (5).
+.TP
+.B pint
+Backend for scanners that use the
+.B PINT
+(Pint Is Not Twain) device driver. The
+.B PINT
+driver is being actively developed on the OpenBSD platform, and has been
+ported to a few other *nix-like operating systems. See
+.BR sane\-pint (5).
+.TP
+.B test
+The
+.B SANE
+test backend is for testing frontends and the
+.B SANE
+installation. It provides test pictures and various test options. See
+.BR sane\-test (5).
+.TP
+.B v4l
+The sane\-v4l library implements a
+.B SANE
+backend that provides generic access to video cameras and similar equipment
+using the
+.B V4L
+(Video for Linux) API. See
+.BR sane\-v4l (5) .
+.PP
+Also, have a look at the backend information page at
+.I http://www.sane\-project.org/sane\-supported\-devices.html
+and the list of projects in
+.IR @DOCDIR@/PROJECTS .
+
+.SH "CHANGING THE TOP-LEVEL BACKEND"
+By default, all
+.B SANE
+backends (drivers) are loaded dynamically by the
+.B sane\-dll
+meta backend. If you have any questions about the dynamic loading,
+read
+.BR sane\-dll (5).
+.B SANE
+frontend can also be linked to other backends directly by copying or linking a
+backend to
+.B libsane.so
+in
+.IR @LIBDIR@ .
+.PP
+
+.SH "DEVELOPER'S DOCUMENTATION"
+It's not hard to write a
+.B SANE
+backend. It can take some time, however. You should have basic knowledge of C
+and enough patience to work through the documentation and find out how your
+scanner works. Appended is a list of some documents that help to write backends
+and frontends.
+.PP
+The
+.B SANE
+standard defines the application programming interface (API) that is used to
+communicate between frontends and backends. It can be found at
+.I @DOCDIR@/sane.ps
+(if latex is installed on your system) and on the
+.B SANE
+website:
+.I http://www.sane\-project.org/html/
+(HTML), or
+.I http://www.sane\-project.org/sane.ps
+(Postscript).
+.PP
+There is some more information for programmers in
+.IR @DOCDIR@/backend\-writing.txt .
+Most of the internal
+.B SANE
+routines
+.RB ( sanei )
+are documented using doxygen:
+.IR http://www.sane\-project.org/sanei/ .
+Before a new backend or frontend project is started, have a look at
+.I @DOCDIR@/PROJECTS
+for projects that are planned or not yet included into the
+.B SANE
+distribution and at our bug-tracking system:
+.IR http://www.http://www.sane\-project.org/bugs.html .
+.PP
+There are some links on how to find out about the protocol of a scanner:
+.IR http://www.meier\-geinitz.de/sane/misc/develop.html .
+
+.PP
+If you start writing a backend or frontend or any other part of
+.BR SANE,
+please contact the sane\-devel mailing list for coordination so the same work
+isn't done twice.
+
+.SH "FILES"
+.TP
+.I @CONFIGDIR@/*.conf
+The backend configuration files.
+.TP
+.I @LIBDIR@/libsane\-*.a
+The static libraries implementing the backends.
+.TP
+.I @LIBDIR@/libsane\-*.so
+The shared libraries implementing the backends (present on systems that
+support dynamic loading).
+.TP
+.I @DOCDIR@/*
+.B SANE
+documentation: The standard, READMEs, text files for backends etc.
+
+.SH "PROBLEMS"
+If your device isn't found but you know that it is supported, make
+sure that it is detected by your operating system. For SCSI and USB scanners,
+use the
+.B sane\-find\-scanner
+tool (see
+.BR sane\-find\-scanner (1)
+for details). It prints one line for each scanner it has detected and some
+comments (#). If
+.B sane\-find\-scanner
+finds your scanner only as root but not as normal user, the permissions for
+the device files are not adjusted correctly. If the scanner isn't found at all,
+the operating system hasn't detected it and may need some help. Depending on
+the type of your scanner, read
+.BR sane\-usb (5)
+or
+.BR sane\-scsi (5).
+If your scanner (or other device) is not connected over the SCSI bus or USB,
+read the backend's manual page for details on how to set it up.
+.PP
+
+Now your scanner is detected by the operating system but not by
+.BR SANE ?
+Try
+.BR "scanimage \-L" .
+If the scanner is not found, check that the backend's name is mentioned in
+.IR @CONFIGDIR@/dll.conf .
+Some backends are commented out by default. Remove the comment sign for your
+backend in this case. Also some backends aren't compiled at all if one of their
+prerequisites are missing. Examples include dc210, dc240, canon_pp, hpsj5s,
+gphoto2, pint, qcam, v4l, net, sm3600, snapscan, pnm. If you need one of these
+backends and they aren't available, read the build instructions in the
+.B README
+file and the individual manual pages of the backends.
+.PP
+
+Another reason for not being detected by
+.B scanimage \-L
+may be a missing or wrong configuration in the backend's configuration
+file. While
+.B SANE
+tries to automatically find most scanners, some can't be setup correctly
+without the intervention of the administrator. Also on some operating systems
+auto-detection may not work. Check the backend's manual page for details.
+.PP
+If your scanner is still not found, try
+setting the various environment variables that are available to assist in
+debugging. The environment variables are documented in the
+relevant manual pages. For example, to get the maximum amount of debug
+information when testing a Mustek SCSI scanner, set environment variables
+.BR SANE_DEBUG_DLL ", " SANE_DEBUG_MUSTEK ", and " SANE_DEBUG_SANEI_SCSI
+to 128 and then invoke
+.B scanimage
+.B \-L .
+The debug messages for the dll backend tell if the mustek backend was found
+and loaded at all. The mustek messages explain what the mustek backend is
+doing while the SCSI debugging shows the low level handling. If you can't find
+out what's going on by checking the messages carefully, contact the sane\-devel
+mailing list for help (see REPORTING BUGS below).
+.PP
+Now that your scanner is found by
+.BR "scanimage \-L" ,
+try to do a scan:
+.BR "scanimage >image.pnm" .
+This command starts a scan for the default scanner with default settings. All
+the available options are listed by running
+.BR "scanimage \-\-help" .
+If scanning aborts with an error message, turn on debugging as mentioned
+above. Maybe the configuration file needs some tuning, e.g. to setup the path
+to a firmware that is needed by some scanners. See the backend's manual page
+for details. If you can't find out what's wrong, contact sane\-devel.
+.PP
+To check that the
+.B SANE
+libraries are installed correctly you can use the test backend, even if you
+don't have a scanner or other
+.B SANE
+device:
+.IP
+.B scanimage \-d
+.I test
+.B \-T
+.PP
+You should get a list of PASSed tests. You can do the same with your backend
+by changing "test" to your backend's name.
+.PP
+So now scanning with
+.B scanimage
+works and you want to use one of the graphical frontends like
+.BR xsane ,
+.BR xscanimage ", or"
+.B quiteinsane
+but those frontends don't detect your scanner? One reason may be that you
+installed two versions of
+.BR SANE .
+E.g. the version that was installed by your distribution in
+.I /usr
+and one you installed from source in
+.IR /usr/local/ .
+Make sure that only one version is installed. Another possible reason is, that
+your system's dynamic loader can't find the
+.B SANE
+libraries. For Linux, make sure that
+.I /etc/ld.so.conf
+contains
+.I /usr/local/lib
+and does
+.B not
+contain
+.IR /usr/local/lib/sane .
+See also the documentation of the frontends.
+.PP
+
+.SH "HOW CAN YOU HELP SANE"
+We appreciate any help we can get. Please have a look at our web page about
+contributing to
+.BR SANE :
+.I http://www.sane\-project.org/contrib.html
+.PP
+
+.SH "CONTACT"
+For reporting bugs or requesting new features, please use our bug-tracking
+system:
+.IR http://www.sane\-project.org/bugs.html .
+You can also contact the author of your backend directly. Usually the email
+address can be found in the
+.I @DOCDIR@/AUTHORS
+file or the backend's manpage. For general discussion about SANE, please use
+the
+.B SANE
+mailing list sane\-devel (see
+.I http://www.sane\-project.org/mailing\-lists.html
+for details).
+.PP
+
+.SH "SEE ALSO"
+.BR saned (8),
+.BR sane\-find\-scanner (1),
+.BR scanimage (1),
+.BR sane\-abaton (5),
+.BR sane\-agfafocus (5),
+.BR sane\-apple (5),
+.BR sane\-artec (5),
+.BR sane\-artec_eplus48u (5),
+.BR sane\-as6e (5),
+.BR sane\-avision (5),
+.BR sane\-bh (5),
+.BR sane\-canon (5),
+.BR sane\-canon630u (5),
+.BR sane\-canon_dr (5),
+.BR sane\-canon_pp (5),
+.BR sane\-cardscan (5),
+.BR sane\-coolscan2 (5),
+.BR sane\-coolscan (5),
+.BR sane\-dc210 (5),
+.BR sane\-dc240 (5),
+.BR sane\-dc25 (5),
+.BR sane\-dll (5),
+.BR sane\-dmc (5),
+.BR sane\-epson (5),
+.BR sane\-fujitsu (5),
+.BR sane\-genesys (5),
+.BR sane\-gphoto2 (5),
+.BR sane\-gt68xx (5),
+.BR sane\-hp (5),
+.BR sane\-hpsj5s (5),
+.BR sane\-hp3500 (5),
+.BR sane\-hp3900 (5),
+.BR sane\-hp4200 (5),
+.BR sane\-hp5400 (5),
+.BR sane\-hpljm1005 (5),
+.BR sane\-ibm (5),
+.BR sane\-kodak (5),
+.BR sane\-leo (5),
+.BR sane\-lexmark (5),
+.BR sane\-ma1509 (5),
+.BR sane\-matsushita (5),
+.BR sane\-microtek2 (5),
+.BR sane\-microtek (5),
+.BR sane\-mustek (5),
+.BR sane\-mustek_pp (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-mustek_usb2 (5),
+.BR sane\-nec (5),
+.BR sane\-net (5),
+.BR sane\-niash (5),
+.BR sane\-pie (5),
+.BR sane\-pint (5),
+.BR sane\-plustek (5),
+.BR sane\-plustek_pp (5),
+.BR sane\-pnm (5),
+.BR sane\-qcam (5),
+.BR sane\-ricoh (5),
+.BR sane\-s9036 (5),
+.BR sane\-sceptre (5),
+.BR sane\-scsi (5),
+.BR sane\-sharp (5),
+.BR sane\-sm3600 (5),
+.BR sane\-sm3840 (5),
+.BR sane\-snapscan (5),
+.BR sane\-sp15c (5),
+.BR sane\-st400 (5),
+.BR sane\-stv680 (5),
+.BR sane\-tamarack (5),
+.BR sane\-teco1 (5),
+.BR sane\-teco2 (5),
+.BR sane\-teco3 (5),
+.BR sane\-test (5),
+.BR sane\-u12 (5),
+.BR sane\-umax1220u (5),
+.BR sane\-umax (5),
+.BR sane\-umax_pp (5),
+.BR sane\-usb (5),
+.BR sane\-v4l (5)
+
+.SH AUTHOR
+David Mosberger-Tang and many many more (see
+.I @DOCDIR@/AUTHORS
+for details). This man page was written by Henning Meier-Geinitz. Quite a lot
+of text was taken from the
+.B SANE
+standard, several man pages, and README files.
diff --git a/doc/sane.png b/doc/sane.png
new file mode 100644
index 0000000..d8a9890
--- /dev/null
+++ b/doc/sane.png
Binary files differ
diff --git a/doc/sane.tex b/doc/sane.tex
new file mode 100644
index 0000000..1132576
--- /dev/null
+++ b/doc/sane.tex
@@ -0,0 +1,1894 @@
+\documentclass[11pt,DVIps]{report}
+
+\usepackage{times,epsfig,html}
+% Not Currently using changebar package so comment out to reduce
+% external dependencies.
+%\usepackage{changebar}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{1.5ex plus 0.5ex minus 0.5ex}
+\setlength{\textwidth}{6.5in}
+\setlength{\textheight}{8.5in}
+\setlength{\marginparwidth}{0pt}
+\setlength{\oddsidemargin}{0pt}
+\setlength{\evensidemargin}{0pt}
+\setlength{\marginparsep}{0pt}
+\addtolength{\topmargin}{-0.75in}
+
+\title{\huge SANE Standard Version 1.05}
+\author{}
+\date{2006-04-02}
+
+\makeindex
+
+\begin{document}
+
+\newcommand{\filename}[1]{{\tt #1}}
+\newcommand{\code}[1]{{\tt #1}}
+\newcommand{\var}[1]{{\it #1}}
+\newcommand{\defn}[1]{#1\index{#1}}
+
+% Uncomment if adding changebars to text
+%\begin{latexonly}
+% \setcounter{changebargrey}{0} % black change bars
+%\end{latexonly}
+
+\maketitle
+\tableofcontents
+\listoffigures
+\listoftables
+
+
+\chapter{Preface}
+
+The SANE standard is being developed by a group of free-software
+developers. The process is open to the public and comments as well as
+suggestions for improvements are welcome. Information on how to join
+the SANE development process can be found in Chapter
+\ref{chap:contact}.
+
+The SANE standard is intended to streamline software development by
+providing a standard application programming interface to access
+raster scanner hardware. This should reduce the number of different
+driver implementations, thereby reducing the need for reimplementing
+similar code.
+
+
+\section{About This Document}
+
+This document is intended for developers who are creating either an
+application that requires access to raster scanner hardware and for
+developers who are implementing a SANE driver. It does not cover
+specific implementations of SANE components. Its sole purpose is to
+describe and define the SANE application interface that will enable
+any application on any platform to interoperate with any SANE backend
+for that platform.
+
+The remainder of this document is organized as follows.
+Chapter~\ref{chap:intro} provides introductional material.
+Chapter~\ref{chap:environ} presents the environment SANE is designed
+for. Chapter~\ref{chap:api} details the SANE Application Programmer
+Interface. Chapter~\ref{chap:net} specifies the network protocol that
+can be used to implement the SANE API in a network transparent
+fashion. Finally, Chapter~\ref{chap:contact} gives information on how
+to join the SANE development process.
+
+\subsection{Typographic Conventions}
+
+Changes since the last revision of this document are highlighted
+like this:
+
+% \begin{changebar}
+% Paragraphs that changed since the last revision of the documention
+% are marked like this paragraph.
+% \end{changebar}
+
+\chapter{Introduction}\label{chap:intro}
+
+SANE is an application programming interface (API) that provides
+standardized access to any raster image scanner hardware. The
+standardized interface allows to write just one driver for each
+scanner device instead of one driver for each scanner and application.
+The reduction in the number of required drivers provides significant
+savings in development time. More importantly, SANE raises the level
+at which applications can work. As such, it will enable applications
+that were previously unheard of in the UNIX world. While SANE is
+primarily targeted at a UNIX environment, the standard has been
+carefully designed to make it possible to implement the API on
+virtually any hardware or operating system.
+
+SANE is an acronym for ``Scanner Access Now Easy.'' Also, the hope is
+that SANE is sane in the sense that it will allow easy implementation
+of the API while accommodating all features required by today's
+scanner hardware and applications. Specifically, SANE should be broad
+enough to accommodate devices such as scanners, digital still and
+video cameras, as well as virtual devices like image file filters.
+
+\section{Terminology}
+
+An application that uses the SANE interface is called a SANE {\em
+ frontend}. A driver that implements the SANE interface is called a
+SANE {\em backend}. A {\em meta backend\/} provides some means to
+manage one or more other backends.
+
+
+\chapter{The SANE Environment}\label{chap:environ}
+
+SANE is defined as a C-callable library interface. Accessing a raster
+scanner device typically consists of two phases: first, various
+controls of the scanner need to be setup or queried. In the second
+phase, one or more images are acquired.
+
+Since the device controls are widely different from device to device,
+SANE provides a generic interface that makes it easy for a frontend to
+give a user access to all controls without having to understand each
+and every device control. The design principle used here is to
+abstract each device control into a SANE {\em option\/}. An option is
+a self-describing name/value pair. For example, the brightness
+control of a camera might be represented by an option called
+\code{brightness} whose value is an integer in the range from 0 to
+255.
+
+With self-describing options, a backend need not be concerned with
+{\em presentation\/} issues: the backend simply provides a list of
+options that describe all the controls available in the device.
+Similarly, there are benefits to the frontend: it need not be
+concerned with the {\em meaning\/} of each option. It simply provides
+means to present and alter the options defined by the backend.
+
+
+\section{Attaching to a SANE backend}
+
+The process through which a SANE frontend connects to a backend is
+platform dependent. Several possibilities exist:
+\begin{itemize}
+
+\item {\bf Static linking:} A SANE backend may be linked directly into
+ a frontend. While the simplest method of attaching to a backend, it
+ is somewhat limited in functionality since the available devices is
+ limited to the ones for which support has been linked in when the
+ frontend was built. But even so static linking can be quite useful,
+ particularly when combined with a backend that can access scanners
+ via a network. Also, it is possible to support multiple backends
+ simultaneously by implementing a meta backend that manages several
+ backends that have been compiled in such a manner that they export
+ unique function names. For example, a backend called \code{be}
+ would normally export a function called \code{sane\_read()}. If
+ each backend would provide such a function, static linking would
+ fail due to multiple conflicting definitions of the same symbol.
+ This can be resolved by having backend \code{be} include a
+ header file that has lines of the form:
+ \begin{quote}
+\begin{verbatim}
+#define sane_read be_sane_read
+\end{verbatim}
+ \end{quote}
+ With definitions of this kind, backend \code{be} will export
+ function name \code{be\_sane\_read()}. Thus, all backends will
+ export unique names. As long as a meta backend knows about these
+ names, it is possible to combine several backends at link time and
+ select and use them dynamically at runtime.
+
+\item {\bf Dynamic linking:} A simpler yet more powerful way to
+ support multiple backends is to exploit dynamic linking on platforms
+ that support it. In this case, a frontend is linked against a
+ shared library that implements any SANE backend. Since each
+ dynamically linked backend exports the same set of global symbols
+ (all starting with the prefix \code{sane\_}), the dynamic library
+ that gets loaded at runtime does not necessarily have to be the same
+ one as one the frontend got linked against. In other words, it is
+ possible to switch the backend by installing the appropriate backend
+ dynamic library.
+
+ More importantly, dynamic linking makes it easy to implement a meta
+ backend that loads other backends {\em on demand}. This is a
+ powerful mechanism since it allows adding new backends merely by
+ installing a shared library and updating a configuration file.
+
+\item {\bf Network connection:} Arguably the ultimate way to attach to
+ a scanner is by using the network to connect to a backend on a
+ remote machine. This makes it possible to scan images from any host
+ in the universe, as long as there is a network connection to that
+ host and provided the user is permitted to access that scanner.
+
+\end{itemize}
+
+\begin{figure}[htbp]
+ \begin{center}
+ \leavevmode
+ \psfig{file=figs/hierarchy.eps,angle=270,width=\textwidth}
+ \caption{Example SANE Hiearchy}
+ \label{fig:hierarchy}
+ \end{center}
+\end{figure}
+
+The above discussion lists just a few ways for frontends to attach to
+a backend. It is of course possible to combine these solutions to
+provide an entire hierarchy of SANE backends. Such a hierarchy is
+depicted in Figure~\ref{fig:hierarchy}. The figure shows that machine
+A uses a dynamic-linking based meta backend called \code{dll} to
+access the backends called \code{pnm}, \code{mustek}, and \code{net}.
+The first two are real backends, whereas the last one is a meta
+backend that provides network transparent access to remote scanners.
+In the figure, machine B provides non-local access to its scanners
+through the SANE frontend called \code{saned}. The \code{saned} in
+turn has access to the \code{hp} and \code{autolum} backends through
+another instance of the \code{dll} backend. The \code{autolum} meta
+backend is used to automatically adjust the luminance (brightness) of
+the image data acquired by the camera backend called \code{qcam}.
+
+Note that a meta backend really is both a frontend and a backend at
+the same time. It is a frontend from the viewpoint of the backends
+that it manages and a backend from the viewpoint of the frontends that
+access it. The name ``meta backend'' was chosen primarily because the
+SANE standard describes the interface from the viewpoint of a (real)
+frontend.
+
+
+\section{Image Data Format}\label{sec:imageformat}\index{image data format}
+
+Arguably the most important aspect of an image acquisition system is
+how images are represented. The SANE approach is to define a simple
+yet powerful representation that is sufficient for vast majority of
+applications and devices. While the representation is simple, the
+interface has been defined carefully to allow extending it in the
+future without breaking backwards compatibility. Thus, it will be
+possible to accommodate future applications or devices that were not
+anticipated at the time this standard was created.
+
+A SANE image is a rectangular area. The rectangular area is
+subdivided into a number of rows and columns. At the intersection of
+each row and column is a quadratic pixel. A pixel consists of one or
+more sample values. Each sample value represents one channel (e.g.,
+the red channel). Each sample value has a certain bit depth. The bit
+depth is fixed for the entire image and can be as small as one bit.
+Valid bit depths are 1, 8, or 16 bits per sample. If a device's
+natural bit depth is something else, it is up to the driver to scale
+the sample values appropriately (e.g., a 4 bit sample could be scaled
+by a factor of four to represent a sample value of depth 8).
+
+\subsection{Image Transmission}
+
+The SANE API transmits an image as a sequence of frames. Each frame
+covers the same rectangular area as the entire image, but may contain
+only a subset of the channels in the final image. For example, a
+red/green/blue image could either be transmitted as a single frame
+that contains the sample values for all three channels or it could be
+transmitted as a sequence of three frames: the first frame containing
+the red channel, the second the green channel, and the third the blue
+channel.
+
+Conceptually, each frame is transmitted a byte at a time. Each byte
+may contain 8 sample values (for an image bit depth of 1), one full
+sample value (for an image bit depth of 8), or a partial sample value
+(for an image bit depth of 16 or bigger). In the latter case, the
+bytes of each sample value are transmitted in the machine's native
+byte order. For depth 1, the leftmost pixel is stored in the most
+significant bit, and the rightmost pixel in the least significant bit.
+\begin{quote}
+ \begin{center}
+ {\bf Backend Implementation Note}
+ \end{center}
+ A network-based meta backend will have to ensure that the byte order
+ in image data is adjusted appropriately if necessary. For example,
+ when the meta backend attaches to the server proxy, the proxy may
+ inform the backend of the server's byte order. The backend can then
+ apply the adjustment if necessary. In essence, this implements a
+ ``receiver-makes-right'' approach.
+\end{quote}
+
+\begin{figure}[htbp]
+ \begin{center}
+ \leavevmode
+ \psfig{file=figs/xfer.eps,width=0.5\textwidth}
+ \caption{Transfer order of image data bytes}
+ \label{fig:xfer}
+ \end{center}
+\end{figure}
+
+The order in which the sample values in a frame are transmitted is
+illustrated in Figure~\ref{fig:xfer}. As can be seen, the values are
+transmitted row by row and each row is transmitted from left-most to
+right-most column. The left-to-right, top-to-bottom transmission
+order applies when the image is viewed in its normal orientation (as
+it would be displayed on a screen, for example).
+
+If a frame contains multiple channels, then the channels are
+transmitted in an interleaved fashion. Figure~\ref{fig:pixels}
+illustrates this for the case where a frame contains a complete
+red/green/blue image with a bit-depth of 8. For a bit depth of 1,
+each byte contains 8 sample values of a {\em single\/} channel. In
+other words, a bit depth 1 frame is transmitted in a byte interleaved
+fashion.
+
+\begin{figure}[htbp]
+ \begin{center}
+ \leavevmode
+ \psfig{file=figs/image-data.eps,width=0.8\textwidth}
+ \caption{Bit and byte order or image data}
+ \label{fig:pixels}
+ \end{center}
+\end{figure}
+
+When transmitting an image frame by frame, the frontend needs to know
+what part of the image a frame represents (and how many frames it
+should expect). For that purpose, the SANE API tags every frame with
+a type. This version of the SANE standard supports the following
+frame types:
+\begin{quote}
+\begin{description}
+
+\item[\code{\defn{SANE\_FRAME\_GRAY}}:] The frame contains a single
+ channel of data that represents sample values from a spectral band
+ that covers the human visual range. The image consists of this
+ frame only.
+
+\item[\code{\defn{SANE\_FRAME\_RGB}}:] The frame contains three
+ channels of data that represent sample values from the red, green,
+ and blue spectral bands. The sample values are interleaved in the
+ order red, green, and blue. The image consists of this frame only.
+
+\item[\code{\defn{SANE\_FRAME\_RED}}:] The frame contains one channel
+ of data that represents sample values from the red spectral band.
+ The complete image consists of three frames:
+ \code{SANE\_\-FRA\-ME\_RED}, \code{SANE\_FRAME\_GREEN}, and
+ \code{SANE\_FRAME\_BLUE}. The order in which the frames are
+ transmitted chosen by the backend.
+
+\item[\code{\defn{SANE\_FRAME\_GREEN}}:] The frame contains one
+ channel of data that represents sample values from the green
+ spectral band. The complete image consists of three frames:
+ \code{SANE\_\-FRA\-ME\_RED}, \code{SANE\_FRAME\_GREEN}, and
+ \code{SANE\_FRAME\_BLUE}. The order in which the frames are
+ transmitted chosen by the backend.
+
+\item[\code{\defn{SANE\_FRAME\_BLUE}}:] The frame contains one channel
+ of data that represents sample values from the blue spectral band.
+ The complete image consists of three frames:
+ \code{SANE\_\-FRA\-ME\_RED}, \code{SANE\_FRAME\_GREEN}, and
+ \code{SANE\_FRAME\_BLUE}. The order in which the frames are
+ transmitted chosen by the backend.
+
+\end{description}
+\end{quote}
+
+In frames of type \code{SANE\_FRAME\_GRAY}, when the bit depth is 1 there are
+only two sample values possible, 1 represents minimum intensity
+(black) and 0 represents maximum intensity (white). For all other bit
+depth and frame type combinations, a sample value of 0 represents
+minimum intensity and larger values represent increasing intensity.
+
+The combination of bit depth 1 and \code{SANE\_FRAME\_RGB} (or
+\code{SANE\_FRAME\_RED}, \code{SANE\_FRAME\_GREEN}, \code{SANE\_FRAME\_BLUE})
+is rarely used and may not be supported by every frontend.
+
+\chapter{The SANE Application Programmer Interface (API)}\label{chap:api}
+
+This Section defines version 1 of the SANE application
+programmer interface (API). Any SANE frontend must depend on the
+interface defined in this section only. Converseley, any SANE backend
+must implement its functionality in accordance with this
+specification. The interface as documented here is declared as a C
+callable interface in a file called \filename{sane/sane.h}. This file should
+normally be included via a C pre-processor directive of the form:
+\begin{verbatim}
+ #include <sane/sane.h>
+\end{verbatim}
+
+
+\section{Version Control}
+
+The SANE standard is expected to evolve over time. Whenever a change
+to the SANE standard is made that may render an existing frontend or
+backend incompatible with the new standard, the major version number
+must be increased. Thus, any frontend/backend pair is compatible
+provided the major version number of the SANE standard they implement
+is the same. A frontend may implement backwards compatiblity by
+allowing major numbers that are smaller than the expected major number
+(provided the frontend really can cope with the older version). In
+contrast, a backend always provides support for one and only one
+version of the standard. If a specific application does require that
+two different versions of the same backend are accessible at the same
+time, it is possible to do so by installing the two versions under
+different names.
+
+SANE version control also includes a minor version number and a build
+revision. While control of these numbers remains with the implementor
+of a backend, the recommended use is as follows. The minor version is
+incremented with each official release of a backend. The build
+revision is increased with each build of a backend.
+
+The SANE API provides the following five macros to manage version
+numbers.
+\begin{quote}
+ \begin{description}
+ \item[\code{\defn{SANE\_CURRENT\_MAJOR}}:] The value of this macro is the
+ number of the SANE standard that the interface implements.
+
+ \item[\code{\defn{SANE\_VERSION\_CODE}(\var{maj},\var{min},\var{bld})}:]
+ \label{sec:saneversioncode}
+ This macro can be used to build a monotonically increasing version
+ code. A SANE version code consists of the SANE standard major
+ version number (\var{maj}), the minor version number \var{min},
+ and the build revision of a backend (\var{bld}). The major and
+ minor version numbers must be in the range 0\ldots255 and the
+ build revision must be in the range 0\ldots65535.
+
+ Version codes are monotonic in the sense that it is possible to
+ apply relational operators (e.g., equality or less-than test)
+ directly on the version code rather than individually on the three
+ components of the version code.
+
+ Note that the major version number alone determines whether a
+ frontend/backend pair is compatible. The minor version and the
+ build revision are used for informational and bug-fixing purposes
+ only.
+
+ \item[\code{\defn{SANE\_VERSION\_MAJOR}(\var{vc})}:] This macro returns the
+ major version number component of the version code passed in
+ argument \var{vc}.
+ \item[\code{SANE\_VERSION\_MINOR(\var{vc})}:] This macro returns the
+ minor version number component of the version code passed in
+ argument \var{vc}.
+ \item[\code{SANE\_VERSION\_BUILD(\var{vc})}:] This macro returns the
+ build revision component of the version code passed in argument
+ \var{vc}.
+ \end{description}
+\end{quote}
+
+
+\section{Data Types}
+
+\subsection{Base Types}
+
+The SANE standard is based on just two SANE-specific base types: the
+SANE byte and word.
+\begin{quote}
+ \code{typedef \var{some-scalar-type\/} \defn{SANE\_Byte};} \\
+ \code{typedef \var{some-scalar-type\/} \defn{SANE\_Word};}
+\end{quote}
+\verb|SANE_Byte| must correspond to some scalar C type that is capable
+of holding values in the range 0 to 255. \verb|SANE_Word| must be
+capable of holding any of the following:
+\begin{itemize}
+ \item the truth values \verb|SANE_FALSE| and \verb|SANE_TRUE|
+ \item signed integers in the range $-2^{31}\ldots2^{31}-1$
+ \item fixed point values in the range $-32768\ldots32767.9999$ with
+ a resolution of $1/65536$
+ \item 32 bits (for bit sets)
+\end{itemize}
+Note that the SANE standard does not define what C type
+\verb|SANE_Byte| and \verb|SANE_Word| map to. For example, on some
+platforms, the latter may map to \verb|long int| whereas on others it
+may map to \verb|int|. A portable SANE frontend or backend must
+therefore not depend on a particular mapping.
+
+\subsection{Boolean Type}
+
+\code{\defn{SANE\_Bool}} is used for variables that can take one of
+the two truth values \code{\defn{SANE\_FALSE}} and
+\code{\defn{SANE\_TRUE}}. The former value is defined to be 0,
+whereas the latter is 1.\footnote{This is different from ANSI C where
+ any non-zero integer value represents logical TRUE.} The C
+declarations for this type are given below.
+\begin{quote}
+\begin{verbatim}
+#define SANE_FALSE 0
+#define SANE_TRUE 1
+typedef SANE_Word SANE_Bool;
+\end{verbatim}
+\end{quote}
+Note that \verb|SANE_Bool| is simply an alias of \verb|SANE_Word|. It
+is therefore always legal to use the latter type in place of the
+former. However, for clarity, it is recommended to use
+\verb|SANE_Bool| whenever a given variable or formal argument has a
+fixed interpretation as a boolean object.
+
+\subsection{Integer Type}
+
+\code{\defn{SANE\_Int}} is used for variables that can take integer
+values in the range $-2^{32}$ to $2^{31}-1$. Its C declaration is
+given below.
+\begin{quote}
+\begin{verbatim}
+typedef SANE_Word SANE_Int;
+\end{verbatim}
+\end{quote}
+Note that \verb|SANE_Int| is simply an alias of \verb|SANE_Word|. It
+is therefore always legal to use the latter type in place of the
+former. However, for clarity, it is recommended to use
+\verb|SANE_Int| whenever a given variable or formal argument has a
+fixed interpretation as an integer object.
+
+
+\subsection{Fixed-point Type}
+
+\code{\defn{SANE\_Fixed}} is used for variables that can take fixed
+point values in the range $-32768$ to $32767.9999$ with a resolution
+of $1/65535$. The C declarations relating to this type are given
+below.
+\begin{quote}
+\begin{verbatim}
+#define SANE_FIXED_SCALE_SHIFT 16
+typedef SANE_Word SANE_Fixed;
+\end{verbatim}
+\end{quote}
+The macro \code{\defn{SANE\_FIXED\_SCALE\_SHIFT}} gives the location
+of the fixed binary point. This standard defines that value to be 16,
+which yields a resolution of $1/65536$.
+
+Note that \verb|SANE_Fixed| is simply an alias of \verb|SANE_Word|.
+It is therefore always legal to use the latter type in place of the
+former. However, for clarity, it is recommended to use
+\verb|SANE_Fixed| whenever a given variable or formal argument has a
+fixed interpretation as a fixed-point object.
+
+For convenience, SANE also defines two macros that convert fixed-point
+values to and from C double floating point values.
+\begin{quote}
+ \begin{description}
+
+ \item[\code{\defn{SANE\_FIX}(\var{d})}:] Returns the largest SANE
+ fixed-point value that is smaller than the double value \var{d}.
+ No range checking is performed. If the value of \var{d} is out of
+ range, the result is undefined.
+
+ \item[\code{\defn{SANE\_UNFIX}(\var{w})}:] Returns the nearest
+ double machine number that corresponds to fixed-point value
+ \var{w}.
+
+ \end{description}
+\end{quote}
+SANE does {\em not\/} require that the following two expressions hold
+true (even if the values of \var{w} and \var{d} are in range):
+\begin{quote}
+\begin{verbatim}
+SANE_UNFIX(SANE_FIX(d)) == d
+SANE_FIX(SANE_UNFIX(w)) == w
+\end{verbatim}
+\end{quote}
+In other words, conversion between fixed and double values may be
+lossy. It is therefore recommended to avoid repeated conversions
+between the two representations.
+
+
+\subsection{Text}
+
+\subsubsection{Character Type}
+
+Type \code{\defn{SANE\_Char}} represents a single text character or
+symbol. At present, this type maps directly to the underlying C
+\verb|char| type (typically one byte). The encoding for such
+characters is currently fixed as ISO LATIN-1. Future versions of this
+standard may map this type to a wider type and allow multi-byte
+encodings to support internationalization. As a result of this, care
+should be taken to avoid the assumption that
+\verb|sizeof(SANE_Char)==sizeof(char)|.
+\begin{quote}
+\begin{verbatim}
+typedef char SANE_Char;
+\end{verbatim}
+\end{quote}
+
+\subsubsection{String Type}
+
+Type \code{\defn{SANE\_String}} represents a text string as a sequence
+of C \verb|char| values. The end of the sequence is indicated by a
+\verb|'\0'| (\defn{NUL}) character.
+\begin{quote}
+\begin{verbatim}
+typedef SANE_Char *SANE_String;
+typedef const SANE_Char *SANE_String_Const;
+\end{verbatim}
+\end{quote}
+The type \code{\defn{SANE\_String\_Const}} is provided by SANE to
+enable declaring strings whose contents is unchangable. Note that in
+ANSI C, the declaration
+\begin{quote}
+\begin{verbatim}
+const SANE_String str;
+\end{verbatim}
+\end{quote}
+declares a string pointer that is constant (not a string pointer that
+points to a constant value).
+
+
+\subsection{Scanner Handle Type}
+
+Access to a scanner is provided through an opaque type called
+\code{\defn{SANE\_Handle}}. The C declaration of this type is given
+below.
+\begin{quote}
+\begin{verbatim}
+typedef void *SANE_Handle;
+\end{verbatim}
+\end{quote}
+While this type is declared to be a void pointer, an application must
+not attempt to interpret the value of a \verb|SANE_Handle|. In
+particular, SANE does not require that a value of this type is a legal
+pointer value.
+
+
+\subsection{Status Type}
+
+Most SANE operations return a value of type \code{\defn{SANE\_Status}}
+to indicate whether the completion status of the operation. If an
+operation completes successfully, \verb|SANE_STATUS_GOOD| is returned.
+In case of an error, a value is returned that indicates the nature of
+the problem. The complete list of available status codes is listed in
+Table \ref{tab:status}. It is recommended to use function
+\code{sane\_strstatus()} to convert status codes into a legible
+string.
+
+\begin{table}[htbp]
+ \begin{center}
+ \begin{tabular}{|l|r|l|}
+ \hline
+ \multicolumn{1}{|c|}{\bf Symbol} & \multicolumn{1}{c|}{\bf Code} &
+ \multicolumn{1}{c|}{\bf Description} \\
+ \hline\hline
+\code{\defn{SANE\_STATUS\_GOOD}}
+ & 0 & Operation completed succesfully. \\
+\code{\defn{SANE\_STATUS\_UNSUPPORTED}}
+ & 1 & Operation is not supported. \\
+\code{\defn{SANE\_STATUS\_CANCELLED}}
+ & 2 & Operation was cancelled. \\
+\code{\defn{SANE\_STATUS\_DEVICE\_BUSY}}
+ & 3 & Device is busy---retry later. \\
+\code{\defn{SANE\_STATUS\_INVAL}}
+ & 4 & Data or argument is invalid. \\
+\code{\defn{SANE\_STATUS\_EOF}}
+ & 5 & No more data available (end-of-file). \\
+\code{\defn{SANE\_STATUS\_JAMMED}}
+ & 6 & Document feeder jammed. \\
+\code{\defn{SANE\_STATUS\_NO\_DOCS}}
+ & 7 & Document feeder out of documents. \\
+\code{\defn{SANE\_STATUS\_COVER\_OPEN}}
+ & 8 & Scanner cover is open. \\
+\code{\defn{SANE\_STATUS\_IO\_ERROR}}
+ & 9 & Error during device I/O. \\
+\code{\defn{SANE\_STATUS\_NO\_MEM}}
+ & 10 & Out of memory. \\
+\code{\defn{SANE\_STATUS\_ACCESS\_DENIED}}
+ & 11 & Access to resource has been denied. \\
+ \hline
+ \end{tabular}
+ \caption{Status Codes}\label{tab:status}
+ \end{center}
+\end{table}
+
+
+\subsection{Device Descriptor Type}
+
+Each SANE device is represented by a structure of type
+\code{\defn{SANE\_Device}}. The C declaration of this type is given
+below.
+\begin{quote}
+\begin{verbatim}
+typedef struct
+ {
+ SANE_String_Const name;
+ SANE_String_Const vendor;
+ SANE_String_Const model;
+ SANE_String_Const type;
+ }
+SANE_Device;
+\end{verbatim}
+\end{quote}
+\index{device-name}
+The structure provides the unique name of the scanner in member
+\code{name}. It is this unique name that should be passed in a call
+to \code{sane\_open()}. The format of this name is completely up to
+the backend. The only constraints are that the name is unique among
+all devices supported by the backend and that the name is a legal SANE
+text string. To simplify presentation of unique names, their length
+should not be excessive. It is {\em recommended\/} that backends keep
+unique names below 32 characters in length. However, applications
+{\em must\/} be able to cope with arbitrary length unique names.
+
+The remaining members in the device structure provide additional
+information on the device corresponding to the unique name.
+Specifically, members \code{vendor}, \code{model}, and \code{type} are
+single-line strings that give information on the vendor
+(manufacturer), model, and the type of the device. For consistency's
+sake, the following strings should be used when appropriate (the lists
+will be expanded as need arises):
+
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \hspace{\fill}
+ \begin{tabular}[t]{|ll|}
+ \hline
+ \multicolumn{2}{|c|}{\bf \defn{Vendor Strings}} \\
+ \hline\hline
+ \code{AGFA} & \code{Microtek} \\
+ \code{Abaton} & \code{Minolta} \\
+ \code{Acer} & \code{Mitsubishi} \\
+ \code{Apple} & \code{Mustek} \\
+ \code{Artec} & \code{NEC} \\
+ \code{Avision} & \code{Nikon} \\
+ \code{CANON} & \code{Plustek} \\
+ \code{Connectix} & \code{Polaroid} \\
+ \code{Epson} & \code{Relisys} \\
+ \code{Fujitsu} & \code{Ricoh} \\
+ \code{Hewlett-Packard} & \code{Sharp} \\
+ \code{IBM} & \code{Siemens} \\
+ \code{Kodak} & \code{Tamarack} \\
+ \code{Lexmark} & \code{UMAX} \\
+ \code{Logitech} & \code{Noname} \\
+ \hline
+ \end{tabular}
+ \hspace{\fill}
+ \begin{tabular}[t]{|l|}
+ \hline
+ \multicolumn{1}{|c|}{\bf \defn{Type Strings}} \\
+ \hline\hline
+ \code{film scanner} \\
+ \code{flatbed scanner} \\
+ \code{frame grabber} \\
+ \code{handheld scanner} \\
+ \code{multi-function peripheral} \\
+ \code{sheetfed scanner} \\
+ \code{still camera} \\
+ \code{video camera} \\
+ \code{virtual device} \\
+ \hline
+ \end{tabular}
+ \hspace{\fill}
+ \caption{Predefined Device Information Strings}
+ \label{tab:devinfo}
+ \end{center}
+\end{table}
+Note that vendor string \code{Noname} can be used for virtual devices
+that have no physical vendor associated. Also, there are no
+predefined model name strings since those are vendor specific and
+therefore completely under control of the respective backends.
+
+
+\subsection{Option Descriptor Type}\label{sec:odesc}
+
+Option descriptors are at the same time the most intricate and
+powerful type in the SANE standard. Options are used to control
+virtually all aspects of device operation. Much of the power of the
+SANE API stems from the fact that most device controls are completely
+described by their respective option descriptor. Thus, a frontend can
+control a scanner abstractly, without requiring knowledge as to what
+the purpose of any given option is. Conversely, a scanner can
+describe its controls without requiring knowledge of how the frontend
+operates. The C declaration of the
+\code{\defn{SANE\_Option\_Descriptor}} type is given below.
+\begin{quote}
+\begin{verbatim}
+typedef struct
+ {
+ SANE_String_Const name;
+ SANE_String_Const title;
+ SANE_String_Const desc;
+ SANE_Value_Type type;
+ SANE_Unit unit;
+ SANE_Int size;
+ SANE_Int cap;
+ SANE_Constraint_Type constraint_type;
+ union
+ {
+ const SANE_String_Const *string_list;
+ const SANE_Word *word_list;
+ const SANE_Range *range;
+ }
+ constraint;
+ }
+SANE_Option_Descriptor;
+\end{verbatim}
+\end{quote}
+
+\subsubsection{Option Name}
+
+Member \code{name} is a string that uniquely identifies the option.
+The name must be unique for a given device (i.e., the option names
+across different backends or devices need not be unique). The option
+name must consist of lower-case ASCII letters (\code{a}--\code{z}),
+digits (\code{0}--\code{9}), or the dash character (\code{-}) only.
+The first character must be a lower-case ASCII character (i.e., not a
+digit or a dash).
+
+\subsubsection{Option Title}
+
+Member \code{title} is a single-line string that can be used by the
+frontend as a title string. This should typically be a short (one or
+two-word) string that is chosen based on the function of the option.
+
+\subsubsection{Option Description}
+
+Member \code{desc} is a (potentially very) long string that can be
+used as a help text to describe the option. It is the responsibility
+of the frontend to break the string into managable-length lines.
+Newline characters in this string should be interpreted as paragraph
+breaks.
+
+\subsubsection{Option Value Type}
+
+Member \code{type} specifies the type of the option value. The
+possible values for type \code{\defn{SANE\_Value\_Type}} are described
+in Table \ref{tab:valuetype}.
+
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|l|p{0.6\textwidth}|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{c|}{\bf Code} &
+\multicolumn{1}{c|}{\bf Description} \\
+\hline\hline
+
+\code{\defn{SANE\_TYPE\_BOOL}} & 0 & Option value is of type
+ \verb|SANE_Bool|. \\
+
+\code{\defn{SANE\_TYPE\_INT}} & 1 & Option value is of type
+ \verb|SANE_Int|. \\
+
+\code{\defn{SANE\_TYPE\_FIXED}}&2 & Option value is of type
+ \verb|SANE_Fixed|. \\
+
+\code{\defn{SANE\_TYPE\_STRING}}&3 & Option value is of type
+ \verb|SANE_String|. \\
+
+\code{\defn{SANE\_TYPE\_BUTTON}} & 4 & An option of this type has no value.
+Instead, setting an option of this type has an option-specific
+side-effect. For example, a button-typed option could be used by a
+backend to provide a means to select default values or to the tell an
+automatic document feeder to advance to the next sheet of paper. \\
+
+\code{\defn{SANE\_TYPE\_GROUP}} & 5 & An option of this type has no value.
+This type is used to group logically related options. A group option
+is in effect up to the point where another group option is encountered
+(or up to the end of the option list, if there are no other group
+options). For group options, only members \code{title} and
+\code{type} are valid in the option descriptor. \\
+
+ \hline
+ \end{tabular}
+ \caption{Option Value Types (\code{SANE\_Value\_Type})}
+ \label{tab:valuetype}
+ \end{center}
+\end{table}
+
+\subsubsection{Option Value Unit}
+
+Member \code{unit} specifies what the physical unit of the option
+value is. The possible values for type \code{\defn{SANE\_U\-nit}} are
+described in Table \ref{tab:units}. Note that the specified unit is
+what the SANE backend expects. It is entirely up to a frontend as to
+how these units a presented to the user. For example, SANE expresses
+all lengths in millimeters. A frontend is generally expected to
+provide appropriate conversion routines so that a user can express
+quantities in a customary unit (e.g., inches or centimeters).
+
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|l|l|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{|c|}{\bf Code} &
+\multicolumn{1}{|c|}{\bf Description} \\
+
+\hline\hline
+
+\code{\defn{SANE\_UNIT\_NONE}} & 0 & Value is unit-less (e.g., page count).\\
+\code{\defn{SANE\_UNIT\_PIXEL}} & 1 & Value is in number of pixels. \\
+\code{\defn{SANE\_UNIT\_BIT}} & 2 & Value is in number of bits. \\
+\code{\defn{SANE\_UNIT\_MM}} & 3 & Value is in millimeters. \\
+\code{\defn{SANE\_UNIT\_DPI}} & 4 & Value is a resolution in dots/inch. \\
+\code{\defn{SANE\_UNIT\_PERCENT}}& 5 & Value is a percentage. \\
+\code{\defn{SANE\_UNIT\_MICROSECOND}}& 6 & Value is time in $\mu$-seconds. \\
+
+\hline
+ \end{tabular}
+ \caption{Physical Units (\code{SANE\_Unit})}
+ \label{tab:units}
+ \end{center}
+\end{table}
+
+\subsubsection{Option Value Size}\label{sec:valuesize}
+
+Member \code{size} specifies the size of the option value (in bytes).
+This member has a slightly different interpretation depending on the
+type of the option value:
+\begin{quote}
+ \begin{description}
+ \item[\code{SANE\_TYPE\_STRING}:] The size is the maximum size of
+ the string. For the purpose of string size calcuations, the
+ terminating \code{NUL} character is considered to be part of the
+ string. Note that the terminating \code{NUL} character must
+ always be present in string option values.
+ \item[\code{SANE\_TYPE\_INT}, \code{SANE\_TYPE\_FIXED}:] The size
+ must be a positive integer multiple of the size of a
+ \verb|SANE_Word|. The option value is a vector of length
+ \[ \code{size}/\code{sizeof(SANE\_Word)}. \]
+ \item[\code{SANE\_TYPE\_BOOL}:] The size must be set to
+ \code{sizeof(SANE\_Word)}.
+ \item[\code{SANE\_TYPE\_BUTTON}, \code{SANE\_TYPE\_GROUP}:] The
+ option size is ignored.
+ \end{description}
+\end{quote}
+
+\subsubsection{Option Capabilities}
+
+Member \code{cap} describes what capabilities the option posseses.
+This is a bitset that is formed as the inclusive logical OR of the
+capabilities described in Table \ref{tab:capabilities}. The SANE API
+provides the following to macros to test certain features of a given
+capability bitset:
+\begin{quote}
+ \begin{description}
+
+ \item[\code{\defn{SANE\_OPTION\_IS\_ACTIVE}(\var{cap})}:] This macro
+ returns \code{SANE\_TRUE} if and only if the option with the
+ capability set \var{cap} is currently active.
+
+ \item[\code{\defn{SANE\_OPTION\_IS\_SETTABLE}(\var{cap})}:] This
+ macro returns \code{SANE\_TRUE} if and only if the option with the
+ capability set \var{cap} is software settable.
+ \end{description}
+\end{quote}
+
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|r|p{0.59\textwidth}|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{c|}{\bf Code} &
+\multicolumn{1}{c|}{\bf Description} \\
+\hline\hline
+
+\code{\defn{SANE\_CAP\_SOFT\_SELECT}} & 1 & The option
+ value can be set by a call to \code{sane\_con\-trol\_opt\-ion()}.\\
+
+\code{\defn{SANE\_CAP\_HARD\_SELECT}} & 2 & The option value can be set by
+ user-intervention (e.g., by flipping a switch). The user-interface
+ should prompt the user to execute the appropriate action to set such
+ an option. This capability is mutually exclusive with
+ SANE\_CAP\_SOFT\_SELECT (either one of them can be set, but not both
+ simultaneously). \\
+
+\code{\defn{SANE\_CAP\_SOFT\_DETECT}} & 4 & The option
+ value can be detected by software. If
+ \code{SANE\_\-CAP\_\-SO\-FT\_SEL\-ECT} is set, this capability {\em must\/}
+ be set. If \code{SANE\_CAP\_HARD\_SELECT} is set, this capability
+ may or may not be set. If this capability is set but neither
+ \code{SANE\_CAP\_SO\-FT\_SEL\-ECT} nor \code{SANE\_CAP\_HA\-RD\_SEL\-ECT}
+ are, then there is no way to control the option. That is, the
+ option provides read-out of the current value only. \\
+
+\code{\defn{SANE\_CAP\_EMULATED}} & 8 & If set, this capability indicates
+ that an option is not directly supported by the device and is
+ instead emulated in the backend. A sophisticated frontend may
+ elect to use its own (presumably better) emulation in lieu of an emulated
+ option. \\
+
+\code{\defn{SANE\_CAP\_AUTOMATIC}} & 16 & If set, this capability indicates
+ that the backend (or the device) is capable to picking a reasonable
+ option value automatically. For such options, it is possible to
+ select automatic operation by calling \code{sane\_control\_option()}
+ with an action value of \code{SANE\_ACTION\_SET\_AUTO}. \\
+
+\code{\defn{SANE\_CAP\_INACTIVE}} & 32 & If set, this capability indicates
+ that the option is not currently active (e.g., because it's
+ meaningful only if another option is set to some other value). \\
+
+\code{\defn{SANE\_CAP\_ADVANCED}} & 64 &
+ If set, this capability indicates that the option should be
+ considered an ``advanced user option.'' A frontend typically
+ displays such options in a less conspicuous way than regular options
+ (e.g., a command line interface may list such options last or a
+ graphical interface may make them available in a seperate ``advanced
+ settings'' dialog).
+ \\
+
+\hline
+ \end{tabular}
+ \caption{Option Capabilities}
+ \label{tab:capabilities}
+ \end{center}
+\end{table}
+
+\subsubsection{Option Value Constraints}
+
+It is often useful to constrain the values that an option can take.
+For example, constraints can be used by a frontend to determine how to
+represent a given option. Member \code{constraint\_type} indicates
+what constraint is in effect for the option. The constrained values
+that are allowed for the option are described by one of the union
+members of member \code{constraint}. The possible values of type
+\code{\defn{SANE\_Constraint\_Type}} and the interpretation of the
+\code{constraint} union is described in Table~\ref{tab:constraints}.
+
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|r|p{0.5\textwidth}|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{|c|}{\bf Code} &
+\multicolumn{1}{|c|}{\bf Description} \\
+
+\hline\hline
+
+\code{\defn{SANE\_CONSTRAINT\_NONE}} & 0 & The value is unconstrained.
+ The option can take any of the values possible for the option's
+ type. \\
+
+ \code{\defn{SANE\_CONSTRAINT\_RANGE}} & 1 & This constraint is
+ applicable to integer and fixed-point valued options only. It
+ constrains the option value to a possibly quantized range of
+ numbers. Option descriptor member \code{constraint.range} points to
+ a range of the type \code{\defn{SANE\_Range}}. This type is illustrated
+ below:
+ \begin{quote}
+\begin{verbatim}
+typedef struct
+ {
+ SANE_Word min;
+ SANE_Word max;
+ SANE_Word quant;
+ }
+SANE_Range;
+\end{verbatim}
+ \end{quote}
+ All three members in this structure are interpreted according to the
+ option value type (\verb|SANE_TYPE_INT| or \verb|SANE_TYPE_FIXED|).
+ Members \code{min} and \code{max} specify the minimum and maximum
+ values, respectively. If member \code{quant} is non-zero, it
+ specifies the quantization value. If $l$ is the minimum value, $u$
+ the maximum value and $q$ the (non-zero) quantization of a range,
+ then the legal values are $v=k\cdot q+l$ for all non-negative
+ integer values of $k$ such that $v<=u$. \\
+
+\code{\defn{SANE\_CONSTRAINT\_WORD\_LIST}} & 2 & This constraint is applicable
+ to integer and fixed-point valued options only. It constrains the
+ option value to a list of numeric values. Option descriptor member
+ \code{constraint.word\_list} points to a list of words that
+ enumerates the legal values. The first element in that list is an
+ integer (\verb|SANE_Int|) that specifies the length of the list (not
+ counting the length itself). The remaining elements in the list are
+ interpreted according to the type of the option value
+ (\verb|SANE_TYPE_INT| or \verb|SANE_TYPE_FIXED|). \\
+
+\code{\defn{SANE\_CONSTRAINT\_STRING\_LIST}} & 3 & This constraint is
+ applicable to string-valued options only. It constrains the option
+ value to a list of strings. The option descriptor member
+ \code{con\-strai\-nt.str\-ing\_list} points to a \code{NULL} terminated
+ list of strings that enumerate the legal values for the option
+ value.
+\\\hline
+ \end{tabular}
+ \caption{Option Value Constraints}
+ \label{tab:constraints}
+ \end{center}
+\end{table}
+
+
+\section{Operations}
+
+\subsection{\code{sane\_init}}
+
+This function must be called before any other SANE function can be called.
+The behavior of a SANE backend is undefined if this function is not called
+first or if the status code returned by \code{sane\_init} is different from
+\code{\defn{SANE\_STATUS\_GOOD}}. The version code of the backend is returned
+in the value pointed to by \code{version\_code}. If that pointer is
+\code{NULL}, no version code is returned. Argument \code{authorize} is either
+a pointer to a function that is invoked when the backend requires
+authentication for a specific resource or \code{NULL} if the frontend does not
+support authentication.
+\begin{quote}\index{sane\_init}
+\begin{verbatim}
+SANE_Status sane_init (SANE_Int * version_code,
+ SANE_Authorization_Callback authorize);
+\end{verbatim}
+\end{quote}
+
+The authorization function may be called by a backend in response to
+any of the following calls:
+\begin{quote}
+ \code{sane\_open}, \code{sane\_control\_option}, \code{sane\_start}
+\end{quote}
+If a backend was initialized without authorization function, then
+authorization requests that cannot be handled by the backend itself
+will fail automatically and the user may be prevented from accessing
+protected resources. Backends are encouraged to implement means of
+authentication that do not require user assistance. E.g., on a
+multi-user system that authenticates users through a login process a
+backend could automatically lookup the apporpriate password based on
+resource- and user-name.
+
+The authentication function type has the following declaration:
+\begin{quote}\index{SANE\_Authorization\_Callback}
+ \index{domain}\index{username}\index{password}
+\begin{verbatim}
+#define SANE_MAX_USERNAME_LEN 128
+#define SANE_MAX_PASSWORD_LEN 128
+
+typedef void (*SANE_Authorization_Callback)
+ (SANE_String_Const resource,
+ SANE_Char username[SANE_MAX_USERNAME_LEN],
+ SANE_Char password[SANE_MAX_PASSWORD_LEN]);
+\end{verbatim}
+\end{quote}
+Three arguments are passed to the authorization function:
+\code{resource} is a string specifying the name of the resource that
+requires authorization. A frontend should use this string to build a
+user-prompt requesting a username and a password. The \code{username}
+and \code{password} arguments are (pointers to) an array of
+\code{SANE\_MAX\_USERNAME\_LEN} and \code{SANE\_MAX\_PASSWORD\_LEN}
+characters, respectively. The authorization call should place the
+entered username and password in these arrays. The returned strings
+{\em must\/} be ASCII-NUL terminated.
+
+\subsection{\code{sane\_exit}}
+
+This function must be called to terminate use of a backend. The
+function will first close all device handles that still might be open
+(it is recommended to close device handles explicitly through a call
+to \code{sane\_clo\-se()}, but backends are required to release all
+resources upon a call to this function). After this function returns,
+no function other than \code{sane\_init()} may be called (regardless
+of the status value returned by \code{sane\_exit()}. Neglecting to
+call this function may result in some resources not being released
+properly.
+\begin{quote}\index{sane\_exit}
+\begin{verbatim}
+void sane_exit (void);
+\end{verbatim}
+\end{quote}
+
+
+\subsection{\code{sane\_get\_devices}}
+
+This function can be used to query the list of devices that are
+available. If the function executes successfully, it stores a pointer
+to a \code{NULL} terminated array of pointers to \verb|SANE_Device|
+structures in \code{*device\_list}. The returned list is guaranteed
+to remain unchanged and valid until (a) another call to this function
+is performed or (b) a call to \code{sane\_exit()} is performed. This
+function can be called repeatedly to detect when new devices become
+available. If argument \code{local\_only} is true, only local devices
+are returned (devices directly attached to the machine that SANE is
+running on). If it is false, the device list includes all remote
+devices that are accessible to the SANE library.
+\begin{quote}\index{sane\_get\_devices}
+\begin{verbatim}
+SANE_Status sane_get_devices (const SANE_Device *** device_list,
+ SANE_Bool local_only);
+\end{verbatim}
+\end{quote}
+
+This function may fail with \code{SANE\_STATUS\_NO\_MEM} if an
+insufficient amount of memory is available.
+
+\begin{quote}
+ \begin{center}
+ {\bf Backend Implementation Note}
+ \end{center}
+ SANE does not require that this function is called before a
+ \code{sane\_open()} call is performed. A device name may be
+ specified explicitly by a user which would make it unnecessary and
+ undesirable to call this function first.
+\end{quote}
+
+
+\subsection{\code{sane\_open}}
+
+This function is used to establish a connection to a particular
+device. The name of the device to be opened is passed in argument
+\code{name}. If the call completes successfully, a handle for the
+device is returned in \code{*h}. As a special case, specifying a
+zero-length string as the device requests opening the first available
+device (if there is such a device).
+\begin{quote}\index{sane\_open}
+\begin{verbatim}
+SANE_Status sane_open (SANE_String_Const name, SANE_Handle * h);
+\end{verbatim}
+\end{quote}
+
+This function may fail with one of the following status codes.
+\begin{quote}
+\begin{description}
+\item[\code{SANE\_STATUS\_DEVICE\_BUSY}:] The device is currently
+ busy (in use by somebody else).
+\item[\code{SANE\_STATUS\_INVAL}:] The device name is not valid.
+\item[\code{SANE\_STATUS\_IO\_ERROR}:] An error occured while
+ communicating with the device.
+\item[\code{SANE\_STATUS\_NO\_MEM}:] An insufficent amount of memory
+ is available.
+\item[\code{SANE\_STATUS\_ACCESS\_DENIED}:] Access to the device has
+ been denied due to insufficient or invalid authentication.
+\end{description}
+\end{quote}
+
+
+\subsection{\code{sane\_close}}
+
+This function terminates the association between the device handle
+passed in argument \code{h} and the device it represents. If the
+device is presently active, a call to \code{sane\_cancel()} is
+performed first. After this function returns, handle \code{h} must
+not be used anymore.
+
+\begin{quote}\index{sane\_close}
+\begin{verbatim}
+void sane_close (SANE_Handle h);
+\end{verbatim}
+\end{quote}
+
+\subsection{\code{sane\_get\_option\_descriptor}}
+
+This function is used to access option descriptors. The function
+returns the option descriptor for option number \code{n} of the device
+represented by handle \code{h}. Option number 0 is guaranteed to be a
+valid option. Its value is an integer that specifies the number of
+options that are available for device handle \code{h} (the count
+includes option 0). If $n$ is not a valid option index, the function
+returns \code{NULL}. The returned option descriptor is guaranteed to
+remain valid (and at the returned address) until the device is closed.
+
+\begin{quote}\index{sane\_get\_option\_descriptor}
+\begin{verbatim}
+const SANE_Option_Descriptor *
+ sane_get_option_descriptor (SANE_Handle h, SANE_Int n);
+\end{verbatim}
+\end{quote}
+
+\subsection{\code{sane\_control\_option}}\label{sec:control}
+
+This function is used to set or inquire the current value of option
+number \code{n} of the device represented by handle \code{h}. The
+manner in which the option is controlled is specified by parameter
+\code{a}. The possible values of this parameter are described in more
+detail below. The value of the option is passed through argument
+\code{v}. It is a pointer to the memory that holds the option value.
+The memory area pointed to by \code{v} must be big enough to hold the
+entire option value (determined by member \code{size} in the
+corresponding option descriptor). The only exception to this rule is
+that when setting the value of a string option, the string pointed to
+by argument \code{v} may be shorter since the backend will stop
+reading the option value upon encountering the first \code{NUL}
+terminator in the string. If argument \code{i} is not \code{NULL},
+the value of \code{*i} will be set to provide details on how well the
+request has been met. The meaning of this argument is described in
+more detail below.
+\begin{quote}\index{sane\_control\_option}
+\begin{verbatim}
+SANE_Status sane_control_option (SANE_Handle h, SANE_Int n,
+ SANE_Action a, void *v,
+ SANE_Int * i);
+\end{verbatim}
+\end{quote}
+
+The way the option is affected by a call to this function is
+controlled by parameter \code{a} which is a value of type
+\code{\defn{SANE\_Action}}. The possible values and their meaning is
+described in Table~\ref{tab:actions}.
+
+\begin{table}[h]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|r|p{0.5\textwidth}|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{|c|}{\bf Code} &
+\multicolumn{1}{|c|}{\bf Description} \\
+
+\hline\hline
+
+\code{\defn{SANE\_ACTION\_GET\_VALUE}} & 0 & Get current option value. \\
+
+\code{\defn{SANE\_ACTION\_SET\_VALUE}} & 1 & Set option value. The
+ option value passed through argument \code{v} may be modified by the
+ backend if the value cannot be set exactly. \\
+
+\code{\defn{SANE\_ACTION\_SET\_AUTO}} & 2 & Turn on automatic mode. Backend
+ or device will automatically select an appropriate value. This mode
+ remains effective until overridden by an explicit set value request.
+ The value of parameter \code{v} is completely ignored in this case and
+ may be \code{NULL}. \\
+
+\hline
+ \end{tabular}
+ \caption{Action Values (\code{SANE\_Action})}
+ \label{tab:actions}
+ \end{center}
+\end{table}
+
+After setting a value via an action value of
+\verb|SANE_ACTION_SET_VALUE|, additional information on how well the
+request has been met is returned in \code{*i} (if \code{i} is
+non-\code{NULL}). The returned value is a bitset that may contain any
+combination of the values described in Table~\ref{tab:info}.
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|r|p{0.5\textwidth}|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{|c|}{\bf Code} &
+\multicolumn{1}{|c|}{\bf Description} \\
+
+\hline\hline
+
+\code{\defn{SANE\_INFO\_INEXACT}} & 1 & This value is returned when
+ setting an option value resulted in a value being selected that does
+ not exactly match the requested value. For example, if a scanner
+ can adjust the resolution in increments of 30dpi only, setting the
+ resolution to 307dpi may result in an actual setting of 300dpi.
+ When this happens, the bitset returned in \code{*i} has this member
+ set. In addition, the option value is modified to reflect the
+ actual (rounded) value that was used by the backend. Note that
+ inexact values are admissible for strings as well. A backend may
+ choose to ``round'' a string to the closest matching legal string
+ for a constrained string value. \\
+
+ \code{\defn{SANE\_INFO\_RELOAD\_OPTIONS}} & 2 & The setting of an
+ option may affect the value or availability of one or more {\em
+ other\/} options. When this happens, the SANE backend sets this
+ member in \code{*i} to indicate that the application should reload
+ all options. This member may be set if and only if at least one
+ option changed. \\
+
+\code{\defn{SANE\_INFO\_RELOAD\_PARAMS}} & 4 & The setting of an option may
+ affect the parameter values (see \code{sane\_get\_parameters()}).
+ If setting an option affects the parameter values, this member will
+ be set in \code{*i}. Note that this member may be set even if the
+ parameters did not actually change. However, it is guaranteed that
+ the parameters never change without this member being set. \\
+
+\hline
+ \end{tabular}
+ \caption{Additional Information Returned When Setting an Option}
+ \label{tab:info}
+ \end{center}
+\end{table}
+
+This function may fail with one of the following status codes.
+\begin{quote}
+\begin{description}
+\item[\code{SANE\_STATUS\_UNSUPPORTED}:] The operation is not
+ supported for the specified handle and option number.
+\item[\code{SANE\_STATUS\_INVAL}:] The option value is not valid.
+\item[\code{SANE\_STATUS\_IO\_ERROR}:] An error occured while
+ communicating with the device.
+\item[\code{SANE\_STATUS\_NO\_MEM}:] An insufficent amount of memory
+ is available.
+\item[\code{SANE\_STATUS\_ACCESS\_DENIED}:] Access to the option has
+ been denied due to insufficient or invalid authentication.
+\end{description}
+\end{quote}
+
+
+
+\subsection{\code{sane\_get\_parameters}}
+
+This function is used to obtain the current scan parameters. The
+returned parameters are guaranteed to be accurate between the time a
+scan has been started (\code{sane\_start()} has been called) and the
+completion of that request. Outside of that window, the returned
+values are best-effort estimates of what the parameters will be when
+\code{sane\_start()} gets invoked. Calling this function before a
+scan has actually started allows, for example, to get an estimate of
+how big the scanned image will be. The parameters passed to this
+function are the handle \code{h} of the device for which the
+parameters should be obtained and a pointer \code{p} to a parameter
+structure. The parameter structure is described in more detail below.
+
+\begin{quote}\index{sane\_get\_parameters}
+\begin{verbatim}
+SANE_Status sane_get_parameters (SANE_Handle h,
+ SANE_Parameters * p);
+\end{verbatim}
+\end{quote}
+
+The scan parameters are returned in a structure of type
+\code{\defn{SANE\_Parameters}}. The C declaration of this structure
+is given below.
+\begin{quote}
+\begin{verbatim}
+typedef struct
+ {
+ SANE_Frame format;
+ SANE_Bool last_frame;
+ SANE_Int bytes_per_line;
+ SANE_Int pixels_per_line;
+ SANE_Int lines;
+ SANE_Int depth;
+ }
+SANE_Parameters;
+\end{verbatim}
+\end{quote}
+
+Member \code{format} specifies the format of the next frame to be
+returned. The possible values for type \code{\defn{SANE\_Frame}} are
+described in Table~\ref{tab:frameformat}. The meaning of these
+values is described in more detail in Section~\ref{sec:imageformat}.
+\begin{table}[htbp]
+ \begin{center}
+ \leavevmode
+ \begin{tabular}{|l|r|l|}
+\hline
+\multicolumn{1}{|c|}{\bf Symbol} &
+\multicolumn{1}{|c|}{\bf Code} &
+\multicolumn{1}{|c|}{\bf Description} \\
+
+\hline\hline
+
+\code{\defn{SANE\_FRAME\_GRAY}} & 0 & Band covering human visual range. \\
+\code{\defn{SANE\_FRAME\_RGB}} & 1 & Pixel-interleaved red/green/blue bands. \\
+\code{\defn{SANE\_FRAME\_RED}} & 2 & Red band of a red/green/blue image. \\
+\code{\defn{SANE\_FRAME\_GREEN}} & 3 & Green band of a red/green/blue image. \\
+\code{\defn{SANE\_FRAME\_BLUE}} & 4 & Blue band of a red/green/blue image. \\
+
+\hline
+ \end{tabular}
+ \caption{Frame Format (\code{SANE\_Frame})}
+ \label{tab:frameformat}
+ \end{center}
+\end{table}
+
+Member \code{last\_frame} is set to \code{SANE\_TRUE} if and only if
+the frame that is currently being acquired (or the frame that will be
+acquired next if there is no current frame) is the last frame of a
+multi frame image (e.g., the current frame is the blue component of a
+red, green, blue image).
+
+Member \code{lines} specifies how many scan lines the frame is
+comprised of. If this value is -1, the number of lines is not known a
+priori and the frontend should call \code{sane\_read()} until it
+returns a status of \code{SANE\_STATUS\_EOF}.
+
+Member \code{bytes\_per\_line} specifies the number of bytes that
+comprise one scan line.
+
+Member \code{depth} specifies the number of bits per sample.
+
+Member \code{pixels\_per\_line} specifies the number of pixels that
+comprise one scan line.
+
+Assume $B$ is the number of channels in the frame, then the bit depth
+$d$ (as given by member \code{depth}) and the number of pixels per
+line $n$ (as given by this member \code{pixels\_per\_line}) are
+related to $c$, the number of bytes per line (as given by member
+\code{bytes\_per\_line}) as follows:
+\[
+ c >= \left\{
+ \begin{array}{ll}
+ B\cdot \lfloor (n + 7) / 8\rfloor & \mbox{if $d=1$}\\
+ B\cdot n \cdot d / 8 & \mbox{if $d>1$}
+ \end{array}
+ \right.
+\]
+Note that the number of bytes per line can be larger than the minimum
+value imposed by the right side of this equation. A frontend must be
+able to properly cope with such ``padded'' image formats.
+
+
+\subsection{\code{sane\_start}}
+
+This function initiates aquisition of an image from the device
+represented by handle \code{h}.
+\begin{quote}\index{sane\_start}
+\begin{verbatim}
+SANE_Status sane_start (SANE_Handle h);
+\end{verbatim}
+\end{quote}
+This function may fail with one of the following status codes.
+\begin{quote}
+\begin{description}
+\item[\code{SANE\_STATUS\_CANCELLED}:] The operation was cancelled through
+ a call to \code{sane\_cancel}.
+\item[\code{SANE\_STATUS\_DEVICE\_BUSY}:] The device is busy. The
+ operation should be retried later.
+\item[\code{SANE\_STATUS\_JAMMED}:] The document feeder is jammed.
+\item[\code{SANE\_STATUS\_NO\_DOCS}:] The document feeder is out of
+ documents.
+\item[\code{SANE\_STATUS\_COVER\_OPEN}:] The scanner cover is open.
+\item[\code{SANE\_STATUS\_IO\_ERROR}:] An error occurred while communicating
+ with the device.
+\item[\code{SANE\_STATUS\_NO\_MEM}:] An insufficent amount of memory
+ is available.
+\item[\code{SANE\_STATUS\_INVAL}:] The scan cannot be started with the current
+ set of options. The frontend should reload the option descriptors, as if
+ \code{\defn{SANE\_INFO\_RELOAD\_OPTIONS}} had been returned from a call to
+ \code{sane\_control\_option()}, since the device's capabilities may have
+ changed.
+\end{description}
+\end{quote}
+
+
+\subsection{\code{sane\_read}}
+
+This function is used to read image data from the device represented
+by handle \code{h}. Argument \code{buf} is a pointer to a memory area
+that is at least \code{maxlen} bytes long. The number of bytes
+returned is stored in \code{*len}. A backend must set this to zero
+when a status other than \code{SANE\_STA\-TUS\_GOOD} is returned.
+When the call succeeds, the number of bytes returned can be anywhere in
+the range from 0 to \code{maxlen} bytes.
+\begin{quote}\index{sane\_read}
+\begin{verbatim}
+SANE_Status sane_read (SANE_Handle h, SANE_Byte * buf,
+ SANE_Int maxlen, SANE_Int * len);
+\end{verbatim}
+\end{quote}
+If this function is called when no data is available, one of two
+things may happen, depending on the I/O mode that is in effect for
+handle \code{h}.
+\begin{enumerate}
+\item If the device is in blocking I/O mode (the default mode), the
+ call blocks until at least one data byte is available (or until some
+ error occurs).
+
+\item If the device is in non-blocking I/O mode, the call returns
+ immediately with status \code{SANE\_STA\-TUS\_GOOD} and with
+ \code{*len} set to zero.
+\end{enumerate}
+The I/O mode of handle \code{h} can be set via a call to
+\code{sane\_set\_io\_mode()}.
+
+This function may fail with one of the following status codes.
+\begin{quote}
+\begin{description}
+\item[\code{SANE\_STATUS\_CANCELLED}:] The operation was cancelled through
+ a call to \code{sane\_cancel}.
+\item[\code{SANE\_STATUS\_EOF}:] No more data is available for the
+ current frame.
+\item[\code{SANE\_STATUS\_JAMMED}:] The document feeder is jammed.
+\item[\code{SANE\_STATUS\_NO\_DOCS}:] The document feeder is out of
+ documents.
+\item[\code{SANE\_STATUS\_COVER\_OPEN}:] The scanner cover is open.
+\item[\code{SANE\_STATUS\_IO\_ERROR}:] An error occurred while communicating
+ with the device.
+\item[\code{SANE\_STATUS\_NO\_MEM}:] An insufficent amount of memory
+ is available.
+\item[\code{SANE\_STATUS\_ACCESS\_DENIED}:] Access to the device has
+ been denied due to insufficient or invalid authentication.
+\end{description}
+\end{quote}
+
+
+\subsection{\code{sane\_cancel}}
+
+This function is used to immediately or as quickly as possible cancel
+the currently pending operation of the device represented by handle
+\code{h}.
+\begin{quote}\index{sane\_cancel}
+\begin{verbatim}
+void sane_cancel (SANE_Handle h);
+\end{verbatim}
+\end{quote}
+This function can be called at any time (as long as handle \code{h} is
+a valid handle) but usually affects long-running operations only (such
+as image is acquisition). It is safe to call this function
+asynchronously (e.g., from within a signal handler). It is important
+to note that completion of this operaton does {\em not\/} imply that
+the currently pending operation has been cancelled. It only
+guarantees that cancellation has been {\em initiated}. Cancellation
+completes only when the cancelled call returns (typically with a
+status value of \code{SANE\_STATUS\_CANCELLED}). Since the SANE API
+does not require any other operations to be re-entrant, this implies
+that a frontend must {\em not\/} call any other operation until the
+cancelled operation has returned.
+
+
+\subsection{\code{sane\_set\_io\_mode}}
+
+This function is used to set the I/O mode of handle \code{h}. The I/O mode
+can be either blocking or non-blocking. If argument \code{m} is
+\code{SANE\_TRUE}, the mode is set to non-blocking mode, otherwise it's set to
+blocking mode. This function can be called only after a call to
+\code{sane\_start()} has been performed.
+\begin{quote}\index{sane\_set\_io\_mode}
+\begin{verbatim}
+SANE_Status sane_set_io_mode (SANE_Handle h, SANE_Bool m);
+\end{verbatim}
+\end{quote}
+By default, newly opened handles operate in blocking mode. A backend
+may elect not to support non-blocking I/O mode. In such a case the
+status value \code{SANE\_STATUS\_UNSUPPORTED} is returned. Blocking
+I/O must be supported by all backends, so calling this function with
+argument \code{m} set to \code{SANE\_FALSE} is guaranteed to complete
+successfully.
+
+This function may fail with one of the following status codes:
+\begin{quote}
+\begin{description}
+\item[\code{SANE\_STATUS\_INVAL}:] No image acquisition is pending.
+\item[\code{SANE\_STATUS\_UNSUPPORTED}:] The backend does not support
+ the requested I/O mode.
+\end{description}
+\end{quote}
+
+
+\subsection{\code{sane\_get\_select\_fd}}
+
+This function is used to obtain a (platform-specific) file-descriptor
+for handle \code{h} that is readable if and only if image data is
+available (i.e., when a call to \code{sane\_read()} will return at
+least one byte of data). If the call completes successfully, the
+select file-descriptor is returned in \code{*fd}.
+\begin{quote}\index{sane\_get\_select\_fd}
+\begin{verbatim}
+SANE_Status sane_get_select_fd (SANE_Handle h, SANE_Int *fd);
+\end{verbatim}
+\end{quote}
+This function can be called only after a call to \code{sane\_start()}
+has been performed and the returned file-descriptor is guaranteed to
+remain valid for the duration of the current image acquisition (i.e.,
+until \code{sane\_cancel()} or \code{sane\_start()} get called again
+or until \code{sane\_read()} returns with status
+\code{SANE\_STA\-TUS\_EOF}). Indeed, a backend must guarantee to
+close the returned select file descriptor at the point when the next
+\code{sane\_read()} call would return \code{SANE\_STA\-TUS\_EOF}.
+This is necessary to ensure the application can detect when this
+condition occurs without actually having to call \code{sane\_read()}.
+
+A backend may elect not to support this operation. In such a case,
+the function returns with status code
+\code{SANE\_STATUS\_UNSUPPORTED}.
+
+Note that the only operation supported by the returned file-descriptor
+is a host operating-system dependent test whether the file-descriptor
+is readable (e.g., this test can be implemented using \code{select()}
+or \code{poll()} under UNIX). If any other operation is performed on
+the file descriptor, the behavior of the backend becomes
+unpredictable. Once the file-descriptor signals ``readable'' status,
+it will remain in that state until a call to \code{sane\_read()} is
+performed. Since many input devices are very slow, support for this
+operation is strongly encouraged as it permits an application to do
+other work while image acquisition is in progress.
+
+This function may fail with one of the following status codes:
+\begin{quote}
+\begin{description}
+\item[\code{SANE\_STATUS\_INVAL}:] No image acquisition is pending.
+\item[\code{SANE\_STATUS\_UNSUPPORTED}:] The backend does not support
+ this operation.
+\end{description}
+\end{quote}
+
+
+\subsection{\code{sane\_strstatus}}
+
+This function can be used to translate a SANE status code into a
+printable string. The returned string is a single line of text that
+forms a complete sentence, but without the trailing period
+(full-stop). The function is guaranteed to never return \code{NULL}.
+The returned pointer is valid at least until the next call to this
+function is performed.
+\begin{quote}\index{sane\_strstatus}
+\begin{verbatim}
+const SANE_String_Const sane_strstatus (SANE_Status status);
+\end{verbatim}
+\end{quote}
+
+\section{Code Flow}\index{code flow}
+
+The code flow for the SANE API is illustrated in
+Figure~\ref{fig:flow}. Functions \code{sane\_init()} and
+\code{sane\_exit()} initialize and exit the backend, respectively.
+All other calls must be performed after initialization and before
+exiting the backend.
+
+\begin{figure}[htb]
+ \begin{center}
+ \leavevmode
+ \psfig{file=figs/flow.eps,height=0.5\textheight}
+ \caption{Code flow}
+ \label{fig:flow}
+ \end{center}
+\end{figure}
+
+Function \code{sane\_get\_devices()} can be called any time after
+\code{sane\_init()} has been called. It returns the list of the
+devices that are known at the time of the call. This list may change
+over time since some devices may be turned on or off or a remote host
+may boot or shutdown between different calls. It should be noted that
+this operation may be relatively slow since it requires contacting all
+configured devices (some of which may be on remote hosts). A frontend
+may therefore want to provide the ability for a user to directly
+select a desired device without requiring a call to this function.
+
+Once a device has been chosen, it is opened using a call to
+\code{sane\_open()}. Multiple devices can be open at any given time.
+A SANE backend must not impose artificial constraints on how many
+devices can be open at any given time.
+
+An opened device can be setup through the corresponding device handle
+using functions \code{sane\_get\_opt\-ion\_desc\-riptor()} and
+\code{sane\_control\_option()}. While setting up a device, obtaining
+option descriptors and setting and reading of option values can be
+mixed freely. It is typical for a frontend to read out all available
+options at the beginning and then build a dialog (either graphical or
+a command-line oriented option list) that allows to control the
+available options. It should be noted that the number of options is
+fixed for a given handle. However, as options are set, other options
+may become active or inactive. Thus, after setting an option, it
+maybe necessary to re-read some or all option descriptors. While
+setting up the device, it is also admissible to call
+\code{sane\_get\_parameters()} to get an estimate of what the image
+parameters will look like once image acquisition begins.
+
+The device handle can be put in blocking or non-blocking mode by a
+call to \code{sane\_set\_io\_mode()}. Devices are required to support
+blocking mode (which is the default mode), but support for
+non-blocking I/O is strongly encouraged for operating systems such as
+UNIX.
+
+After the device is setup properly, image acquisition can be started
+by a call to \code{sane\_start()}. The backend calculates the exact
+image parameters at this point. So future calls to
+\code{sane\_get\_parameters()} will return the exact values, rather
+than estimates. Whether the physical image acquisition starts at this
+point or during the first call to \code{sane\_read()} is unspecified
+by the SANE API. If non-blocking I/O and/or a select-style interface
+is desired, the frontend may attempt to call
+\code{sane\_set\_io\_mode()} and/or \code{sane\_get\_select\_fd()} at
+this point. Either of these functions may fail if the backend does
+not support the requested operation.
+
+Image data is collected by repeatedly calling \code{sane\_read()}.
+Eventually, this function will return an end-of-file status
+(\code{SANE\_STATUS\_EOF}). This indicates the end of the current
+frame. If the frontend expects additional frames (e.g., the
+individual channels in of a red/green/blue image or multiple images),
+it can call \code{sane\_start()} again. Once all desired frames have
+been acquired, function \code{sane\_cancel()} must be called. This
+operation can also be called at any other time to cancel a pending
+operation. Note that \code{sane\_cancel()} must be called even if the
+last read operation returned \code{SANE\_STATUS\_EOF}.
+
+When done using the device, the handle should be closed by a call to
+\code{sane\_close()}. Finally, before exiting the application,
+function \code{sane\_exit()} must be called. It is important not to
+forget to call this function since otherwise some resources (e.g.,
+temporary files or locks) may remain unclaimed.
+
+
+\section{Well-Known Options}\index{well-known options}
+
+While most backend options are completely self-describing, there are a
+cases where a user interface might want to special-case the handling
+of certain options. For example, the scan area is typically defined
+by four options that specify the top-left and bottom-right corners of
+the area. With a graphical user interface, it would be tedious to
+force the user to type in these four numbers. Instead, most such
+interfaces will want to present to the user a preview (low-resolution
+scan) of the scanner surface and let the user pick the scan area by
+dragging a rectangle into the desired position. For this reason, the
+SANE API specifies a small number of option names that have
+well-defined meanings.
+
+\subsection{Option Number Count}\index{option count}
+
+Option number 0 has an empty string as its name. The value of this
+option is of type \code{SANE\_TYPE\_INT} and it specifies the total
+number of options available for a given device (the count includes
+option number 0). This means that there are two ways of counting the
+number of options available: a frontend can either cycle through all
+option numbers starting at one until
+\code{sane\_get\_option\_descriptor()} returns \code{NULL}, or a
+frontend can directly read out the value of option number 0.
+
+\subsection{Scan Resolution Option}\index{scan resolution}\index{resolution option}
+
+Option \code{resolution} is used to select the resolution at which an
+image should be acquired. The type of this option is either
+\code{SANE\_TYPE\_INT} or \code{SANE\_TYPE\_FIXED}. The unit is
+\code{SANE\_UNIT\_DPI} (dots/inch).
+
+This option is not mandatory, but if a backend does support it, it
+must implement it in a manner consistent with the above definition.
+
+\subsection{Preview Mode Option}\index{preview mode}
+
+The boolean option \code{preview} is used by a frontend to inform the
+backend when image acquisition should be optimized for speed, rather
+than quality (``preview mode''). When set to \code{SANE\_TRUE},
+preview mode is in effect, when set to \code{SANE\_FALSE} image
+acquisition should proceed in normal quality mode. The setting of
+this option \emph{must not\/} affect any other option. That is, as
+far as the other options are concerned, the preview mode is completely
+side effect free. A backend can assume that the frontend will take
+care of appropriately setting the scan resolution for preview mode
+(through option \code{resolution}). A backend is free to override the
+\code{resolution} value with its own choice for preview mode, but it
+is advised to leave this choice to the frontend wherever possible.
+
+This option is not mandatory, but if a backend does support it, it
+must implement it in a manner consistent with the above definition.
+
+\subsection{Scan Area Options}\index{scan area options}
+
+The four most important well-known options are the ones that define
+the scan area. The scan area is defined by two points (x/y coordinate
+pairs) that specify the top-left and the bottom-right corners. This
+is illustrated in Figure~\ref{fig:area}. Note that the origin of the
+coordinate system is at the top-left corner of the scan surface as
+seen by the sensor (which typically is a mirror image of the scan
+surface seen by the user). For this reason, the top-left corner is
+the corner for which the abscissa and ordinate values are
+simultaneously the {\em smallest} and the bottom-right corner is the
+corner for which the abscissa and ordinate values are simulatenously
+the {\em largest}. If this coordinate system is not natural for a
+given device, it is the job of the backend to perform the necessary
+conversions.
+\begin{figure}[tbp]
+ \begin{center}
+ \leavevmode
+ \psfig{file=figs/area.eps,height=0.3\textheight}
+ \caption{Scan area options}
+ \label{fig:area}
+ \end{center}
+\end{figure}
+
+The names of the four options that define the scan area are given in
+the table below:
+\begin{center}
+\begin{tabular}{ll}
+{\bf Name} & {\bf Description} \\
+\code{\defn{tl-x}} & Top-left $x$ coordinate value \\
+\code{\defn{tl-y}} & Top-left $y$ coordinate value \\
+\code{\defn{br-x}} & Bottom-right $x$ coordinate value \\
+\code{\defn{br-y}} & Bottom-right $y$ coordinate value \\
+\end{tabular}
+\end{center}
+There are several rules that should be followed by front and backends
+regarding these options:
+\begin{itemize}
+
+\item Backends must attach a unit of either pixels
+ (\code{SANE\_UNIT\_PIXEL}) or millimeters (\code{SANE\_UNIT\_MM}) to
+ these options. The unit of all four options must be identical.
+
+\item Whenever meaningful, a backend should attach a range or a
+ word-list constraint to these options.
+
+\item A frontend can determine the size of the scan surface by first
+ checking that the options have range constraints associated. If a
+ range or word-list constraints exist, the frontend can take the
+ minimum and maximum values of one of the x and y option
+ range-constraints to determine the scan surface size.
+
+\item A frontend must work properly with any or all of these options
+ missing.
+
+\end{itemize}
+
+\input{net.tex}
+
+\chapter{Contact Information}\label{chap:contact}
+
+The SANE standard is discussed and evolved via a mailing list.
+Anybody with email access to the Internet can automatically join and
+leave the discussion group by sending mail to the following address.
+\begin{quote}\index{mailing list}
+\begin{verbatim}
+sane-devel-request@lists.alioth.debian.org
+\end{verbatim}
+\end{quote}
+To subscribe, send a mail with the body ``\verb|subscribe sane-devel|'' to the
+above address.
+
+A complete list of commands supported can be obtained by sending a
+mail with a subject of ``\code{help}'' to the above address. The
+mailing list is archived and available through the SANE home page at
+URL:
+\begin{quote}
+\url{http://www.sane-project.org/}
+\end{quote}
+
+\newpage
+\input{sane.ind}
+
+\end{document}
diff --git a/doc/saned.man b/doc/saned.man
new file mode 100644
index 0000000..d8e8983
--- /dev/null
+++ b/doc/saned.man
@@ -0,0 +1,325 @@
+.TH saned 8 "20 Apr 2009" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX saned
+.SH NAME
+saned \- SANE network daemon
+.SH SYNOPSIS
+.B saned
+.B [ \-a
+.I [ username ]
+.B | \-d
+.I [ n ]
+.B | \-s
+.I [ n ]
+.B | \-h
+.B ]
+.SH DESCRIPTION
+.B saned
+is the SANE (Scanner Access Now Easy) daemon that allows remote clients
+to access image acquisition devices available on the local host.
+.SH OPTIONS
+.PP
+The
+.B \-a
+flag requests that
+.B saned
+run in standalone daemon mode. In this mode,
+.B saned
+will detach from the console and run in the background, listening for incoming
+client connections;
+.B inetd
+is not required for
+.B saned
+operations in this mode. If the optional
+.B username
+is given after
+.B \-a
+,
+.B saned
+will drop root privileges and run as this user (and group).
+.PP
+The
+.B \-d
+and
+.B \-s
+flags request that
+.B saned
+run in debug mode (as opposed to
+.BR inetd (8)
+daemon mode). In this mode,
+.B saned
+explicitly waits for a connection request. When compiled with
+debugging enabled, these flags may be followed by a number to request
+debug info. The larger the number, the more verbose the debug output.
+E.g.,
+.B \-d128
+will request printing of all debug info. Debug level 0 means no debug output
+at all. The default value is 2. If flag
+.B \-d
+is used, the debug messages will be printed to stderr while
+.B \-s
+requests using syslog.
+.PP
+If
+.B saned
+is run from inetd, xinetd or systemd, no option can be given.
+.PP
+The
+.B \-h
+flag displays a short help message.
+.SH CONFIGURATION
+First and foremost:
+.B saned
+is not intended to be exposed to the internet or other non-trusted
+networks. Make sure that access is limited by tcpwrappers and/or a firewall
+setup. Don't depend only on
+.BR saned 's
+own authentication. Don't run
+.B saned
+as root if it's not necessary. And do
+.B not
+install
+.B saned
+as setuid root.
+.PP
+The
+.I saned.conf
+configuration file contains both options for the daemon and the access
+list.
+.TP
+\fBdata_portrange\fP = \fImin_port\fP - \fImax_port\fP
+Specify the port range to use for the data connection. Pick a port
+range between 1024 and 65535; don't pick a too large port range, as it
+may have performance issues. Use this option if your \fBsaned\fP
+server is sitting behind a firewall. If that firewall is a Linux
+machine, we strongly recommend using the Netfilter
+\fInf_conntrack_sane\fP module instead.
+.PP
+The access list is a list of host names, IP addresses or IP subnets
+(CIDR notation) that are permitted to use local SANE devices. IPv6
+addresses must be enclosed in brackets, and should always be specified
+in their compressed form. Connections from localhost are always
+permitted. Empty lines and lines starting with a hash mark (#) are
+ignored. A line containing the single character ``+'' is interpreted
+to match any hostname. This allows any remote machine to use your
+scanner and may present a security risk, so this shouldn't be used
+unless you know what you're doing.
+.PP
+A sample configuration file is shown below:
+.PP
+.RS
+# Daemon options
+.br
+data_portrange = 10000 - 10100
+.br
+# Access list
+.br
+scan\-client.somedomain.firm
+.br
+# this is a comment
+.br
+192.168.0.1
+.br
+192.168.2.12/29
+.br
+[::1]
+.br
+[2001:db8:185e::42:12]/64
+.RE
+.PP
+The case of the host names does not matter, so AHost.COM is considered
+identical to ahost.com.
+.SH SERVER DAEMON CONFIGURATION
+For
+.B saned
+to work properly in its default mode of operation, it is also necessary to
+add the appropriate configuration for
+.I (x)inetd or systemd.
+(see below).
+Note that your inetd must support IPv6 if you
+want to connect to saned over IPv6 ; xinetd, openbsd-inetd and systemd
+are known to support IPv6, check the documentation for your inetd daemon.
+.PP
+In the sections below the configuration for
+.I inetd, xinetd
+and
+.I systemd
+are described in more detail.
+.PP
+For the configurations below it is necessary to add a line of the following
+form to
+.IR /etc/services :
+.PP
+.RS
+sane\-port 6566/tcp # SANE network scanner daemon
+.RE
+.PP
+The official IANA short name for port 6566 is "sane\-port". The older name
+"sane" is now deprecated.
+.SH INETD CONFIGURATION
+It is required to add a single line to the inetd configuration file
+.IR (/etc/inetd.conf)
+.
+.PP
+The configuration line normally looks like this:
+.PP
+.RS
+sane\-port stream tcp nowait saned.saned @SBINDIR@/saned saned
+.E
+.PP
+However, if your system uses
+.BR tcpd (8)
+for additional security screening, you may want to disable saned
+access control by putting ``+'' in
+.IR saned.conf
+and use a line of the following form in
+.IR /etc/inetd.conf
+instead:
+.PP
+.RS
+sane\-port stream tcp nowait saned.saned /usr/sbin/tcpd @SBINDIR@/saned
+.RE
+.PP
+Note that both examples assume that there is a
+.B saned
+group and a
+.B saned
+user. If you follow this example, please make sure that the
+access permissions on the special device are set such that
+.B saned
+can access the scanner (the program generally needs read and
+write access to scanner devices).
+.SH XINETD CONFIGURATION
+If xinetd is installed on your system instead of inetd the following example
+for
+.I /etc/xinetd.conf
+may be helpful:
+.PP
+.RS
+.ft CR
+.nf
+# default: off
+# description: The sane server accepts requests
+# for network access to a local scanner via the
+# network.
+service sane\-port
+{
+ port = 6566
+ socket_type = stream
+ wait = no
+ user = saned
+ group = saned
+ server = @SBINDIR@/saned
+}
+.fi
+.ft R
+.RE
+.SH SYSTEMD CONFIGURATION
+for systemd we need to add 2 configuation files in
+.I /etc/systemd/system.
+.PP
+The first file we need to add here is called
+.I saned.socket.
+It shall have
+the following contents:
+.PP
+.RS
+.ft CR
+.nf
+[Unit]
+Description=saned incoming socket
+
+[Socket]
+ListenStream=6566
+Accept=yes
+MaxConnections=1
+
+[Install]
+WantedBy=sockets.target
+.fi
+.ft R
+.RE
+.PP
+The second file to be added is
+.I saned@.service
+with the following contents:
+.PP
+.RS
+.ft CR
+.nf
+[Unit]
+Description=Scanner Service
+Requires=saned.socket
+
+[Service]
+ExecStart=/usr/sbin/saned
+User=saned
+Group=saned
+StandardInput=null
+StandardOutput=syslog
+StandardError=syslog
+# Environment=SANE_CONFIG_DIR=@CONFIGDIR@ SANE_DEBUG_DLL=255
+.fi
+.ft R
+.RE
+.PP
+Is you need to set an environment variable for saned like
+.B SANE_CONFIG_DIR
+you will have to remove the # on the last line and set the variable
+appropriately. Multiple variables can be set by separating the assignments
+by spaces as shown in the example above.
+.PP
+Unlike
+.I (x)inetd
+systemd allows debugging output from backends set using
+.B SANE_DEBUG_<backend_name>
+to be captured. With the service unit as described above, the debugging output is
+forwarded to the system log.
+.SH FILES
+.TP
+.I /etc/hosts.equiv
+The hosts listed in this file are permitted to access all local SANE
+devices. Caveat: this file imposes serious security risks and its use
+is not recommended.
+.TP
+.I @CONFIGDIR@/saned.conf
+Contains a list of hosts permitted to access local SANE devices (see
+also description of
+.B SANE_CONFIG_DIR
+below).
+.TP
+.I @CONFIGDIR@/saned.users
+If this file contains lines of the form
+
+user:password:backend
+
+access to the listed backends is restricted. A backend may be listed multiple
+times for different user/password combinations. The server uses MD5 hashing
+if supported by the client.
+.SH ENVIRONMENT
+.TP
+.B SANE_CONFIG_DIR
+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 @CONFIGDIR@. 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
+.B SANE_CONFIG_DIR
+to "/tmp/config:" would result in directories "tmp/config", ".", and
+"@CONFIGDIR@" being searched (in this order).
+
+.SH "SEE ALSO"
+.BR sane (7),
+.BR scanimage (1),
+.BR xscanimage (1),
+.BR xcam (1),
+.BR sane\-dll (5),
+.BR sane\-net (5),
+.BR sane\-"backendname" (5)
+.br
+.I http://www.penguin-breeder.org/?page=sane\-net
+.SH AUTHOR
+David Mosberger
diff --git a/doc/scanimage.man b/doc/scanimage.man
new file mode 100644
index 0000000..79a1251
--- /dev/null
+++ b/doc/scanimage.man
@@ -0,0 +1,482 @@
+.TH scanimage 1 "10 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX scanimage
+.SH NAME
+scanimage \- scan an image
+.SH SYNOPSIS
+.B scanimage
+.RB [ \-d | \-\-device\-name
+.IR dev ]
+.RB [ \-\-format
+.IR format ]
+.RB [ \-i | \-\-icc\-profile
+.IR profile ]
+.RB [ \-L | \-\-list\-devices ]
+.RB [ \-f | \-\-formatted\-device\-list
+.IR format ]
+.RB [ \-b | \-\-batch
+.RI [= format ]]
+.RB [ \-\-batch\-start
+.IR start ]
+.RB [ \-\-batch\-count
+.IR count ]
+.RB [ \-\-batch\-increment
+.IR increment ]
+.RB [ \-\-batch\-double ]
+.RB [ \-\-accept\-md5\-only ]
+.RB [ \-p | \-\-progress ]
+.RB [ \-n | \-\-dont\-scan ]
+.RB [ \-T | \-\-test ]
+.RB [ \-A | \-\-all-options ]
+.RB [ \-h | \-\-help ]
+.RB [ \-v | \-\-verbose ]
+.RB [ \-B | \-\-buffer-size
+.RI [= size ]]
+.RB [ \-V | \-\-version ]
+.RI [ device\-specific\-options ]
+.SH DESCRIPTION
+.B scanimage
+is a command-line interface to control image acquisition devices such
+as flatbed scanners or cameras. The device is controlled via
+command-line options. After command-line processing,
+.B scanimage
+normally proceeds to acquire an image. The image data is written to
+standard output in one of the PNM (portable aNyMaP) formats (PBM for
+black-and-white images, PGM for grayscale images, and PPM for color
+images) or in TIFF (black-and-white, grayscale or color).
+.B scanimage
+accesses image acquisition devices through the
+.B SANE
+(Scanner Access Now Easy) interface and can thus support any device for which
+there exists a
+.B SANE
+backend (try
+.B apropos
+.I sane\-
+to get a list of available backends).
+
+.SH EXAMPLES
+To get a list of devices:
+
+ scanimage \-L
+
+To scan with default settings to the file image.pnm:
+
+ scanimage >image.pnm
+
+To scan 100x100 mm to the file image.tiff (\-x and \-y may not be available with
+all devices):
+
+ scanimage \-x 100 \-y 100 \-\-format=tiff >image.tiff
+
+To print all available options:
+
+ scanimage \-h
+
+.SH OPTIONS
+Parameters are separated by a blank from single-character options (e.g.
+\-d epson) and by a "=" from multi-character options (e.g. \-\-device\-name=epson).
+
+.PP
+The
+.B \-d
+or
+.B \-\-device\-name
+options must be followed by a
+.B SANE
+device-name like
+.RI ` epson:/dev/sg0 '
+or
+.RI ` hp:/dev/usbscanner0 '.
+A (partial) list of available devices can be obtained with the
+.B \-\-list\-devices
+option (see below). If no device-name is specified explicitly,
+.B scanimage
+reads a device-name from the environment variable
+.BR SANE_DEFAULT_DEVICE .
+If this variable is not set,
+.B scanimage
+will attempt to open the first available device.
+.PP
+The
+.B \-\-format
+.I format
+option selects how image data is written to standard output.
+.I format
+can be
+.B pnm
+or
+.BR tiff.
+If
+.B \-\-format
+is not used, PNM is written.
+.PP
+The
+.B \-i
+or
+.B \-\-icc\-profile
+option is used to include an ICC profile into a TIFF file.
+.PP
+The
+.B \-L
+or
+.B \-\-list\-devices
+option requests a (partial) list of devices that are available. The
+list is not complete since some devices may be available, but are not
+listed in any of the configuration files (which are typically stored
+in directory
+.IR @CONFIGDIR@ ).
+This is particularly the case when accessing scanners through the network. If
+a device is not listed in a configuration file, the only way to access it is
+by its full device name. You may need to consult your system administrator to
+find out the names of such devices.
+.PP
+The
+.B \-f
+or
+.B \-\-formatted\-device\-list
+option works similar to
+.BR \-\-list\-devices ,
+but requires a format string.
+.B scanimage
+replaces the placeholders
+.B %d %v %m %t %i %n
+with the device name, vendor name, model name, scanner type, an index
+number and newline respectively. The command
+.PP
+.RS
+.B scanimage \-f
+.I \*(lq scanner number %i device %d is a %t, model %m, produced by %v \*(rq
+.PP
+.RE
+will produce something like:
+.PP
+.RS
+scanner number 0 device sharp:/dev/sg1 is a flatbed scanner, model JX250
+SCSI, produced by SHARP
+.RE
+.PP
+The
+.B \-\-batch*
+options provide the features for scanning documents using document
+feeders.
+.BR \-\-batch
+.RI [ format ]
+is used to specify the format of the filename that each page will be written
+to. Each page is written out to a single file. If
+.I format
+is not specified, the default of out%d.pnm (or out%d.tif for \-\-format tiff)
+will be used.
+.I format
+is given as a printf style string with one integer parameter.
+.B \-\-batch\-start
+.I start
+selects the page number to start naming files with. If this option is not
+given, the counter will start at 1.
+.B \-\-batch\-count
+.I count
+specifies the number of pages to attempt to scan. If not given,
+scanimage will continue scanning until the scanner returns a state
+other than OK. Not all scanners with document feeders signal when the
+ADF is empty, use this command to work around them.
+With
+.B \-\-batch\-increment
+.I increment
+you can change the amount that the number in the filename is incremented
+by. Generally this is used when you are scanning double-sided documents
+on a single-sided document feeder. A specific command is provided to
+aid this:
+.B \-\-batch\-double
+will automatically set the increment to 2.
+.B \-\-batch\-prompt
+will ask for pressing RETURN before scanning a page. This can be used for
+scanning multiple pages without an automatic document feeder.
+.PP
+The
+.B \-\-accept\-md5\-only
+option only accepts user authorization requests that support MD5 security. The
+.B SANE
+network daemon
+.RB ( saned )
+is capable of doing such requests. See
+.BR saned (8).
+.PP
+The
+.B \-p
+or
+.B \-\-progress
+option requests that
+.B scanimage
+prints a progress counter. It shows how much image data of the current image has
+already been received by
+.B scanimage
+(in percent).
+.PP
+The
+.B \-n
+or
+.B \-\-dont\-scan
+option requests that
+.B scanimage
+only sets the options provided by the user but doesn't actually perform a
+scan. This option can be used to e.g. turn off the scanner's lamp (if
+supported by the backend).
+.PP
+The
+.B \-T
+or
+.B \-\-test
+option requests that
+.B scanimage
+performs a few simple sanity tests to make sure the backend works as
+defined by the
+.B SANE
+API (in particular the
+.B sane_read
+function is exercised by this test).
+.PP
+The
+.B \-A
+or
+.B \-\-all-options
+option requests that
+.B scanimage
+lists all available options exposed the backend, including button options.
+The information is printed on standard output and no scan will be done.
+.PP
+The
+.B \-h
+or
+.B \-\-help
+options request help information. The information is printed on
+standard output and in this case, no attempt will be made to acquire
+an image.
+.PP
+The
+.B \-v
+or
+.B \-\-verbose
+options increase the verbosity of the operation of
+.B scanimage.
+The option may be specified repeatedly, each time increasing the verbosity
+level.
+.PP
+The
+.B \-B
+or
+.B \-\-buffer-size
+changes the input buffer size from 32KB to the number kB specified or 1M.
+.PP
+The
+.B \-V
+or
+.B \-\-version
+option requests that
+.B scanimage
+prints the program and package name, the version number of
+the
+.B SANE
+distribution that it came with and the version of the backend that it
+loads. Usually that's the dll backend. If more information about the version
+numbers of the backends are necessary, the
+.B DEBUG
+variable for the dll backend can be used. Example: SANE_DEBUG_DLL=3 scanimage
+\-L.
+.PP
+As you might imagine, much of the power of
+.B scanimage
+comes from the fact that it can control any
+.B SANE
+backend. Thus, the exact set of command-line options depends on the
+capabilities of the selected device. To see the options for a device named
+.IR dev ,
+invoke
+.B scanimage
+via a command-line of the form:
+.PP
+.RS
+.B scanimage \-\-help \-\-device\-name
+.I dev
+.RE
+.PP
+The documentation for the device-specific options printed by
+.B \-\-help
+is best explained with a few examples:
+
+ \-l 0..218mm [0]
+.br
+ Top-left x position of scan area.
+.PP
+.RS
+The description above shows that option
+.B \-l
+expects an option value in the range from 0 to 218 mm. The
+value in square brackets indicates that the current option value is 0
+mm. Most backends provide similar geometry options for top-left y position (\-t),
+width (\-x) and height of scan-area (\-y).
+.RE
+
+
+ \-\-brightness \-100..100% [0]
+.br
+ Controls the brightness of the acquired image.
+.PP
+.RS
+The description above shows that option
+.B \-\-brightness
+expects an option value in the range from \-100 to 100 percent. The
+value in square brackets indicates that the current option value is 0
+percent.
+.RE
+
+ \-\-default\-enhancements
+.br
+ Set default values for enhancement controls.
+.PP
+.RS
+The description above shows that option
+.B \-\-default\-enhancements
+has no option value. It should be thought of as having an immediate
+effect at the point of the command-line at which it appears. For
+example, since this option resets the
+.B \-\-brightness
+option, the option-pair
+.B \-\-brightness 50 \-\-default\-enhancements
+would effectively be a no-op.
+.RE
+
+ \-\-mode Lineart|Gray|Color [Gray]
+.br
+ Selects the scan mode (e.g., lineart or color).
+.PP
+.RS
+The description above shows that option
+.B \-\-mode
+accepts an argument that must be one of the strings
+.BR Lineart ,
+.BR Gray ,
+or
+.BR Color .
+The value in the square bracket indicates that the option is currently
+set to
+.BR Gray .
+For convenience, it is legal to abbreviate the string values as long as
+they remain unique. Also, the case of the spelling doesn't matter. For
+example, option setting
+.B \-\-mode col
+is identical to
+.BR "\-\-mode Color" .
+.RE
+
+ \-\-custom\-gamma[=(yes|no)] [inactive]
+.br
+ Determines whether a builtin or a custom gamma-table
+.br
+ should be used.
+.PP
+.RS
+The description above shows that option
+.B \-\-custom\-gamma
+expects either no option value, a "yes" string, or a "no" string.
+Specifying the option with no value is equivalent to specifying "yes".
+The value in square-brackets indicates that the option is not
+currently active. That is, attempting to set the option would result
+in an error message. The set of available options typically depends
+on the settings of other options. For example, the
+.B \-\-custom\-gamma
+table might be active only when a grayscale or color scan-mode has
+been requested.
+
+Note that the
+.B \-\-help
+option is processed only after all other options have been processed.
+This makes it possible to see the option settings for a particular
+mode by specifying the appropriate mode-options along
+with the
+.B \-\-help
+option. For example, the command-line:
+.PP
+.B scanimage \-\-help \-\-mode
+.I color
+.PP
+would print the option settings that are in effect when the color-mode
+is selected.
+.RE
+
+ \-\-gamma\-table 0..255,...
+.br
+ Gamma-correction table. In color mode this option
+.br
+ equally affects the red, green, and blue channels
+.br
+ simultaneously (i.e., it is an intensity gamma table).
+.PP
+.RS
+The description above shows that option
+.B \-\-gamma\-table
+expects zero or more values in the range 0 to 255. For example, a
+legal value for this option would be "3,4,5,6,7,8,9,10,11,12". Since
+it's cumbersome to specify long vectors in this form, the same can be
+expressed by the abbreviated form "[0]3-[9]12". What this means is
+that the first vector element is set to 3, the 9-th element is set to
+12 and the values in between are interpolated linearly. Of course, it
+is possible to specify multiple such linear segments. For example,
+"[0]3-[2]3-[6]7,[7]10-[9]6" is equivalent to "3,3,3,4,5,6,7,10,8,6".
+The program
+.B gamma4scanimage
+can be used to generate such gamma tables (see
+.BR gamma4scanimage (1)
+for details).
+.RE
+
+.br
+ \-\-filename <string> [/tmp/input.ppm]
+.br
+ The filename of the image to be loaded.
+.PP
+.RS
+The description above is an example of an option that takes an
+arbitrary string value (which happens to be a filename). Again,
+the value in brackets show that the option is current set to the
+filename
+.BR /tmp/input.ppm .
+.RE
+
+.SH ENVIRONMENT
+.TP
+.B SANE_DEFAULT_DEVICE
+The default device-name.
+.SH FILES
+.TP
+.I @CONFIGDIR@
+This directory holds various configuration files. For details, please
+refer to the manual pages listed below.
+.TP
+.I ~/.sane/pass
+This file contains lines of the form
+.PP
+.RS
+user:password:resource
+.PP
+scanimage uses this information to answer user authorization requests
+automatically. The file must have 0600 permissions or stricter. You should
+use this file in conjunction with the \-\-accept\-md5\-only option to avoid
+server-side attacks. The resource may contain any character but is limited
+to 127 characters.
+.SH "SEE ALSO"
+.BR sane (7),
+.BR gamma4scanimage (1),
+.BR xscanimage (1),
+.BR xcam(1) ,
+.BR xsane(1) ,
+.BR scanadf (1),
+.BR sane\-dll (5),
+.BR sane\-net (5),
+.BR sane\-"backendname" (5)
+.SH AUTHOR
+David Mosberger, Andreas Beck, Gordon Matzigkeit, Caskey Dickson, and many
+others. For questions and comments contact the sane\-devel mailinglist (see
+http://www.sane\-project.org/mailing\-lists.html).
+
+.SH BUGS
+For vector options, the help output currently has no indication as to
+how many elements a vector-value should have.
diff --git a/doc/sceptre/s1200.txt b/doc/sceptre/s1200.txt
new file mode 100644
index 0000000..ade81db
--- /dev/null
+++ b/doc/sceptre/s1200.txt
@@ -0,0 +1,109 @@
+Scanner overview
+- One pass scanner
+- 10 DPI minimum. Max X=600 dpi, max Y=1200 dpi.
+- A4 size
+
+/*--------------------------------------------------------------------------*/
+
+Components:
+- Weltrend WT8616
+- TEMIC TSC 80C31 (CMOS 0 to 44 MHz Single-Chip 8 Bit Microcontroller)
+
+/*--------------------------------------------------------------------------*/
+
+SCSI overview
+- the SCSI implementation in this scanner is non-standard but simple.
+- there is no REQUEST SENSE command.
+- since there is no sense, it is impossible to know if a command has succeeded.
+
+/*--------------------------------------------------------------------------*/
+
+SCSI commands:
+
+TEST UNIT READY
+00 00 00 00 01 00
+ Returns 1 byte of data:
+ 00 = scanner ready
+ ff = scanner not ready
+
+Vendor Spec
+02 00 00 00 04 00
+ Get 4 bytes of status. Used to check the button.
+ Default result when the button is not pressed
+ 06 00 00 00
+
+INQUIRY
+ result:
+ 06 00 02 02 30 00 00 10 4b 49 4e 50 4f 20 20 20 ....0...KINPO
+ 56 69 76 69 64 73 63 61 6e 20 53 31 32 30 20 20 Vividscan S120
+ 53 31 33 20 20 20 20 20 02 01 00 00 4a 45 46 46 S13 ....JEFF
+ ...
+
+MODE SEL
+15 10 00 00 18 00
+
+SCAN
+1B 00 00 00 00 00
+
+RECEIVE DIAG
+1C 00 00 00 03 00
+
+SEND DIAG
+1D 00 80 00 00 00
+
+SET WINDOW
+24 00 00 00 00 00 00 00 52 00
+ The window size is always 0x52 bytes. The parameters look standard:
+ - X/Y resolution |
+ - Upper left X,Y |- all three coded in 600 dpi units
+ - Width, Length |
+
+ The supported scan modes are:
+ - lineart image comp=0, halftone=0, depth=1
+ - halftone image comp=0, haltone=1 to 4, depth=1
+ - grayscale image comp=2, halftone=0, depth=8
+ - color image comp=5, halftone=0, depth=24
+
+ Y resolution is not used (X is also used for Y)
+ X resolution is limited to 600 (if above, scanner defaults to 600)
+ Y resolution is limited to 1200 (if above, scanner defaults to 1200)
+ Image composition is byte 33, halftone is byte 36, depth is byte 34
+
+READ (10)
+28 00 00 00 00 00 00 FE 9A 00
+
+SEND (10)
+2A 00 03 00 00 02 00 03 00 00
+Sends 300h bytes of gamma. 100h bytes per color. What is the color order?
+
+GET DATA BUFFER STATUS
+34 01 00 00 00 00 00 00 10 00
+Returns:
+ - byte 0 to 7: ? (these bytes looks rather standard)
+ - byte 8 to 11: total size left to read
+ - byte 12 to 13: number of lines (constant during a scan)
+ - byte 14 to 15: pixels per line (constant during a scan)
+
+/*--------------------------------------------------------------------------*/
+
+Color shifts
+
+Color order returned by the scanner is Red, then Green, then Blue. There is a color shift, meaning the raster for the Red is not followed by the Green raster for the same line.
+The shifts are:
+ dpi lines per color
+ 1200 16
+ 1125 15
+ 1050 14
+ 900 12
+ 750 10
+ 600 8
+ 450 6
+ 300 4
+ 150 2
+ 90 1
+ 75 1
+ 50 0
+
+Some resolution give garbage. However that table might not be complete.
+
+
diff --git a/doc/teco/teco1.txt b/doc/teco/teco1.txt
new file mode 100644
index 0000000..d555e9e
--- /dev/null
+++ b/doc/teco/teco1.txt
@@ -0,0 +1,193 @@
+
+ BACKEND TECO1
+
+
+
+Relisys RELI 2412 (no ADF, no transparency adapter)
+single pass scanner - 300*1200 dpi - 8.5*14
+Inquiry:
+ 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS
+ 016: 56 4d 33 35 33 30 2b 20 20 20 20 20 20 20 20 20 VM3530+
+ 032: 31 2e 30 38 31 2e 30 38 02 00 54 45 43 4f 20 56 1.081.08..TECO V
+ 048: 4d 33 35 33 41 M353A
+Inquiry page 0x82
+ 000: 06 82 00 12 11 54 45 43 4f 20 56 4d 33 35 33 41 .....TECO VM353A
+ 016: 20 56 31 2e 30 36 V1.06
+
+AVEC Colour 2412
+three pass scanner - 300*600 dpi - 8.5*14
+ 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0...
+ 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner
+ 032: 31 2e 30 38 31 2e 30 38 02 00 54 45 43 4f 20 56 1.081.08..TECO V
+ 048: 4d 33 35 32 41 M352A
+
+Avec Color Office 2400 (no ADF, no transparency adapter)
+three pass scanner - 300*600 dpi - 8.5*14
+Inquiry:
+ 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0...
+ 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner
+ 032: 32 2e 30 34 32 2e 30 34 02 00 54 45 43 4f 20 56 2.042.04..TECO V
+ 048: 4d 33 35 32 30 M3520
+Inquiry page 0x82
+ 000: 06 82 00 12 11 54 45 43 4f 20 56 4d 33 35 32 30 .....TECO VM3520
+ 016: 20 56 32 2e 30 34 V2.04
+
+RELI 4830 (no ADF, with transparency adapter)
+ 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS
+ 016: 52 45 4c 49 20 34 38 33 30 20 20 20 20 20 20 20 RELI 4830
+ 032: 31 2e 30 33 31 2e 30 33 02 00 54 45 43 4f 20 56 1.031.03..TECO V
+ 048: 4d 34 35 34 32 M4542
+Inquiry page 0x82
+ 000: 06 82 00 12 11 54 45 43 4f 20 56 4d 34 35 34 32 .....TECO VM4542
+ 016: 20 56 31 2e 30 33 V1.03
+
+Dextra DF-600P - VM3510
+ 000: 06 00 02 02 24 00 00 10 44 46 2D 36 30 30 4D 20 ....$...DF-600M
+ 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 032: 31 2E 31 37 31 2E 31 37 02 1.171.17.
+
+
+/*--------------------------------------------------------------------------*/
+
+SCSI commands supported by the RELISYS VM3530+:
+
+TEST UNIT READY
+00 00 00 00 00 00
+
+REQ SENSE
+03 00 00 00 12 00
+
+VENDOR-09
+09 00 00 78 00 00
+ 3-4 = length of data to receive. Always 30720 bytes.
+ Probably 12 lines of calibration at 300dpi.
+ 8.5*300*12=30600
+
+VENDOR-0E (?)
+0E 00 00 00 00 00
+ Always follows VENDOR-09 command
+
+INQUIRY:
+12 00 00 00 35 00
+12 01 82 00 21 00
+ standard inquiry
+ 52 bytes - appears to never change
+ 32-39: firmware version
+ 42-52: real scanner name
+
+ page 0x82 (vendor specific) - real scanner name with version
+ 0-3 = page header
+ 4 = string length
+ 5-21 = real scanner name with version
+
+MODE SELECT
+15 10 00 00 18 00
+ always sends:
+ 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 01
+ 03 06 02 00 00 01 00 00
+
+
+SCAN
+1B 00 00 00 00 00
+
+SET WINDOW
+24 00 00 00 00 00 00 00 63 00
+Total length is 99
+ 07 = length (99-8 = 91)
+ 10-11 = X Resolution
+ 12-13 = Y resolution
+ 14-17 = X top left corner
+ 18-21 = Y top left corner
+ 22-25 = width (size in inches * 300)
+ 26-29 = length (size in inches * 300)
+ 31 = 0x80 ?
+ 33 = scan mode
+ 0x00 = black & white
+ 0x02 = grayscale
+ 0x05 = color
+ 34 = bit depth? - invariants, always 8
+ 36 = dither pattern - only for B&W
+ 0x00 = line art
+ 0x01 = 2 X 2
+ 0x02 = 3 X 3
+ 0x03 = 4 X 4 Bayer
+ 0x04 = 4 X 4 Smooth
+ 0x05 = 8 X 8 Bayer
+ 0x06 = 8 X 8 Smooth
+ 0x07 = 8 X 8 Horizontal
+ 0x08 = 8 X 8 Vertical
+ 37 =
+ 0x80 = RIF (VM353A only?)
+ 63 = calibration?
+ 0x00 yes
+ 0x02 no
+ 81 = ??? transparency adapter
+ 0x00 no
+ 0x01 yes
+ 93 =
+ 0x80 = ? (seems to activate a contrast value on VM353A)
+
+ 37, 55, 57, 59, 61, 65, 67, 69, 71, 73, 75, 77, 79 = 0x80
+ 85, 89, 93, 97 = 0xff
+
+READ
+28 00 00 00 00 00 00 00 3E 00
+ 6-8 = length
+
+SEND
+2A 00 03 00 00 02 00 04 00 00
+ 2 = data type code
+ 0x03 = gamma - 4*256 bytes
+
+GET DATA BUFFER STATUS
+34 01 00 00 00 00 00 00 12 00
+ 1 = bit 1 is wait
+ 7-8 allocation length
+
+ returned buffer is 0x10 bytes long.
+ 0-2 = additional length (0x10-3 = 0x0D)
+ 3 = reserved(?)
+ 8 = ?
+ 9-11 = filled data buffer
+ 12-13 = number of lines (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
+
+
+/*--------------------------------------------------------------------------*/
+
+Command sequence
+(simplified, since the TWAIN driver seems to be quite stupid)
+
+Get some info:
+ INQUIRY
+ INQUIRY page 0x82
+
+Setup the scan:
+ TUR
+ MODE SELECT
+ SET WINDOWS
+ GET BUFFER STATUS
+ VENDOR-09
+ VENDOR-0E
+ SEND(10)
+ SET WINDOWS (same as the first one)
+ SCAN
+
+loop until all data read:
+ GET BUFFER STATUS
+ READ(10) if any data available
+
+park the CCD:
+ SET WINDOWS
+ SCAN
+
+/*--------------------------------------------------------------------------*/
+
+The vendor specific command 0x09 and 0x0e are issued by the windows driver to the AVEC 2400, but the scanner rejects them.
+
+/*--------------------------------------------------------------------------*/
+
+The Dextra DF600-P is a VM3510. It's older than the other scanner and
+is a little more primitive. The driver recognizes its scsi id and fake
+a more evolved one. The scan sequence is also simplified. The rest is
+identical.
diff --git a/doc/teco/teco2.txt b/doc/teco/teco2.txt
new file mode 100644
index 0000000..5b64a83
--- /dev/null
+++ b/doc/teco/teco2.txt
@@ -0,0 +1,267 @@
+
+ BACKEND TECO2
+
+INQUIRY
+
+TECO VM3564 (1)
+000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3
+032: 31 2e 30 37 31 2e 30 37 00 01 54 45 43 4f 20 56 1.071.07..TECO V
+048: 4d 33 35 36 34 20 00 01 01 2c 00 01 02 58 09 f6 M3564 ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+TECO VM3564 (2)
+000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3
+032: 31 2e 30 39 31 2e 30 39 00 01 54 45 43 4f 20 56 1.091.09..TECO V
+048: 4d 33 35 36 34 20 00 01 01 2c 00 01 02 58 09 f6 M3564 ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+TECO VM356A (1)
+000: 06 00 02 02 43 00 00 00 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 41 50 4f 4c 4c 4f 20 45 78 70 72 65 73 73 20 33 APOLLO Express 3
+032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V
+048: 4d 33 35 36 41 20 00 01 01 2c 00 01 02 58 09 f6 M356A ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+TECO VM356A (2)
+000: 06 00 02 02 43 00 00 10 50 72 69 6d 61 78 20 20 ....C...Primax
+016: 4a 65 77 65 6c 20 20 20 20 20 20 20 20 20 20 20 Jewel
+032: 31 2e 30 31 31 2e 30 31 00 01 54 45 43 4f 20 56 1.011.01..TECO V
+048: 4d 33 35 36 41 20 00 01 01 2c 00 01 02 58 09 f6 M356A ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+TECO VM3575
+000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C...
+016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner
+032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V
+048: 4d 33 35 37 35 20 00 01 01 2c 00 01 02 58 09 f6 M3575 ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+TECO VM656A
+000: 06 00 02 02 43 00 00 00 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 41 50 4f 4c 4c 4f 20 45 78 70 72 65 73 73 20 36 APOLLO Express 6
+032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V
+048: 4d 36 35 36 41 00 01 01 2c 00 01 02 58 09 f6 0d M656A...,...X...
+064: af 01 2c 00 08 01 00 00 ..,.....
+
+TECO VM6575
+000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 53 43 4f 52 50 49 4f 20 50 72 6f 20 20 20 20 20 SCORPIO Pro
+032: 31 2e 30 31 31 2e 30 31 00 01 54 45 43 4f 20 56 1.011.01..TECO V
+048: 4d 36 35 37 35 20 00 01 01 2c 00 01 02 58 09 f6 M6575 ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+TECO VM6586
+000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C...
+016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner
+032: 33 2e 30 31 33 2e 30 31 00 01 54 45 43 4f 20 56 3.013.01..TECO V
+048: 4d 36 35 38 36 20 00 01 01 2c 00 01 02 58 09 f6 M6586 ...,...X..
+064: 0d af 01 2c 00 08 01 00 ...,....
+
+/*--------------------------------------------------------------------------*/
+
+
+
+SCSI Commands supported by the TECO VM3575:
+
+
+
+REQUEST SENSE
+03 00 00 00 12 00
+
+
+VENDOR-06
+???
+Receives 4 bytes of data
+
+
+VENDOR-9
+Get calibration lines - 12 lines
+ 2 = ?
+ 0x00 color scan
+ 0x01 grayscal scan
+ 0x02 b&w scan
+ Returns 6 bytes per pixel, probably 2 bytes per color in little endian order. (2550 * 6 = 15300)
+
+VENDOR-0C
+??? Unsupported?
+
+
+VENDOR-0E
+Set calibration. Apparently the line is computed from the calibration lines. It is not an average though.
+
+
+INQUIRY
+12 00 00 00 48 00
+ standard inquiry
+ 72 bytes
+ 32-39: firmware version
+ 42-52: real scanner name
+ 54-55: min X resolution
+ 56-57: max X resolution
+ 58-59: min Y resolution
+ 60-61: max Y resolution
+ 62-63: scan area length
+ 64-65: scan area width
+ 66-67: unit for scan area (eg 300th of inch)
+
+ eg if 62-63 = 2550 and 66-67 = 300, the length is 2550/300=8.5 inches.
+
+
+SCAN
+1B 00 00 00 00 00
+
+
+VENDOR-1C
+1c 00 00 00 00 00
+(Same opcode as RECEIVE DIAGNOSTIC RESULTS)
+ sends 4 bytes of data.
+
+
+SET WINDOW
+24 00 00 00 00 00 00 00 35 00 (VM3575)
+24 00 00 00 00 00 00 00 38 00 (VM6586)
+
+Total length is
+ 07 = length
+ VM3575 53-8 = 45
+ VM6586 56-8 = 48
+ VM3552 69-8 = 61
+ 10-11 = X Resolution
+ 12-13 = Y resolution
+ 14-17 = X top left corner
+ 18-21 = Y top left corner
+ 22-25 = width (size in inches * 300)
+ 26-29 = length (size in inches * 300)
+ 31 = 0x80 ?
+ 33 = scan mode
+ 0x00 = black & white
+ 0x02 = grayscale
+ 0x05 = color
+ 34 = bit depth? - invariant, always 8
+ 36 = (vm6586 only ?) halftone pattern ?
+ 1 = type 1 dithering
+ 37 =
+ 0x80 = RIF?
+ 48 = color channel to use
+ if scan mode is 0 or 2:
+ 0x00 = red
+ 0x01 = green
+ 0x02 = blue
+ if scan mode is 05 -> ignored
+ TWAIN leaves 0x02
+ 50 = ?
+
+ VM6585 only:
+ 52-53 = size of a line expected?
+ 54-55 = number of lines expected?
+
+
+READ
+28 00 00 00 00 19 00 1f 0e 00
+ 5 = number of lines to read
+ 7-8 = buffer size.
+ Always number of lines to read * size of a line.
+ 0x2000 appears to be the upper limit
+
+
+SEND
+2A 00 03 00 00 04 00 0C 00 00
+ 2 = data type code
+ 0x03 = gamma
+ 4-5 = data type qualifier (?)
+ 6-8 = length (0xc00 = 3276 = 3*2^10)
+ or:
+ 5-6: length of each gamma
+ 7-8: length of all gamma
+
+
+OBJECT POSITION
+31 00 00 00 00 00 00 00 00 00
+Park the CCD.
+
+
+GET DATA BUFFER STATUS
+34 01 00 00 00 00 00 00 12 00
+
+ 1 = bit 1 is wait
+ 7-8 = allocation length
+
+ returned buffer is 0x12 bytes long.
+ 00 00 0f 00 00 00 00 14 00 00 00 80 1b 6c 09 f6 05 05
+ 0-2 = additional length (0x12-3 = 0x0F)
+ 7 = ? always 0x14
+ 11 = bit 7 - (maybe) scanner is ready to send data
+ 12-13 = number of lines (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
+ 16-17 = garbage (the command only returns 0x10 bytes)
+
+
+/*--------------------------------------------------------------------------*/
+
+Scan sequence
+
+Get some info:
+ INQUIRY
+
+Setup the scan:
+ REQUEST SENSE
+ TUR
+ SET WINDOWS
+ GET BUFFER STATUS
+ VENDOR-0C
+ VENDOR-09 (read calibration)
+ VENDOR-0E (send new calibration)
+ REQUEST SENSE
+ SEND(10)
+ SET WINDOWS (same as the first one)
+ COMMAND 06
+ RECEIVE DIAGNOSTIC RESULTS
+ SCAN
+ GET BUFFER STATUS
+
+loop until all data read:
+ READ(10)
+
+park the CCD:
+ OBJECT POSITION
+
+/*--------------------------------------------------------------------------*/
+
+calibration
+
+TECO VM3575 reads 12 lines of calibration
+TECO VM656A reads 8 lines of calibration
+TECO VM6586 ??
+
+Algorithms used (text from Alex Wulms):
+The old algorithm was based on the assumption that the calibration value needs
+to be an offset, to go from the value obtained during input to the average
+value (0x800).
+
+E.g., if the input value is 0x800, the calibration value must be 0x800 (0x1000
+- 0x800).
+Likewise, if the input value is 0x700, the calibration value must be 0x900
+(0x1000 - 0x700)
+And if the input value is 0x600, the calibration value must be 0xA00
+
+The new algorithm is based on the assumption that the calibration needs to be
+a multiplication factor, to compensate for the too strong or too weak pixel
+in the sensor. Again, we want to obtain the average value (approximately
+0x800) for every pixel read during calibration.
+
+E.g., if the input value is 0x800, the calibration value must be 0x800
+(0x800*0x800 / 0x800).
+Likewise, if the input value is 0x700, the calibration value must be 0x924
+(0x800*0x800 / 0x700).
+And if the input value is 0x600, the calibration value must 0xAAA (0x800*0x800
+/ 0x600)
+
+Though, carefull comparison with scans done under windows has shown that the
+factor is slightly different from 0x800*0x800(=0x400000) but in stead it
+seems to be approximately 0x40302f (which would mean that the average value
+is approximately 0x803 in stead of 0x800).
+
+Hope this is clarifies the new algorithm.
+
diff --git a/doc/teco/teco3.txt b/doc/teco/teco3.txt
new file mode 100644
index 0000000..bc6391f
--- /dev/null
+++ b/doc/teco/teco3.txt
@@ -0,0 +1,166 @@
+
+ BACKEND TECO3
+
+
+This scanner capabilities are in the middle of the 3520 and 3575,
+sharing features of both. Hence a third backend.
+
+
+PIOTECH 3024 (TECO Scorpio/Taurus Infinity VM3552):
+ 000: 06 00 02 02 43 00 00 10 20 20 20 20 20 20 20 20 ....C...
+ 016: 46 6c 61 74 2d 62 65 64 20 73 63 61 6e 6e 65 72 Flat-bed scanner
+ 032: 35 2e 30 38 35 2e 30 38 03 02 54 45 43 4f 20 56 5.085.08..TECO V
+ 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,......
+ 064: 10 68 01 2c 00 00 00 01 .h.,....
+
+RELISYS INFINiTY SCORPIO:
+ 000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
+ 016: 53 63 6f 72 70 69 6f 20 20 20 20 20 20 20 20 20 Scorpio
+ 032: 31 2e 30 34 31 2e 30 34 03 02 54 45 43 4f 20 56 1.041.04..TECO V
+ 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,......
+ 064: 10 68 01 2c 00 00 00 00 .h.,....
+
+Trust Imagery 2400SP:
+ 000: 06 00 02 02 43 00 00 10 41 61 73 68 69 6d 61 20 ....C...Aashima
+ 016: 49 4d 41 47 45 52 59 20 32 34 30 30 53 50 20 20 IMAGERY 2400SP
+ 032: 31 2e 30 30 31 2e 30 30 03 02 54 45 43 4f 20 56 1.001.00..TECO V
+ 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,......
+ 064: 10 68 01 2c 00 00 00 01 .h.,....
+
+Trust Imagery 4800 SP +:
+ 000: 06 00 02 02 43 00 00 10 41 61 73 68 69 6d 61 20 ....C...Aashima
+ 016: 49 4d 41 47 45 52 59 20 34 38 30 30 53 50 20 2b IMAGERY 4800SP +
+ 032: 35 2e 30 38 35 2e 30 38 03 02 54 45 43 4f 20 56 5.085.08..TECO V
+ 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,......
+ 064: 10 68 01 2c 00 00 00 00 .h.,....
+
+/*--------------------------------------------------------------------------*/
+
+SCSI commands supported by the RELISYS VM3530+:
+
+TEST UNIT READY
+00 00 00 00 00 00
+
+REQ SENSE
+03 00 00 00 12 00
+
+VENDOR-09
+09 00 00 78 00 00
+ 3-4 = length of data to receive. Always 30720 bytes.
+ Probably 12 lines of calibration at 300dpi.
+ 8.5*300*12=30600
+
+VENDOR-0E (?)
+0E 00 00 00 00 00
+ Always follows VENDOR-09 command
+
+INQUIRY:
+12 00 00 00 35 00
+ standard inquiry
+ 52 bytes - appears to never change
+ 32-39: firmware version
+ 42-52: real scanner name
+
+SCAN
+1B 00 00 00 00 00
+
+SET WINDOW
+24 00 00 00 00 00 00 00 45 00 (3552)
+
+Total length is 99
+ 07 = length (99-8 = 91)
+ 10-11 = X Resolution
+ 12-13 = Y resolution
+ 14-17 = X top left corner
+ 18-21 = Y top left corner
+ 22-25 = width (size in inches * 300)
+ 26-29 = length (size in inches * 300)
+ 31 = 0x80 ?
+ 33 = scan mode
+ 0x00 = black & white
+ 0x02 = grayscale
+ 0x05 = color
+ 34 = bit depth? - invariants, always 8
+ 36 = dither pattern - only for B&W
+ 0x00 = line art
+ 0x01 = 2 X 2
+ 0x02 = 3 X 3
+ 0x03 = 4 X 4 Bayer
+ 0x04 = 4 X 4 Smooth
+ 0x05 = 8 X 8 Bayer
+ 0x06 = 8 X 8 Smooth
+ 0x07 = 8 X 8 Horizontal
+ 0x08 = 8 X 8 Vertical
+ 37 =
+ 0x80 = RIF ?
+ 48 = color channel to use
+ if scan mode is 0 or 2:
+ 0x00 = red
+ 0x01 = green
+ 0x02 = blue
+ if scan mode is 05 -> ignored
+ TWAIN leaves 0x02
+ 50: calibration
+ 00 = yes
+ 02 = no
+ 53, 57, 61, 65: 0xff
+
+
+READ
+28 00 00 00 00 00 00 00 3E 00
+ 6-8 = length
+
+SEND
+2A 00 03 00 00 02 00 04 00 00
+ 2 = data type code
+ 0x03 = gamma - 4*256 bytes
+
+OBJECT POSITION
+31 00 00 00 00 00 00 00 00 00
+Park the CCD.
+
+GET DATA BUFFER STATUS
+34 01 00 00 00 00 00 00 12 00
+ 1 = bit 1 is wait
+ 7-8 allocation length
+
+ returned buffer is 0x10 bytes long.
+ 0-2 = additional length (0x10-3 = 0x0D)
+ 3 = reserved(?)
+ 6-8 = scanner memory (with no RAM, it is 32KB on the VM3552)
+ 9-11 = filled data buffer
+ 12-13 = number of lines (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
+ 16 = ?
+ 17 = in color mode, 0x07 seems to means to the colors are shifted
+ and given by rasters. 0x00 seems to mean that there is no
+ color shifting and that each pixel is coded by 3 consecutive
+ bytes.
+
+/*--------------------------------------------------------------------------*/
+
+Command sequence
+(simplified, since the TWAIN driver seems to be quite stupid)
+
+Get some info:
+ INQUIRY
+
+Setup the scan:
+ TUR
+ SET WINDOWS
+ GET BUFFER STATUS
+ VENDOR-09
+ VENDOR-0E
+ SEND(10)
+ SET WINDOWS (same as the first one)
+ SCAN
+
+loop until all data read:
+ GET BUFFER STATUS
+ READ(10) if any data available
+
+park the CCD:
+ OBJECT POSITION
+
+/*--------------------------------------------------------------------------*/
+
diff --git a/doc/u12/U12.changes b/doc/u12/U12.changes
new file mode 100644
index 0000000..b6d008f
--- /dev/null
+++ b/doc/u12/U12.changes
@@ -0,0 +1,36 @@
+U12.changes - Gerhard Jäger <gerhard@gjaeger.de>
+================================================
+
+V 0.01-1 (2004-09-01)
+---------------------
+- initial version
+
+V 0.02-1 (2004-10-01)
+---------------------
+- fixed autodetection problem
+- enabled additional scan-modes
+- enabled TPA scanning
+- fixed corrupted picture problem
+
+V 0.02-4 (2004-19-01)
+---------------------
+- activated cancel function
+- added lamp off timer function
+
+V 0.02-6 (2004-21-01)
+---------------------
+- compilation fixes
+- changes to some structures
+
+V 0.02-9 (2004-06-10)
+---------------------
+- using now SANE definitions for scanmodes
+
+V 0.02-10 (2006-14-02)
+----------------------
+- SoftwareReset is now disabled in cancelSequence when the device
+ is a Genius (reported by Jose Alberto Reguero <jareguero@telefonica.net>)
+
+V 0.02-11 (2006-09-08)
+----------------------
+- Changed sane.type to "flatbed scanner" only
diff --git a/doc/u12/U12.todo b/doc/u12/U12.todo
new file mode 100644
index 0000000..f10216e
--- /dev/null
+++ b/doc/u12/U12.todo
@@ -0,0 +1,12 @@
+U12.todo (2004-19-01) Gerhard Jäger <gerhard@gjaeger.de>
+=========================================================
+
+OPEN:
+-----
+
+- 1200dpi modes
+- spurious I/O stall
+- binary mode inverted
+- preview mode
+- TPA does not work
+- reopen after lamp off on end
diff --git a/doc/umax/negative-types.txt b/doc/umax/negative-types.txt
new file mode 100644
index 0000000..c1f26ce
--- /dev/null
+++ b/doc/umax/negative-types.txt
@@ -0,0 +1,15 @@
+
+Negative ---- highlight ---- ------ shadow ------
+Type red green blue red green blue
+---------------------------------------------------------------
+standard 66% 33% 16% 7% 1% 0%
+---------------------------------------------------------------
+fuji 64% 33% 16% 7% 1% 0%
+---------------------------------------------------------------
+kodak 54% 18% 12% 9% 2% 0%
+---------------------------------------------------------------
+konica 38% 21% 14% 3% 0% 0%
+---------------------------------------------------------------
+agfa 61% 24% 13% 6% 2% 0%
+---------------------------------------------------------------
+
diff --git a/doc/umax/sane-logo.jpg b/doc/umax/sane-logo.jpg
new file mode 100644
index 0000000..e0f604f
--- /dev/null
+++ b/doc/umax/sane-logo.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-advanced-options-doc.html b/doc/umax/sane-umax-advanced-options-doc.html
new file mode 100644
index 0000000..dd2277b
--- /dev/null
+++ b/doc/umax/sane-umax-advanced-options-doc.html
@@ -0,0 +1,178 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - Advanced options</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">SANE-umax advanced options</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://www.sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+
+This backend dynamically enabeles the options that are supported
+by the scanner in dependence of the scanning-mode and other options. Here
+is an example of the frontend <a href="http://www.xsane.org/">
+<i>XSane</i></a>:
+<br>
+<br>
+<br>
+
+<center><img SRC="sane-umax-advanced.jpg" ALT="sane-umax-advanced-options-screenshot" height=235 width=291></center>
+
+<p><br>
+<center><table BORDER=2 CELLSPACING=2 CELLPADDING=2>
+<tr BGCOLOR="#40E0D0">
+<td><b>Advanced options</b></td>
+
+<td><b>Remark</b></td>
+</tr>
+
+<tr>
+<td>Set exposure time</td>
+
+<td>Enable selection of exposure time, if not enabled, scanner uses default
+values. *</td>
+</tr>
+
+<tr>
+<td>Cal. exposure time</td>
+
+<td>Define exposure time for calibration. *</td>
+</tr>
+
+<tr>
+<td>Scan exposure time</td>
+
+<td>Define exposure time for scan. *</td>
+</tr>
+
+<tr>
+<td>Set lamp density</td>
+
+<td>Enable selection of lamp density, if not enabled, scanner automatically
+selects a value. *</td>
+</tr>
+
+<tr>
+<td>Cal. lamp density</td>
+
+<td>Define lamp density for calibration. *</td>
+</tr>
+
+<tr>
+<td>Set scan lamp density</td>
+
+<td>Enable selection of lamp density for scan, if not enabled scanner uses
+the value that was used for calibration. *</td>
+</tr>
+
+<tr>
+<td>Scan lamp density</td>
+
+<td>Define lamp density for scan. *</td>
+</tr>
+
+<tr>
+<td>lamp on</td>
+
+<td>Turn on scanner lamp. *</td>
+</tr>
+
+<tr>
+<td>lamp off</td>
+
+<td>Turn off scanner lamp. *</td>
+</tr>
+
+<tr>
+<td>lamp off at exit</td>
+
+<td>Turn off scanner lamp when program exits (when sane_close is called)
+*</td>
+</tr>
+</table></center>
+
+<center>
+<p>* only available for some scanners</center>
+
+</blockquote>
+<br>
+<hr WIDTH="100%">
+<br>
+<center>
+<font color="#009900">This page has been changed on 5th. february 2001</font>
+</center>
+<br>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-advanced.jpg b/doc/umax/sane-umax-advanced.jpg
new file mode 100644
index 0000000..a67dae0
--- /dev/null
+++ b/doc/umax/sane-umax-advanced.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-astra-doc.html b/doc/umax/sane-umax-astra-doc.html
new file mode 100644
index 0000000..0b94019
--- /dev/null
+++ b/doc/umax/sane-umax-astra-doc.html
@@ -0,0 +1,580 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX Astra scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX Astra scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://www.sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="10">
+<center><b>UMAX scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF">&nbsp;<b>Astra series:</b></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra600s.htm">Astra 600S</a></center>
+</td>
+
+<td>
+<center>Astra 600S</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-2a</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra610s.htm">Astra 610S</a></center>
+</td>
+
+<td>
+<center>Astra 610S</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra1200s.htm">Astra 1200S</a></center>
+</td>
+
+<td>
+<center>Astra 1200S</center>
+</td>
+
+<td>
+<center>all but 2.9 <font color="#993300">*</font></center>
+</td>
+
+<td>
+<center>UTA-2a</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra1220.htm">Astra 1220S</a></center>
+</td>
+
+<td>
+<center>Astra 1220S</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-3a</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra2100s.htm">Astra 2100S</a></center>
+</td>
+
+<td>
+<center>Astra 2100S</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTC-2100</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra2200.htm">Astra 2200</a></center>
+</td>
+
+<td>
+<center>Astra 2200</center>
+</td>
+
+<td>
+<center>all (2.1)
+<font color="#993300">**</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra2400s.htm">Astra 2400S</a></center>
+</td>
+
+<td>
+<center>Astra 2400S</center>
+</td>
+
+<td>
+<center>all (1.1)</center>
+</td>
+
+<td>
+<center>UTA-2400</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 2400</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra6400.htm">Astra 6400</a></center>
+</td>
+
+<td>
+<center>Astra 6400</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font>
+<font color="#993300">***</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra6400.htm">Astra 6450</a></center>
+</td>
+
+<td>
+<center>Astra 6450</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font>
+<font color="#993300">***</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/astra_mx3.htm">Astra MX3</a></center>
+</td>
+
+<td>
+<center>Astra 2200</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font>
+<font color="#993300">**</font></center>
+</td>
+
+<td>
+<center>UTC-2100?</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+
+</table>
+
+<br>
+<font color="#990000">* Astra 1200S-C with external power supply and Firmware Version 2.9 could make problems.</font>
+<br>
+<font color="#990000">** Astra 2200 and MX3 are supported via SCSI. Connection via the USB bus not tested.</font>
+<br>
+<font color="#990000">*** Astra 6400 and 6450 are firewire scanners: not tested.</font>
+<p>
+<font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br>
+<font color="#990000">(X = supported by scanner, incl = is included)</font>
+<br>
+<hr WIDTH="100%">
+<br>
+<font color="#009900">This page has been changed on 16th. december 2001</font>
+</center>
+</td>
+</tr>
+
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-config-doc.html b/doc/umax/sane-umax-config-doc.html
new file mode 100644
index 0000000..c5f43b1
--- /dev/null
+++ b/doc/umax/sane-umax-config-doc.html
@@ -0,0 +1,431 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - Configuration</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">Configuration</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://www.sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+<h2>
+CONFIGURATION:
+</h2>
+
+<blockquote>The configuration file for this backend resides in
+<dl>
+<dd>
+/usr/local/etc/sane.d/umax.conf.
+</dd>
+</dl>
+</blockquote>
+
+<blockquote>
+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:
+<br>
+<dl>
+<dd>option scsi-buffer-size-min 65536</dd>
+<dd>option scsi-buffer-size-max 131072</dd>
+<dd>option scan-lines 40</dd>
+<dd>option preview-lines 10</dd>
+<dd>option scsi-maxqueue 2</dd>
+<dd>option handle-bad-sense-error 0</dd>
+<dd>option execute-request-sense 0</dd>
+<dd>option force-preview-bit-rgb 0</dd>
+<dd>option slow-speed -1</dd>
+<dd>option care-about-smearing -1</dd>
+<dd>option calibration-full-ccd -1</dd>
+<dd>option calibration-width-offset -1</dd>
+<dd>option calibration-bytes-pixel -1</dd>
+<dd>option invert-shading-data -1</dd>
+<dd>option lamp-control-available 0</dd>
+<dd>#scsi Vendor Model Type Bus Channel ID LUN</dd>
+<dd>scsi UMAX * Scanner * * * * *</dd>
+<dd>/dev/scanner</dd>
+<dd># this is a comment</dd>
+<dd>/dev/sge</dd>
+</dl>
+</blockquote>
+
+<blockquote>
+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
+<a href="http://www.sane-project.org/man/sane-scsi.5.html">sane-scsi</a>.
+</blockquote>
+
+<blockquote>
+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 <i>scsi-buffer-size-min</i> and <i>scsi-buffer-size-max</i>
+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.
+
+<p>
+The option <i>scan-lines</i> defines 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 <i>preview-lines</i>.
+Both have to be in the range between 1 and 65536.
+<p>
+With the option <i>scsi-maxqueue</i> 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.
+<p>
+When you are able to do color previews but color scans do not
+work you can set the option <i>force-preview-bit-rgb 1</i>.
+This always sets the preview bit when acquiring a color scan.
+The image quality may be reduced.
+<p>
+Some scanners (especally very old scanners) may need the options
+<i>slow-speed</i> and/or <i>care-about-smearing</i>. The value
+-1 uses the value defined by the driver, 0 disables the feature,
+1 enables the feature. <b>Do not change these options unless
+you really know what you do, you can destroy your scanner
+by setting wrong values for this options!!!</b>
+<p>
+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 <i>handle-bad-sense-error</i>
+in umax.conf. You can set the following values:<br>
+<dl>
+<dd>0 : handle as device busy</dd>
+<dd>1 : handle as ok</dd>
+<dd>2 : handle as i/o error</dd>
+<dd>3 : ignore bad error code, continue sense handler</dd>
+</dl>
+In most cases it does work when this condition is handled as a
+device busy state so this is the default (0).
+<p>
+The option <i>execute-request-sense</i> 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.
+<p>
+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.
+<p>
+<i>calibration-full-ccd</i>:<br>
+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.
+<p>
+<i>calibration-width-offset</i>:<br>
+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.
+<p>
+<i>calibration-bytes-pixel</i>:<br>
+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.
+<p>
+<i>invert-shading-data</i>:<br>
+Some scanners need inverted shading data (1), others
+need original shading data (0).
+The value -1 enables the value defined in the driver.
+
+</blockquote>
+
+<h2>
+SCSI ADAPTER TIPS:</h2>
+
+<blockquote>
+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.
+</blockquote>
+
+<blockquote>
+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:
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtc_3181e=0x280,255
+<p>&nbsp;or use the following command:
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insmod g_NCR5380 ncr_irq=255
+ncr_addr=0x280 dtc_3181e=1
+<p>&nbsp;&nbsp;&nbsp;&nbsp; - ncr_irq=255 : no IRQ, no DMA
+<br>&nbsp;&nbsp;&nbsp;&nbsp; - ncr_irq=254 : autoprobe IRQ
+<br>&nbsp;&nbsp;&nbsp;&nbsp; - ncr_addr : can be: 0x220 0x240 0x280 0x2A0 0x2C0 0x300 0x320 0x340
+<br>&nbsp;
+<p>
+For
+<a href="http://support.umax.co.uk/technotes/f096B.htm">information about the umax-scsi-cards</a>
+take a look here.
+</blockquote>
+
+<blockquote>
+See the relevant hardware FAQs and HOWTOs for your platform
+for more information.
+<br>See also: <a href="http://www.sane-project.org/man/sane-scsi.5.html">sane-scsi</a>
+</blockquote>
+
+<h2>FILES:</h2>
+
+<blockquote>
+<ul>
+<li>The backend configuration file: /usr/local/etc/sane.d/umax.conf</li>
+<li>The static library implementing this backend: /usr/local/lib/sane/libsane-umax.a</li>
+<li>
+The shared library implementing this backend : /usr/local/lib/sane/libsane-umax.so<br>
+(present on systems that support dynamic loading)
+</li>
+</ul>
+</blockquote>
+
+<h2>ENVIRONMENT:</h2>
+
+<blockquote>
+<ul>
+<li>SANE_DEBUG_UMAX</li>
+</ul>
+</blockquote>
+
+<blockquote>
+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:
+</blockquote>
+
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="2"><b><font face="Arial">SANE_DEBUG_UMAX values</font></b></td>
+</tr>
+
+<tr>
+<td WIDTH="10%">
+<address>
+<b>Number</b></address>
+</td>
+
+<td WIDTH="90%">
+<address>
+<b>Remark</b></address>
+</td>
+</tr>
+
+<tr>
+<td>
+<address>
+0</address>
+</td>
+
+<td>print important errors (printed each time)</td>
+</tr>
+
+<tr>
+<td>
+<address>
+1</address>
+</td>
+
+<td>print errors</td>
+</tr>
+
+<tr>
+<td>2</td>
+
+<td>print sense</td>
+</tr>
+
+<tr>
+<td>
+<address>
+3</address>
+</td>
+
+<td>print warnings</td>
+</tr>
+
+<tr>
+<td>4</td>
+
+<td>print scanner-inquiry</td>
+</tr>
+
+<tr>
+<td>
+<address>
+5</address>
+</td>
+
+<td>print information</td>
+</tr>
+
+<tr>
+<td>6</td>
+
+<td>print less important information</td>
+</tr>
+
+<tr>
+<td>7</td>
+
+<td>print called procedures</td>
+</tr>
+
+<tr>
+<td>8</td>
+
+<td>print reader_process messages</td>
+</tr>
+
+<tr>
+<td>
+<address>
+10</address>
+</td>
+
+<td>print called sane-init-routines</td>
+</tr>
+
+<tr>
+<td>
+<address>
+11</address>
+</td>
+
+<td>print called sane-procedures</td>
+</tr>
+
+<tr>
+<td>
+<address>
+12</address>
+</td>
+
+<td>print sane-infos</td>
+</tr>
+
+<tr>
+<td>
+<address>
+13</address>
+</td>
+
+<td>print sane option control messages</td>
+</tr>
+</table></center>
+
+<h4>Example:</h4>
+
+<blockquote>
+export SANE_DEBUG_UMAX=8
+</blockquote>
+
+<center>
+<hr WIDTH="100%">
+<br>
+<font color="#009900">This page has been changed on 27th. feburary 2001</font>
+<br>
+<br>
+</center>
+</blockquote>
+
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-doc.html b/doc/umax/sane-umax-doc.html
new file mode 100644
index 0000000..75d3804
--- /dev/null
+++ b/doc/umax/sane-umax-doc.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax backend</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">SANE-umax backend</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+</blockquote>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-histogram.jpg b/doc/umax/sane-umax-histogram.jpg
new file mode 100644
index 0000000..f51cec0
--- /dev/null
+++ b/doc/umax/sane-umax-histogram.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-mirage-doc.html b/doc/umax/sane-umax-mirage-doc.html
new file mode 100644
index 0000000..7c81b43
--- /dev/null
+++ b/doc/umax/sane-umax-mirage-doc.html
@@ -0,0 +1,281 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX Mirage scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX Mirage scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="10">
+<center><b>UMAX scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF">&nbsp;<b>Mirage
+series:</b></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Mirage</center>
+</td>
+
+<td>
+<center>Mirage D-16L</center>
+</td>
+
+<td>
+<center>all (2.7)</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>400 x 800
+<br><font color="#990000">800 x 1600*</font></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/mir2.htm">Mirage II</a></center>
+</td>
+
+<td>
+<center>Mirage II</center>
+</td>
+
+<td>
+<center>all (1.6)</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>700 x 1400
+<br><font color="#990000">1400 x 2800</font></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/mir2se.htm">Mirage IIse</a></center>
+</td>
+
+<td>
+<center>Mirage IIse</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>700 x 1400</center>
+</td>
+</tr>
+
+
+</table></center>
+
+<center>
+<br>
+<font color="#990000">* Mirage D-16L scanners allow scanning up to 800x800 / 1600x1600 dpi.</font>
+<p>
+<font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br>
+<font color="#990000">(X = supported by scanner, incl = is included)</font>
+<br>
+<hr WIDTH="100%">
+<br>
+<font color="#009900">This page has been changed on 12th. february 2001</font>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
+
diff --git a/doc/umax/sane-umax-not-listed-doc.html b/doc/umax/sane-umax-not-listed-doc.html
new file mode 100644
index 0000000..2a61645
--- /dev/null
+++ b/doc/umax/sane-umax-not-listed-doc.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - Not listed UMAX scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">Not listed UMAX scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+The sane-umax library implements a <a href="http://www.sane-project.org">SANE</a>
+backend that provides access to several UMAX-SCSI-scanners.
+<b> Parallel- and USB- scanners are not supported!</b>
+<p>
+If you own a UMAX-SCSI-scanner that is not listed as supported,
+it may work with SANE. It depends on the information the scanner returns
+to the umax-backend. If the data-block is large enough, the backend prints
+a <b>warning</b> and continues, but it is possible that not everything
+works fine.
+<p><b>I suggest you hold one hand on the power-button of the scanner while
+you try the first scans!</b>
+
+</blockquote>
+<br>
+<br>
+<br>
+<br>
+<br>
+<br>
+<hr WIDTH="100%">
+<center>
+<br><font color="#009900">This page has been changed on 12th. february 2001</font>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-others-doc.html b/doc/umax/sane-umax-others-doc.html
new file mode 100644
index 0000000..e1ed10d
--- /dev/null
+++ b/doc/umax/sane-umax-others-doc.html
@@ -0,0 +1,239 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - other UMAX scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">Other UMAX scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+The sane-umax library implements a <a href="http://www.sane-project.org">SANE</a>
+backend that provides access to several UMAX-SCSI-scanners. <b>Parallel-
+and USB- scanners are not supported!</b>
+<br>Here is a list of the UMAX-scanners:</blockquote>
+
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="10">
+<center><b>UMAX scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF">&nbsp;<b>Other scanners:</b></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Gemini D-16</center>
+</td>
+
+<td>
+<center>Gemini D-16</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>400 x 800
+<br><font color="#990000">800 x 1600</font></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>PageScan</center>
+</td>
+
+<td>
+<center>PSD</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 300</center>
+</td>
+</tr>
+
+</table></center>
+
+<center>
+<p><font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br><font color="#990000">(X = supported by scanner, incl = is included)</font>
+<br>
+<br>
+<br>
+<hr WIDTH="100%">
+<br><font color="#009900">This page has been changed on 12th. february 2001</font>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-parport-doc.html b/doc/umax/sane-umax-parport-doc.html
new file mode 100644
index 0000000..92a75f5
--- /dev/null
+++ b/doc/umax/sane-umax-parport-doc.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX parallel port scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX parallel port scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+The sane-umax library implements a <a href="http://www.sane-project.org">SANE</a>
+backend that provides access to several UMAX-SCSI-scanners.
+<b>Parallel- and USB- scanners are not supported!</b>
+<br>
+<br>
+But there is an experimental
+<a href="http://umax1220p.sourceforge.net">parallel port driver for UMAX scanners</a>.
+<br>
+Don't ask me about that driver - I do not know anything about this driver!
+
+</blockquote>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-powerlook-doc.html b/doc/umax/sane-umax-powerlook-doc.html
new file mode 100644
index 0000000..23eb3dc
--- /dev/null
+++ b/doc/umax/sane-umax-powerlook-doc.html
@@ -0,0 +1,539 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX PowerLook scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX PowerLook scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="10">
+<center><b>UMAX scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF">&nbsp;<b>Power Look series:</b></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Optical resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>PowerLook</center>
+</td>
+
+<td>
+<center>PS-2400X</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl2.htm">PowerLook II</a></center>
+</td>
+
+<td>
+<center>PL-II</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>UTA-II</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl3.htm">Power Look III</a></center>
+</td>
+
+<td>
+<center>PowerLook III</center>
+</td>
+
+<td>
+<center><font color="#330000">all (1.7)</font></center>
+</td>
+
+<td>
+<center>UTA-III</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#330000">ok</font></center>
+</td>
+
+<td>
+<center><font color="#330000">ok</font></center>
+</td>
+
+<td>
+<center><font color="#330000">ok</font></center>
+</td>
+
+<td>
+<center>1,8,12,14,24,36,42</center>
+</td>
+
+<td>
+<center>1200 x 2400</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl270.htm">PowerLook 270</a></center>
+</td>
+
+<td>
+<center>Color Filmscanner____1</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>2700 x 2700</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl270Plus.htm">PowerLook 270plus</a></center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>2700 x 2700</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl1100.htm">PowerLook 1100</a></center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font>
+<font color="#993300">*</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>1200 x 2400</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl2000.htm">PowerLook 2000</a></center>
+</td>
+
+<td>
+<center>PowerLook 2000</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>UTA-2000</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>1000 x 2000</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl2100xl.htm">PowerLook 2100XL</a></center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>UTA-2100XL</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>800 x 1600</center>
+</td>
+</tr>
+
+
+<tr>
+<td>
+<center><a href="http://www.umax.de/eu/Scanner/pl3000.htm">PowerLook 3000</a></center>
+</td>
+
+<td>
+<center>PowerLook 3000</center>
+</td>
+
+<td>
+<center><font color="#330000">all (2.0)</font></center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>1220 x 3048
+<br><font color="#990000">3048 x 3048</font></center>
+</td>
+</tr>
+
+
+</table></center>
+
+<center>
+<p>
+<font color="#990000">* Powerlook 1100 is a firewire scanner: not tested</font>
+<br>
+<br>
+<font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br>
+<font color="#990000">(X = supported by scanner, incl = is included)</font>
+<br>
+<br>
+<hr WIDTH="100%">
+<br><font color="#009900">This page has been changed on 16th. decemnber 2001</font>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-scanner-clones-doc.html b/doc/umax/sane-umax-scanner-clones-doc.html
new file mode 100644
index 0000000..f43d7eb
--- /dev/null
+++ b/doc/umax/sane-umax-scanner-clones-doc.html
@@ -0,0 +1,1054 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX scanner clones</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX scanner clones</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+The sane-umax library implements a <a href="http://www.sane-project.org">SANE</a>
+backend that provides access to several scanners that are compatible to the UMAX-SCSI-protocoll!
+<br>
+Here is a list of the UMAX-compatible scanners:
+</blockquote>
+
+<center><table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="11">
+<center><b>UMAX compatible Linotype Hell scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>Vendor</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Grays</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Jade</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>Office</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 1200*</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Jade</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>JADE</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 1200*</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Jade2</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>Office2</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Saphir</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Saphir2</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>SAPHIR2</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Saphir Ultra</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Saphir Ultra II</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>1200 x 2400</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Saphir HiRes</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>1,8,14,24,42</center>
+</td>
+
+<td>
+<center>1220 x 3048
+<br><font color="#990000">3048 x 3048</font></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Opal</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>700 x 1400</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Opal2</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>OPAL2</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>700 x 1400</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Opal Ultra</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>unknown</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>incl</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>1,8,12,24,36</center>
+</td>
+
+<td>
+<center>700 x 1400
+<br><font color="#990000">1400 x 2800</font></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Linoscan 1400</center>
+</td>
+
+<td>
+<center>HDM</center>
+</td>
+
+<td>
+<center>LS4H1S</center>
+</td>
+
+<td>
+<center>?</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,12,14,24,36,42</center>
+</td>
+
+<td>
+<center>1200 x 2400</center>
+</td>
+</tr>
+</table></center>
+
+<center>
+<p><font color="#990000">* Scanner is able to scan up to 1200 x 1200 dpi.</font>
+<p><font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br><font color="#990000">(X = supported by scanner, incl = is included)</font>
+</center>
+
+<p><br>
+<br>
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="11">
+<center><b>Other UMAX compatible scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>Vendor</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vobis/Highscreen
+<br>Scanboostar Premium</center>
+</td>
+
+<td>
+<center>LinoHell</center>
+</td>
+
+<td>
+<center>Office2</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Escom
+<br>Image Scanner 256</center>
+</td>
+
+<td>
+<center>UMAX</center>
+</td>
+
+<td>
+<center>UG80</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>1,8</center>
+</td>
+
+<td>
+<center>300 x 300</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Nikon AX-210</center>
+</td>
+
+<td>
+<center>Nikon</center>
+</td>
+
+<td>
+<center>AX-210</center>
+</td>
+
+<td>
+<center>all(?)</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 1200*</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Genius Colorpage HR5
+<br>(normal and Pro)</center>
+</td>
+
+<td>
+<center>KYE</center>
+</td>
+
+<td>
+<center>ColorPage-HR5</center>
+</td>
+
+<td>
+<center>all(?)</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+
+<tr>
+<td>
+<center>Epson Perfection 600</center>
+</td>
+
+<td>
+<center>EPSON</center>
+</td>
+
+<td>
+<center>Perfection600</center>
+</td>
+
+<td>
+<center>all(2.3)</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,10,24,30</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Escort Galleria 600S</center>
+</td>
+
+<td>
+<center>ESCORT</center>
+</td>
+
+<td>
+<center>Galleria 600S</center>
+</td>
+
+<td>
+<center>all(1.6)</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>??</center>
+</td>
+
+<td>
+<center>??</center>
+</td>
+
+<td>
+<center>??</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+</table></center>
+
+<center>
+<p><font color="#990000">* Scanner is able to scan up to 1200 x 1200 dpi.</font>
+<p><font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br><font color="#990000">(X = supported by scanner, incl = is included)</font>
+</center>
+<br>
+<hr WIDTH="100%">
+
+<center>
+<br>
+<font color="#009900">This page has been changed on 1st. october 2004</font>
+<br>
+<br>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-speed-doc.html b/doc/umax/sane-umax-speed-doc.html
new file mode 100644
index 0000000..7b6bb3e
--- /dev/null
+++ b/doc/umax/sane-umax-speed-doc.html
@@ -0,0 +1,509 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax backend</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">SANE-umax backend</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<blockquote>
+<br>
+
+<center>
+<table BORDER >
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td COLSPAN="2">Used System:</td>
+</tr>
+
+<tr>
+<td>CPU</td>
+
+<td>AMD K6-III/400</td>
+</tr>
+
+<tr>
+<td>RAM</td>
+
+<td>128MB</td>
+</tr>
+
+<tr>
+<td>SCSI-Controller</td>
+
+<td>NCR/Symbios logic 53C810</td>
+</tr>
+
+<tr>
+<td>Scanner</td>
+
+<td>UMAX Supervista S12</td>
+</tr>
+</table>
+</center>
+
+<p>
+
+<center>
+<table BORDER>
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td COLSPAN="5">
+<center>RGB scan 24 bits/pixel</center>
+</td>
+</tr>
+
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td>Resolution/dpi</td>
+
+<td>Size(h x v)/cm</td>
+
+<td>size/MB</td>
+
+<td>time/min:sec</td>
+
+<td>remark</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>&nbsp;</td>
+
+<td>&nbsp;</td>
+
+<td>&nbsp;</td>
+
+<td>0:13</td>
+
+<td>calibration</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>100</td>
+
+<td>21.6 x 29.7</td>
+
+<td>2.8</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>200</td>
+
+<td>21.6 x 29.7</td>
+
+<td>11.3</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>300</td>
+
+<td>21.6 x 29.7</td>
+
+<td>25.5</td>
+
+<td>0:35</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>400</td>
+
+<td>21.6 x 29.7</td>
+
+<td>45.5</td>
+
+<td>1:00</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>>=500</td>
+
+<td>21.6 x 29.7</td>
+
+<td>&nbsp;</td>
+
+<td>too long</td>
+
+<td>not usable</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>500</td>
+
+<td>9.0 x 13.0</td>
+
+<td>12.9</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>600</td>
+
+<td>9.0 x 13.0</td>
+
+<td>18.6</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>700</td>
+
+<td>9.0 x 13.0</td>
+
+<td>25.4</td>
+
+<td>0:55</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>1200</td>
+
+<td>9.0 x 13.0</td>
+
+<td>74.4</td>
+
+<td>5:20</td>
+
+<td>lots of backtracks</td>
+</tr>
+</table>
+</center>
+
+<p>
+
+<center>
+<table BORDER>
+
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td COLSPAN="5">
+<center>Grayscale scan 8 bits/pixel</center>
+</td>
+</tr>
+
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td>Resolution/dpi</td>
+
+<td>Size(h x v)/cm</td>
+
+<td>size/MB</td>
+
+<td>time/min:sec</td>
+
+<td>remark</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>&nbsp;</td>
+
+<td>&nbsp;</td>
+
+<td>&nbsp;</td>
+
+<td>0:10</td>
+
+<td>calibration</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>100</td>
+
+<td>21.6 x 29.7</td>
+
+<td>1.0</td>
+
+<td>0:25</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>200</td>
+
+<td>21.6 x 29.7</td>
+
+<td>3.7</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>300</td>
+
+<td>21.6 x 29.7</td>
+
+<td>8.5</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>400</td>
+
+<td>21.6 x 29.7</td>
+
+<td>15.0</td>
+
+<td>0:30</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>500</td>
+
+<td>21.6 x 29.7</td>
+
+<td>23.7</td>
+
+<td>0:35</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>600</td>
+
+<td>21.6 x 29.7</td>
+
+<td>34.1</td>
+
+<td>0:45</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>700</td>
+
+<td>21.6 x 29.7</td>
+
+<td>46.4</td>
+
+<td>0:50</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>800</td>
+
+<td>21.6 x 29.7</td>
+
+<td>60.6</td>
+
+<td>1:20</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>900</td>
+
+<td>21.6 x 29.7</td>
+
+<td>76.8</td>
+
+<td>1:35</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>1000</td>
+
+<td>21.6 x 29.7</td>
+
+<td>94.8</td>
+
+<td>1:40</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>1100</td>
+
+<td>21.6 x 29.7</td>
+
+<td>114.7</td>
+
+<td>1:40</td>
+
+<td>some backtracks</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>1200</td>
+
+<td>21.6 x 29.7</td>
+
+<td>136.5</td>
+
+<td>1:40</td>
+
+<td>some backtracks</td>
+</tr>
+</table>
+</center>
+
+<p>
+
+<center>
+<table BORDER>
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td COLSPAN="5">
+<center>Lineart scan 1 bit/pixel</center>
+</td>
+</tr>
+
+<tr ALIGN=CENTER BGCOLOR="#40E0D0">
+<td>Resolution/dpi</td>
+
+<td>Size(h x v)/cm</td>
+
+<td>size/MB</td>
+
+<td>time/min:sec</td>
+
+<td>remark</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>&nbsp;</td>
+
+<td>&nbsp;</td>
+
+<td>&nbsp;</td>
+
+<td>0:07</td>
+
+<td>calibration</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>100</td>
+
+<td>21.6 x 29.7</td>
+
+<td>0.122</td>
+
+<td>0:20</td>
+
+<td>&nbsp;</td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>1200</td>
+
+<td>21.6 x 29.7</td>
+
+<td>17.0</td>
+
+<td>0:40</td>
+
+<td>&nbsp;</td>
+</tr>
+</table>
+</center>
+
+</blockquote>
+<br>
+<hr WIDTH="100%">
+<br>
+<center>
+<font color="#009900">This page has been changed on 12th. february 2001</font></center>
+<br>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-standard-options-doc.html b/doc/umax/sane-umax-standard-options-doc.html
new file mode 100644
index 0000000..da0ade3
--- /dev/null
+++ b/doc/umax/sane-umax-standard-options-doc.html
@@ -0,0 +1,274 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax backend</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">SANE-umax backend</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<br>
+<blockquote>
+This backend dynamically enabeles the options that are supported
+by the scanner in dependence of the scanning-mode and other options. Here
+is an example of the frontend
+<a href="http://www.xsane.org">XSane</a>:
+<br>
+<br>
+<br>
+
+<center><img SRC="sane-umax.jpg" alt="main-window"></center>
+
+<p><br>
+The options Gamma, brightness, contrast and negative in the
+main window come from xsane that calculates a gamma table using this values.
+These values are corelated to highlight, midlight and shadow sliders in
+the Histogram window.
+
+<br>
+<h3>Scan modes:</h3>
+
+<center>
+<table BORDER=2 CELLSPACING=2 CELLPADDING=2>
+<tr BGCOLOR="#40E0D0">
+<td><b>Mode</b></td>
+
+<td><b>Remark</b></td>
+</tr>
+
+<tr>
+<td>Lineart</td>
+
+<td>1 bit/pixel black/white mode</td>
+</tr>
+
+<tr>
+<td>Halftone</td>
+
+<td>1 bit/pixel dithered black/white mode</td>
+</tr>
+
+<tr>
+<td>Grayscale</td>
+
+<td>8 / 9 / 10 / 12 / 14 / 16 bits/pixel gray mode</td>
+</tr>
+
+<tr>
+<td>Color</td>
+
+<td>24 / 27 / 30 / 36 / 42 / 48 bits/pixel RGB mode</td>
+</tr>
+</table>
+</center>
+
+
+<br>
+<h3>Scan sources:</h3>
+
+<center><table BORDER=2 CELLSPACING=2 CELLPADDING=2 WIDTH="300" >
+<tr BGCOLOR="#40E0D0">
+<td><b>Scan sources</b></td>
+</tr>
+
+<tr>
+<td>Flatbed</td>
+</tr>
+
+<tr>
+<td>Transparency adapter (UTA)</td>
+</tr>
+
+<tr>
+<td>Automatic document feeder (ADF)</td>
+</tr>
+</table></center>
+
+<br>
+<h3>Standard options:</h3>
+
+<center><img SRC="sane-umax-standard.jpg" ALT="sane-umax-standard-options-screenshot" height=272 width=309></center>
+
+<p><br>
+<center><table BORDER=2 CELLSPACING=2 CELLPADDING=2>
+<tr BGCOLOR="#40E0D0">
+<td><b>Standard options</b></td>
+
+<td><b>Remark</b></td>
+</tr>
+
+<tr>
+<td>Analog gamma correction</td>
+
+<td>Define the value for analog gamma correction. *
+<br>Value between 1.0 and 2.0 .
+<br>(Analog gamma correction doesn't reduce the number of used colors)</td>
+</tr>
+
+<tr>
+<td>Highlight</td>
+
+<td>Define the intensity that shall be considered white. *</td>
+</tr>
+
+<tr>
+<td>Shadow</td>
+
+<td>Define the intensity that shall be considered black. *</td>
+</tr>
+
+<tr>
+<td>Contrast</td>
+
+<td>Define the contrast of the image - only available in halftone-mode.</td>
+</tr>
+
+<tr>
+<td>Brightness</td>
+
+<td>Define the brightness of the image - only available in halftone-mode.</td>
+</tr>
+
+<tr>
+<td>Threshold</td>
+
+<td>Define the minimum intensity to get a white point- only available in
+lineart-mode.</td>
+</tr>
+
+<tr>
+<td>Use custom gamma table</td>
+
+<td>Use free definable scanner internal digital gamma table.
+<br>If you enable this option, the gamma correction is done inside the
+scanner. If you have a scanner with more than 8/24 bits/pixel, the image
+is scanned with the maximum available bit depth. The gamma correction does
+transform the image form the internal bit depth to the selected output
+<b><i>bit depth</i></b> (see below).
+<br>The frontends do handle the usage of the gamma table different. If
+you use xsane, you should enable this option to use the maximum available
+bit depth (otherwise xsane does the conversion with the selected output
+bit depth).
+<br>(Side-effect: digital gamma correction may reduce the number of used
+colors -especally if the used bit depth is low.)</td>
+</tr>
+
+<tr>
+<td>Quality calibration</td>
+
+<td>Use quality white calibration. *</td>
+</tr>
+
+<tr>
+<td>Double optical resolution</td>
+
+<td>Use lens 2 on high end scanners, this reduces the scanwidth and increases
+the maximum scanresolution. *</td>
+</tr>
+
+<tr>
+<td>Negative scan</td>
+
+<td>Inverts color intensity - for scanning negatives.</td>
+</tr>
+
+<tr>
+<td>Bit depth</td>
+
+<td>Image depth in bits/sample the scanner sends to the computer, normally
+8 in grayscale and color mode. Some scanners support more than 8bits/sample,
+but only few file formats support it. If your scanner supports more than
+8bis/sample you already get an improvement if you set the bit detpth to
+8 and enable the option <i>use custom gamma table</i> (see above) because
+the scanner internal gamma correction is done with the maximum available
+bit depth!!!
+<center>
+<b>*** There is normally no reason to use more than 8 bits/sample! ***</b>
+</center>
+</td>
+</tr>
+
+<tr>
+<td>Lamp warmup</td>
+
+<td>Enable extended lamp-warmup. *</td>
+</tr>
+</table></center>
+
+<center>
+<p>* only available for some scanners</center>
+
+</blockquote>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
+
diff --git a/doc/umax/sane-umax-standard.jpg b/doc/umax/sane-umax-standard.jpg
new file mode 100644
index 0000000..700326d
--- /dev/null
+++ b/doc/umax/sane-umax-standard.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-text.jpg b/doc/umax/sane-umax-text.jpg
new file mode 100644
index 0000000..c626bd7
--- /dev/null
+++ b/doc/umax/sane-umax-text.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-text2.jpg b/doc/umax/sane-umax-text2.jpg
new file mode 100644
index 0000000..0cc5d93
--- /dev/null
+++ b/doc/umax/sane-umax-text2.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-text4.jpg b/doc/umax/sane-umax-text4.jpg
new file mode 100644
index 0000000..f3d4a9d
--- /dev/null
+++ b/doc/umax/sane-umax-text4.jpg
Binary files differ
diff --git a/doc/umax/sane-umax-uc-doc.html b/doc/umax/sane-umax-uc-doc.html
new file mode 100644
index 0000000..a894b47
--- /dev/null
+++ b/doc/umax/sane-umax-uc-doc.html
@@ -0,0 +1,741 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX UC scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX UC scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<br>
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="10">
+<center><b>UMAX scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF">&nbsp;<b>UMAX UC series:</b></td>
+</tr>
+
+<tr>
+<td>
+<center><b>Name/ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>Lineart</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC630</center>
+</td>
+
+<td>
+<center><font color="#0000FF">not 2.8</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC630</center>
+</td>
+
+<td>
+<center><font color="#0000FF">2.8</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok, 3pass</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UG630</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>1,8</center>
+</td>
+
+<td>
+<center>600 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UG80</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>1,8</center>
+</td>
+
+<td>
+<center>300 x 300</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC840</center>
+</td>
+
+<td>
+<center><font color="#0000FF">not 1.6</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>800 x 800</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC840</center>
+</td>
+
+<td>
+<center><font color="#0000FF">1.6</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok, 3pass</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>800 x 800</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1200S</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,24
+<br>10,30##</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1200SE</center>
+</td>
+
+<td>
+<center><font color="#0000FF">&lt;3.0</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>1,8,24
+<br>10,30##</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1200SE</center>
+</td>
+
+<td>
+<center><font color="#0000FF">3.0</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24
+<br>10,30##</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1260</center>
+</td>
+
+<td>
+<center><font color="#0000FF">not 1.6</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center><font color="#FF0000">bad</font></center>
+</td>
+
+<td>
+<center>1,8,24
+<br>10,30##</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1260</center>
+</td>
+
+<td>
+<center><font color="#0000FF">1.6</font></center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center><font color="#FF1493">?</font></center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24
+<br>10,30##</center>
+</td>
+
+<td>
+<center>600 x 1200</center>
+</td>
+</tr>
+
+</table>
+
+<p>
+
+
+<p><font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br><font color="#990000">(X = supported by scanner, incl = is included)</font>
+
+
+<blockquote>
+<br><font color="#000099">The UC-series UMAX scanners
+often make problems. That may have to do with the firmware version. The first
+firmware versions are not compatible with Windows95, so I think they will not
+work with this driver too. UMAX suggests to use the following firmware versions
+for Windows 95:</font>
+<br>
+<br>
+<center>
+<table BORDER>
+<tr>
+<td COLSPAN="3" BGCOLOR="#40E0D0">
+<center>
+<b>Suggested firmware versions for old UMAX scanners</b>
+</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center>
+<b>suggested firmware version</b>
+<br>(<a href="http://www.umax.de/upgrds.html">read on UMAX's german website</a>)
+</center>
+</td>
+
+<td>
+<center><b>last firmware version</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC630 ###</center>
+</td>
+
+<td>
+<center>2.8</center>
+</td>
+
+<td>
+<center>2.8</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC840</center>
+</td>
+
+<td>
+<center>1.6</center>
+</td>
+
+<td>
+<center>1.6</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1200S</center>
+</td>
+
+<td>
+<center>2.5</center>
+</td>
+
+<td>
+<center>2.5</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1200SE</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>3.3</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>UC1260</center>
+</td>
+
+<td>
+<center>1.6</center>
+</td>
+
+<td>
+<center>1.6</center>
+</td>
+</tr>
+</table>
+
+</center>
+
+<p>
+
+<center>
+<font color="#990000">
+### The UC630 can not be upgraded if the last 4 digits of the serial number are less than 1000!
+</font>
+</center>
+<br>
+<br>
+Here you can find
+<a href="http://support.umax.co.uk/firmware/f107B.htm">
+information about firmware versions of UMAX scanners</a>.
+<br>&nbsp;</blockquote>
+
+<br>
+<hr WIDTH="100%">
+<br>
+<font color="#009900">This page has been changed on 12th. february 2001</font>
+<br>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax-vista-doc.html b/doc/umax/sane-umax-vista-doc.html
new file mode 100644
index 0000000..a4e68a4
--- /dev/null
+++ b/doc/umax/sane-umax-vista-doc.html
@@ -0,0 +1,701 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Oliver Rauch">
+ <meta name="Description" content="unix scanner driver for UMAX scanners">
+ <title>SANE-umax - UMAX Vista scanners</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+
+<table>
+<tr>
+<td width=200>
+<img SRC="sane-logo.jpg" alt="SANE-logo" hspace=60 align=BOTTOM>
+<br>
+<img SRC="sane-umax-text.jpg" alt="UMAX-logo" HSPACE=50>
+</td>
+<td>
+<blockquote>
+<h1><font color="#009900">UMAX Vista scanners</font></h1>
+</blockquote>
+</td>
+</tr>
+</table>
+
+
+<hr WIDTH="100%">
+
+<table>
+<tr>
+<td VALIGN=TOP WIDTH="250" BGCOLOR="#E0E0FF">
+<br>
+<ul>
+<li><a href="sane-umax-doc.html">Index</a></li>
+
+<li>
+Frontend options:
+<ul>
+<li><a href="sane-umax-standard-options-doc.html">Standard options</a></li>
+<li><a href="sane-umax-advanced-options-doc.html">Advanced options</a></li>
+</ul>
+</li>
+
+<li>
+Supported scanners:
+<ul>
+<li><a href="sane-umax-powerlook-doc.html">Power Look series</a></li>
+<li><a href="sane-umax-mirage-doc.html">Mirage series</a></li>
+<li><a href="sane-umax-astra-doc.html">Astra series</a></li>
+<li><a href="sane-umax-vista-doc.html">Vista series</a></li>
+<li><a href="sane-umax-uc-doc.html">UC series</a></li>
+<li><a href="sane-umax-others-doc.html">others</a></li>
+<li><a href="sane-umax-not-listed-doc.html">Not listed scanners</a></li>
+<li><a href="sane-umax-scanner-clones-doc.html">UMAX scanner clones</a></li>
+</ul>
+</li>
+
+<li><a href="sane-umax-parport-doc.html">UMAX parallel port scanners</a></li>
+<li><a href="sane-umax-config-doc.html">Configuration</a></li>
+<li><a href="sane-umax-speed-doc.html">Speed of UMAX scanners</a></li>
+<li><a href="http://www.rauch-domain.de/sane-umax">SANE-umax homepage</a></li>
+<li><a href="http://sane-project.org">SANE homepage</a></li>
+<li><a href="http://www.xsane.org/">XSane homepage</a></li>
+</ul>
+<br>
+</td>
+
+
+<td VALIGN=TOP BGCOLOR="#FFFFFF">
+<br>
+<center>
+<table BORDER>
+<tr BGCOLOR="#40E0D0">
+<td VALIGN=TOP COLSPAN="10">
+<center><b>UMAX scanners</b></center>
+</td>
+</tr>
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF"><b>Vista series:</b></td>
+</tr>
+
+<tr ALIGN=CENTER>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center><b>SCSI-ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr ALIGN=LEFT>
+<td>
+<center>Vista S6</center>
+</td>
+
+<td>
+<center>Vista-S6</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V6</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista S6E</center>
+</td>
+
+<td>
+<center>Vista-S6E</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V6</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista S6E</center>
+</td>
+
+<td>
+<center>UMAX S-6E</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V6</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista S6E</center>
+</td>
+
+<td>
+<center>UMAX S-6EG</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V6</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista S8</center>
+</td>
+
+<td>
+<center>Vista-S8</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V6?</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>400 x 800</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Supervista S12</center>
+</td>
+
+<td>
+<center>Supervista S-12</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V12</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 1200*</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Supervista S12</center>
+</td>
+
+<td>
+<center>UMAX S-12G</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V12</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 1200*</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Supervista S12</center>
+</td>
+
+<td>
+<center>UMAX S-12</center>
+</td>
+
+<td>
+<center>all</center>
+</td>
+
+<td>
+<center>UTA-V12</center>
+</td>
+
+<td>
+<center>X</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>600 x 1200*</center>
+</td>
+</tr>
+
+
+
+
+<tr>
+<td COLSPAN="10" BGCOLOR="#CCFFFF">&nbsp;<b>Old Vista scanner:</b></td>
+</tr>
+
+<tr>
+<td>
+<center><b>Name/ID</b></center>
+</td>
+
+<td>
+<center><b>Versions</b></center>
+</td>
+
+<td>
+<center><b>UTA</b></center>
+</td>
+
+<td>
+<center><b>ADF</b></center>
+</td>
+
+<td>
+<center><b>Lineart</b></center>
+</td>
+
+<td>
+<center><b>B/W</b></center>
+</td>
+
+<td>
+<center><b>Gray</b></center>
+</td>
+
+<td>
+<center><b>Color</b></center>
+</td>
+
+<td>
+<center><b>Bits/pixel</b></center>
+</td>
+
+<td>
+<center><b>Resolution</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista VT600</center>
+</td>
+
+<td>
+<center><font color="#3333FF">? (try UC630 V2.8)</font></center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>?</center>
+</td>
+
+<td>
+<center>?</center>
+</td>
+
+<td>
+<center>?</center>
+</td>
+
+<td>
+<center>?</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista T630</center>
+</td>
+
+<td>
+<center><font color="#3333FF">some</font></center>
+</td>
+
+<td>
+<center>X#</center>
+</td>
+
+<td>
+<center>&nbsp;</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>ok</center>
+</td>
+
+<td>
+<center>ok, 3pass</center>
+</td>
+
+<td>
+<center>1,8,24</center>
+</td>
+
+<td>
+<center>300 x 600</center>
+</td>
+
+</tr>
+</table>
+
+<p>
+
+
+<center>
+<p><font color="#990000">* Supervista S12 scanners allow scanning up to 1200x1200 dpi.</font>
+<p><font color="#990000">UTA = Umax Transparancy Adapter, ADF = Automatic Document Feeder</font>
+<br><font color="#990000">(X = supported by scanner, incl = is included)</font>
+
+
+<blockquote>
+<center>
+<font color="#990000"># There is no UTA available for the
+Vista T630, the UTA-V6 is limited supported, if you have problems with
+your Vista T630 scanner and you have a UTA-V6 connected, try without UTA!</font>
+<p><font color="#990000">## 10/30 bits/pixel are used internally, the output
+bit depth is 8/24 bits/pixel</font>
+</center>
+</blockquote>
+
+<p>
+
+<center>
+<table BORDER>
+<tr>
+<td COLSPAN="3" BGCOLOR="#40E0D0">
+<center>
+<b>Suggested firmware versions for old UMAX scanners</b>
+</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center><b>Name</b></center>
+</td>
+
+<td>
+<center>
+<b>suggested firmware version</b>
+<br>(<a href="http://www.umax.de/upgrds.html">read on UMAX's german website</a>)
+</center>
+</td>
+
+<td>
+<center><b>last firmware version</b></center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista VT600</center>
+</td>
+
+<td>
+<center>
+<a href="http://www.umax.de/upgrds.html">use the UC630 firmware (2.8)</a>
+</center>
+</td>
+
+<td>
+<center>?</center>
+</td>
+</tr>
+
+<tr>
+<td>
+<center>Vista T630</center>
+</td>
+
+<td>
+<center>--</center>
+</td>
+
+<td>
+<center>1.5</center>
+</td>
+</tr>
+
+</table>
+
+<br>
+<br>
+Here you can find
+<a href="http://support.umax.co.uk/firmware/f107B.htm">
+information about firmware versions of UMAX scanners</a>.
+<br>
+</center>
+
+<br>
+<hr WIDTH="100%">
+<br><font color="#009900">This page has been changed on 12th. february 2001</font>
+</center>
+</center>
+</td>
+</tr>
+</table>
+
+<hr WIDTH="100%">
+
+<blockquote>
+Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
+</blockquote>
+
+</body>
+</html>
diff --git a/doc/umax/sane-umax.jpg b/doc/umax/sane-umax.jpg
new file mode 100644
index 0000000..28b3018
--- /dev/null
+++ b/doc/umax/sane-umax.jpg
Binary files differ
diff --git a/doc/umax/umax.BUGS b/doc/umax/umax.BUGS
new file mode 100644
index 0000000..90af9b8
--- /dev/null
+++ b/doc/umax/umax.BUGS
@@ -0,0 +1,12 @@
+BUGS FROM UMAX BACKEND FOR SANE
+-------------------------------
+
+If you think that something is a bug and not a feature, please mail:
+Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+KNOWN BUGS:
+
+ * pixel count in x-direction is sometimes wrong if xres > 600dpi (Vista S12)
+
+ * first scan with Astra 2400S produces wrong colors
+
diff --git a/doc/umax/umax.CHANGES b/doc/umax/umax.CHANGES
new file mode 100644
index 0000000..77d8d62
--- /dev/null
+++ b/doc/umax/umax.CHANGES
@@ -0,0 +1,1172 @@
+CHANGES FOR UMAX BACKEND FOR SANE
+---------------------------------
+
+umax -> sane-0.6:
+-----------------
+
+ * umax-sane-backend created:
+ - umax.c splitted in:
+ umax-cli.c, umax-scsi.c, umax-driver.c, umax-text.c
+ - umax.h splitted in:
+ umax-scanner.h, umax-scsi.h, umax-scsidef.h, umax-struct.h
+ - outputs done by DBG(level,msg,args...) defined in debug.h
+ - scsi-calls changed to sane-format (of sane-0.57)
+ - created umax.c and umax.h for sane-backend
+
+ * changed search-path for scsi.h and sg.h, now needs /usr/include/scsi
+
+ * removed mistake in bound-function
+
+ * added "Vista S-6E" as supported
+
+ * added PowerLook-II (PL-II) as supported
+
+ * added Astra 600S as supported
+
+
+sane-0.6 / 0.61 / 0.62 -> 0.63
+------------------------------
+
+ * added exception to gpl-licence:
+ > This program is free software; you can redistribute it and/or
+ > modify it under the terms of the GNU General Public License as
+ > published by the Free Software Foundation; either version 2 of the
+ > License, or (at your option) any later version.
+ >
+ > This program is distributed in the hope that it will be useful, but
+ > WITHOUT ANY WARRANTY; without even the implied warranty of
+ > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ > General Public License for more details.
+ >
+ > You should have received a copy of the GNU General Public License
+ > along with this program; if not, write to the Free Software
+ > Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ > MA 02111-1307, USA.
+ >
+ > As a special exception, the authors of SANE give permission for
+ > additional uses of the libraries contained in this release of SANE.
+ >
+ > The exception is that, if you link a SANE library with other files
+ > to produce an executable, this does not by itself cause the
+ > resulting executable to be covered by the GNU General Public
+ > License. Your use of that executable is in no way restricted on
+ > account of linking the SANE library code into it.
+ >
+ > This exception does not, however, invalidate any other reasons why
+ > the executable file might be covered by the GNU General Public
+ > License.
+ >
+ > If you submit changes to SANE to the maintainers to be included in
+ > a subsequent release, you agree by submitting the changes that
+ > those changes may be distributed with this exception intact.
+ >
+ > If you write modifications of your own for SANE, it is your choice
+ > whether to permit this exception to apply to your modifications.
+ > If you do not wish that, delete this exception notice.
+
+ * split resolution in x-res and y-res, flag bind-resolution
+
+ * only sane_... functions will be exported from umax-backend,
+ all umax_... functions are made static
+
+ * removed umax-emergency-routine for SANE
+
+ * made program-flow (esp. with do_canel) SANE-specific
+
+ * fixed missing 3-pass parts
+
+ * made scanmodes, sources, analog gamma, gamma download, negative,
+ quality calibration, highlight, shadow only selectable if they are
+ available
+
+ * calibration-mode selectable in advanced options if available
+
+ * warmup selectable if available
+
+ * changed umax-scsi.c like described from Gordon Matzigkeit
+ in his diff/patch-file from 21.06.97 so that the umax-backend
+ should compile on non-linux-systems now - thanks!
+
+ * split highlight and shadow in R, G and B for color-mode.
+
+ * reset adf and uta flag when not used (in sane_start)
+
+ * added possibilty to change calibration-mode if available
+
+ * added send_halftone_pattern to umax-scsi.c
+
+ * changed umax-scsi.c like described from Gordon Matzigkeit
+ in his diff/patch-file from 21.06.97 so that the umax-backend
+ should compile on non-linux-systems now - thanks
+
+ * added support for each color (R,G,B) for highlight and shadow
+
+ * added "Astra 1200S" and "UC840" as supported
+
+ * added bad bugfix for preview-problem with S6E
+ (in umax-scsi.c function start_scan)
+
+ * moved resolution-check from check_values to bound_scanarea,
+ now no floatingpoint-exception will occur if no resolution is given!
+
+ * changed range-check for width and height
+
+ * removed bug in set_window for three-pass-rgb-mode
+ -selected wrong buffer for some green and blue options
+ -scanmode now is greyscale instead of rgb
+
+ * changed start_scan(us) to better use with wid-list
+ and added missing 3 wid-bytes in scan.cmd
+
+ * removed parameter color in three_pass_function_headers,
+ the color ist taken from us->three_pass_color now.
+
+
+sane-0.63/0.64/0.65 -> 0.66
+---------------------------
+
+ * changed gamma-data-upload for 3-pass-color-scan
+
+ * corrected wrong calculation for highlight and shadow
+ selection for rgb-values
+
+ * changed gamma data to use 8 bit (256 bytes) or 10 bit (1024 bytes)
+
+ * included 10/30 bits per pixel mode
+
+ * changed bug in sane_exit (free()) that sometimes made a
+ segmentation-fault
+
+ * made patches runtime-selectable
+
+ * changed set_window_command to support 30 bits per pixel
+
+ * changed send_gamma_data to support three_pass_gamma and 10/30 bpp
+
+ * changed row_len in umax_bound_scanarea to 10/30 bit mode
+
+ * added halftone-support for ug630, uc630 and uc840,
+ but I don't know if all values are ok!
+
+ * changed CBHS-50-range to 78-178 (from 103-153)
+
+ * changed rangecheck for highlight and shadow
+
+ * fixed get_cbhs_range-bug in umax-scsidef.h
+
+ * added ADF-inquiry-bits to umax-scsidef.h
+
+ * added color_line_arrangement_mode-inquiry-byte to umax-scsidef.h
+
+ * added CCD_line_distance-inquiry-byte to umax-scsidef.h
+
+ * added all most unused bits and bytes in inquiry to umax-scsidef.h
+
+ * made patches runtime-selectable
+
+
+sane-0.66 -> 0.67
+-----------------
+
+ * removed bug in sane_start: ADF and UTA flags have not been set correct
+
+ * removed bug in init_options: value range for 10 gamma-input-bits corrected
+
+ * made custom gamma available for lineart and halftone for nonlinear effects
+
+ * added Vista-T630 as supported scanner
+
+ * removed test_warmup in wait_scanner because adaptec 1542 has problems
+ with request_sense-command in test_warmup
+ it was only used for printing a message, so it was not important.
+
+ * if a scanner has a full inquiry-block but is not known to be supported,
+ the driver will print a warning and continue instead of aborting,
+ option --continue (on umax-cli) will suppress the warning!
+
+ * changed ugly definition
+ char gamma[x] -> char *gamma; gamma=alloca(x);
+
+ * removed bug (wrong length for 10 bit-gamma) in send_gamma_data
+
+ * changed all buffer-definitions to unsigned char and insterted
+ type conversions, so there are no more warnings because of
+ typemismatches.
+
+ * corrected bad definition of set_DCF2_gamma_output_bits
+
+
+sane-0.67 -> 0.68
+-----------------
+
+ * changed open config to fp = sanei_config_open(UMAX_CONFIG_FILE)
+
+ * changed all set OPT...BIND commands, endless-loop happend in sane-0.67
+ =>ane-0.67-umax-fix.diff.gz
+ after that patch changed same for ten_bit_mode
+
+ * changed some strdup() to (SANE_Char *)strdup()
+
+ * added UMAX Astra 610S as supported scanner. it has the same problems
+ in color-mode like the Astra 600S.
+
+
+sane-0.68 -> 0.69
+-----------------
+
+ * changed maximum y-resolution from optical_res to y_res
+
+ * changed sane_cancel (waitpid) like suggested by David Mosberger
+
+ * added #include <lalloca.h> for AIX-support
+
+ * replaced call to umax_wait_scanner with umax_do_calibration
+ after umax_start_scan in umax.c
+
+ * moved sense_handler to umax-scsi.c
+
+ * removed call to umax_get_data_buffer_status in reader_process
+
+ * added umax_send_shading_data, umax_send_gain_data
+ and umax_read_shading_data, umax_read_gain_data
+
+ * changed name: umax_read_data_block -> umax_read_image_data
+
+ * changed length offest in do_inquiry from 5 to 4
+ and changed set_inquiry_length-offset from 5 to 4
+
+ * added calib_lines to structure US and added it to
+ set_window - command in umax-scsi.c
+
+ * changed in umax-scsi.c routine identify_scanner:
+ vendor and product is tested for each model instead of
+ vendor=="UMAX " and only model tested!
+ Because of that the format of scanner_str has changed
+ from product,product,...
+ to vendor,product, vendor,product,...
+
+ * added support for Linotype Hell Jade (LinoHell Office)
+
+ * added empty routine umax_do_calibration in umax-scsi.c, it shall be called
+ after umax_start_scan!
+
+ * replaced all umax_*scsi with sanei_*scsi, so the umax-driver
+ now directly calls the sanei_scsi-commands.
+
+ * moved sense-handler from umax.c to umax-scsi.c
+ and added detection for driver-calibration-request
+ sense_handler got a new parameter (void *arg).
+
+ * changed wait_scanner for SUN: usleep(0.1sec) -> sleep(1s)
+ this is only a bad bugfix that will be replaced one day!
+
+
+sane-0.69 -> 0.70
+-----------------
+
+ * moved reader_process to umax-scsi.c
+
+ * changed include <sane/config.h> for _AIX and non-_AIX
+
+ * added missing "," in definition line for UMAX Astra 1200S in umax-scanner.h
+
+ * added in umax-scsi.c in function identify_scanner a test that only
+ warnings and errors are printed if vendor="UMAX "
+
+ * added routine umax_order_line_to_pixel and umax_order_line
+
+ * moved reader_process from umax.c to umax-scsi.c
+ and added routine for color ordering.
+
+ * reset length offest in do_inquiry from 4 to 5
+ and set_inquiry_length-offset from 4 to 5
+ because umax-S6E didn't work with it!
+
+ * corrected error in identify-scanner in vendor-test
+
+ * changed end-detection of list of known scanners from
+ #define known_scanners 15 to last item "END_OF_LIST"
+
+ * added routine that corrects wrong inquiry-data from
+ Astra 600S and Astra 610S
+
+ * added test and selection for do_color_ordering in check_values
+
+ * changed __sun-code in umax_wait_scanner because the scsi-driver
+ answers with IOERROR instead of DEVICE_BUSY
+ (this is only a bugfix for a little time)
+
+
+sane-0.70/0.71 -> 0.72
+----------------------
+
+ * inactivated selection of quality calibration (until it is supported
+ by the driver)
+
+ * changed maximum x_resolution from optical_res to max_x_res
+
+ * reordered DBG-levels and defined them by symbols
+
+ * changed all sizes that used type int to type size_t
+
+ * changed wait_scanner for testing !sane_status_good,
+ because testing sane_status_device_busy does not work with
+ all scsi-drivers!
+
+ * changed ccd-order in umax_order_line, the order is now
+ specified by 9 values (before by 3 values), changed
+ order tables and added a table for Astra 600S and
+ another table for Astra 610S
+
+ * changed ccd-order, now based on optical_resolution
+ and added new routine umax_forget_line
+
+ * added inquiry-block for UC1200S: NOT TESTED!
+
+ * added inquiry-block for UC1260: NOT TESTED!
+
+ * included print_inquiry into umax-scsi.c
+
+ * added correction-routine for x_res > 600 dpi, phys_width is
+ corrected in umax-scsi.c: bound_scanarea
+
+ * changed umax-scsi: sense_handler:
+ changed test for valid sense-block
+ added test for button pressed
+
+ * added output of sense-code and error-code in sense_handler
+
+ * added options to select calibratin and scan exposure times
+
+ * added options to select calibratin and scan lamp density
+
+ * moved all option-names/titles/descr. to saneopts.h
+
+ * combined bind for highlight, shadow, analog-gamma and new
+ exposure time functions to rgb-bind
+
+ * added set_WD_line_arrangement(buffer_r, WD_line_arrengement_by_driver);
+ if driver is doing color-ordering from line to pixel
+
+ * included umax-scsi.c into umax.c
+
+ * included umax-struct.h into umax.h
+
+ * included US-structure into Umax_Device-structure
+
+ * added free(scanner->device->buffer) to sane_close
+
+ * added free(scanner->device->pixelbuffer) to sane_cancel
+
+ * added free(scanner->device->pixelbuffer) to do_cancel
+
+ * added SANE_UNIT_MICROSECOND to exposure-times
+
+ * added output of status-string in wait_scanner
+
+ * moved some options for Scan-mode-block to Enhancemant-block
+
+sane-0.72 -> 0.73
+-----------------
+
+ * disabled RGB_BIND if no such value is available
+
+ * included readproc
+
+ * included bound_scanarea into check_values, problem
+ with wrong scanarea for UTA should be solved now!
+
+ * all scanmode- and scansource-strings are #DEFINEd now
+
+sane-0.73 -> 0.74
+-----------------
+
+ * added support for 12/36 bits per pixel (for Astra 1220S)
+
+ * added support for Astra 1220S
+
+ * included inquiry data for UG80 (Escom Image Scanner 256)
+
+ * moved WAIT_SCANNER from umax_read_data to umax_read_image_data,
+ umax_read_shading_data now works!
+
+ * added umax_start_scan at the end of calibration by driver,
+ the scanner does not hang any more if quality calibration is enabled!
+ There must'nt be a "wait_scanner" in calibration by driver routine!!!
+
+ * added usage of driver internal values for calibration by driver if
+ the scanner does not give back the informations about the shading data:
+ width = dev->width * dev->inquiry_optical_res ( * 3 in RGB-mode )
+
+ * added 2 calibration-routines:
+ - use last line for shading data
+ - calculate average value for shading data
+ - prepared routine for complex calculation
+
+ * added gamma download curve format type 0 and 1
+
+ * defined gamma DCF = 1 for UC1200S and UC1260
+
+ * defined gamma DCF = 0 for UC1200SE and ARCUS PLUS
+
+ * changed sense_handler: if bad sense_key => DEVICE_BUSY
+ problem with black area at top of scan for some SCSI-adapters is solved now
+
+ * changed wait_scanner: waits 0.5 sec now
+
+ * disabled quality calibration in preview mode
+
+ * made upper_left_x and upper_left_y even values
+ it looks like even resolutions > 600 dpi work now!
+ (not ok!!!)
+
+ * added sigterm_handler for umax_reader_process
+ changed sane_canel, do_canel and do_eof(=close_pipe),
+ cancel now works!
+
+ * changed trim_rowbufsize that made problems with SGI,
+ there has been an overflow because of big buffersize
+
+
+sane-0.74 -> 1.00 (build 0)
+---------------------------
+
+ * added output of umax-backend-version in sane_init
+
+ * added support for Linotype Hell Jade2 (Vobis ScanBoostar Premium)
+ SCSI-ID "LinoHell","Office2"
+
+ * changed base of calculation of scanwidth and scanlegth from
+ pixel to resolutionbase (1/300, 1/600 or 1/1200 inch)
+ problem with wrong pixelcount at higher resolutions should be
+ solved now
+
+ * changed selection for calibration mode
+
+ * changed calculation for width in pixels for lineart and halftone mode
+
+ * added inquiry for UMAX UC1200SE
+
+ * corrected 12/36-bit-mode in send_gamma_data and array in umax.h
+
+ * added support for Gemini D-16
+
+
+sane-1.00-build-0 -> build-1
+-----------------------------
+
+ * added support for Nikon AX-210
+
+ * changed all grey to gray (David Mosberger asked for it)
+
+ * changed bug in gray gamma table conversion
+
+ * added Linotype Hell Saphir 2 as supported scanner
+
+ * changed umax-uc1260.h
+
+ * added "- 1" in umax_order_line:
+ else if (dev->pixelline_opt_res < length * 3 - CCD_distance * 3 - 1)
+ else if (dev->pixelline_opt_res < length * 3 - CCD_distance - 1)
+
+ * changed all allloca() to malloc() + free()
+
+ * removed options speed and smear, I got the info from umax that
+ these values should never be changed!
+
+ * removed ten_bit_mode and twelve_bit_mode options, added option bit_depth
+ and added support for 9, 14 and 16 bpp
+
+ * replaced u10_range and u12_range by dynamically set scanner.output_range
+
+ * removed static allocation for gamma_table[0..3], this is done dynamically
+ in sane_open and freed in sane_close now.
+
+ * added an empty string to the end of scan_mode_list and source_list
+
+build-1 -> build-2
+------------------
+
+ * added "*info |= SANE_INFO_RELOAD_PARAMS;" in control_option set bit_depth
+
+ * added inverted calibration modes for Astra 6X0S scanners.
+
+
+build-2 -> build-3 (sane-1.0.1)
+-------------------------------
+
+ * inversion of calibration is automatically set for Astra 6X0S and Vista S6E
+
+ * check for machine endianess is done only at backend start now!
+
+ * made umax_do request_sense static
+
+
+build-3 -> build-4
+------------------
+
+ * Added option name and parameter in debug output in option set value
+
+ * Added option name in debug output in option get value
+
+ * Changed calculation of pixels/line and lines, may be the problem
+ with shaered images at resolutions>600 dpi is solved now
+ later Remark: This error does still occur, but not so often!
+
+
+build-4 -> build-5
+------------------
+
+ * Changed calculation in umax_order_line, color images should
+ have the correct length now for Astra 6X0S and Vista S6E
+
+ * Added DOR resolutions and area
+
+
+build-5 -> build-6
+------------------
+
+ * Bits for ADF and UTA in driver internal inquiry block (old UMAX scanners)
+ are set dynamically now.
+
+ * Added Genius ColorPage-HR5 (vendor KYE) (=Astra 1200S) as supported scanner
+
+ * Added Astra 2400S as experimentally supported scanner
+
+ * Added pauses for Astra 2400S
+
+ * Removed reposition_scanner at start of scan, Astra 2400S does not work with it!
+
+ * changed debug output in correct_inquiry
+
+ * for UMAX S12 the driver does not wait any more until scanner is repositioned
+ this is experimental, it may work with other scanners too!
+
+
+build-6 -> build-7
+------------------
+
+ * changed some int -> unsigned int (resolution and scanwidth etc)
+
+ * calculate_pixel is called with right values in UTA mode now.
+
+ * if DOR resolution is not defined and DOR is available
+ the DOR resolution is set to double standard resolution
+
+ * removed wait_scanner after set_window-command
+
+ * added Mirage D16-L as supported scanner
+
+ * Astra 2400S works stable now
+
+
+build-7 -> build-8
+------------------
+
+ * for Mirage D-16L the driver does not wait any more until scanner is repositioned
+ this is experimental, it may work with other scanners too!
+
+ * Mirage D-16L does not give back informations for calibration by driver,
+ added new modus that "guesses" the values for Mirage D-16L.
+
+ * Added read_shading_data to 16 bit calibration routine and made a routine for
+ averaging with low byte first and one for high byte first
+
+ * Byte order (HBT) is set always (also in lineart and halftone)
+ because it is used in driver calibration
+
+ * Added relevant_*_res the is set to normal or double resolution values
+
+ * Added test if scsi buffer is large enough for one shading line
+
+ * selection for Calibration mode, Shading type and Speed/Smear
+ are only compiled in if define is set in umax.h
+
+
+build-8 -> build-9
+------------------
+
+ * slow speed options is preset for Vista T-630
+
+ * speed/smear can be set now (forgotten #ifdef)
+
+ * selection of exposure times now is only available if it is enabeld
+
+ * gamma table is disabled in lineart and halftone modes
+
+ * if image is transmitted completly sane_read (close_pipe)
+ returns with SANE_STATUS_GOOD in adf mode and in any other case
+ with SANE_STATUS_EOF
+
+
+build-9 -> build-10
+-------------------
+
+ * removed change about sane_read returns SANE_STATUS_GOOD in ADF mode
+
+ * transformed all gif files into jpeg format because of all the
+ trouble about the gif licence. Will never use gif again!
+
+ * added correction for inquiry-ADF-bit for Astra 2400S
+
+ * added second test method to detect ADF error in sane_start:
+ inquiry block is read and cover open, jammed and no paper is tested
+
+
+build-10 -> build-11
+--------------------
+
+ * test for adf errors (sane_start) is now only done if adf is selected
+
+
+build-11 -> build-12
+--------------------
+
+ * moved adf error tests from sane_start to umax_start_scan
+
+ * sane_control_option: printing option name is set to "(none)" if pointer is NULL
+
+ * added error message after each call of sanei_scsi_cmd
+
+ * changed manipulation of ADF bit for Astra 2400S in umax_correct_inquiry
+ from dev->adf to set_inquiry_sc_adf()
+
+
+build-12 -> build-13
+--------------------
+
+ * changed inquiry data of UC1200SE
+
+ * added set_inquiry_CBHS(50) in correct_inquiry for UC1200SE
+
+ * correct_inquiry is called for scanners with short inquiry now
+
+ * dev->inquiry_max_calib_lines is preset to 66,
+ problem with Vist S6E V1.6 should be solved this way.
+
+ * inquiry block parameters > 0x93 are only used if block is long enough
+
+
+build-13 -> build-14
+--------------------
+
+ * changed inquiry_cbhs_[min,max] -> inquiry_[contrast, brightness, threshold,
+ highlight, shadow]_[min,max] and set correct values for CBHS_255 and CBHS_50
+
+ * changed cbhs_str[CBHS_50] from "78-178" to "0-50"
+
+ * changed umax-uc1200se.h inquiry byte 0x64 bit 5 to 0 (gamma download format != 2)
+ and wdb len from 0x30 to 0x31
+
+ * disabled halftone pattern download, and halftone dimension selection - not ready
+ preselected is a 8x8 built in halftone pattern
+
+ * removed set_inquiry_CBHS(50) from correct_inquiry for UC1200SE
+
+ * added "Astra 2200 " as supported scanner
+
+ * added cast from (void *) to (unsigned char*) in umax_send_gamma_data
+
+
+build-14 -> build-15
+--------------------
+
+ * add "(unsigned)" to option number test in sane_control_option
+
+ * for Astra 1200 the driver does not wait any more until scanner is repositioned
+ this is experimental, it may work with other scanners too!
+
+
+build-15 -> build-16
+--------------------
+
+ * OPT_SOURCE: removed change of width/height and "*info |= SANE_INFO_RELOAD_PARAMS;"
+ from get_value to set_value and added "*info |= SANE_INFO_RELOAD_OPTIONS;"
+
+
+build-16 -> build-17
+--------------------
+
+ * changed calibration mode from SHADING_TYPE_AVERAGE_INVERT to SHADING_TYPE_AVERAGE
+ for UMAX S-6E, UMAX S-6EG and Vista-S6E
+
+ * changed several int -> unsigned int
+
+ * added support for sanei_scsi_open_extended and variable scsi buffer size
+
+
+build-17 -> build-18 (sane-1.0.2)
+---------------------------------
+
+ * some cosmetic changes of the form
+ if (..) {...}
+ =>
+ if (..)
+ {
+ ...
+ }
+
+ * removed unnecessary SHADING_TYPE-handling routines for UMAX S-6E, UMAX S-6EG and Vista-S6E
+
+ * scsi buffer is only reallocated when size has changed
+
+
+build-18 -> build-19
+--------------------
+
+ * added UMAX PowerLook III as supported scanner
+
+ * added EPSON Perfection600 as supported scanner (is a Astra 1200S)
+
+ * type of option 0 (Option numbers) is set to SANE_TYPE_INT now (undefined before)
+
+ * removed bug that mixed 12 bit and 14/16 bit gamma table when 14 or 16 bit are supported
+ and changed value range of grey custom gamma table:
+ - maximum output value is 255 for 8 bits/pixel
+ - maximum output value is 65535 for 9-16 bits/pixel
+ the custom gamma table does work now with 9-16 bits/pixel output mode
+
+ * added routine that reverses bit order in lineart mode when scanner sends LSB first in lineart
+
+
+build-19 -> build-20
+--------------------
+
+ * added variable calibration_width_offset, Mirage D-16L offset of 308 is defined there
+ and added offset of 28 for PowerLook III
+
+ * umax_do_calibration: guessed calibration data vaules use 2 bytes/color if scanner
+ supports gamma input bit depth supports 2 bytes/color
+
+ * calibration by driver now does work for PowerLook III
+
+ * added function umax_set_rgb_bind() that sets the sensitivity of some options
+ that make available different settings for RGB. This function now is called
+ when scanmode is selected.
+
+ * changed some int to unsigned int
+
+ * made dev->pause_after_reposition = -1; as default, so as default sane-umax does not wait
+ any more while the scanhead is moving back - this may break the support of some scanners
+ so it may have to be changed (dev->pause_after_reposition = 0;) for some scanners.
+ reported to work for:
+ - Supervista S12
+ - PowerLook III
+ - Astra 2200
+
+
+build-20 -> build-21 (sane-1.0.3)
+---------------------------------
+
+ * Added Linotype "JADE" as supported scanner
+
+ * Removed bug in sane_close that caused segfault when
+ sane_close was called twice with the same scanner handle
+
+build-21 -> build-22
+--------------------
+
+ * replaced fgets() by sanei_config_read()
+
+ * added command queueing for scsi read commands
+ - removed WAIT_SCANNER scsi command call after read command
+ - the additional buffers are allocated in the reader process
+ - the number of buffers can be defined in umax.conf
+ with option scsi-maxqueue [1..8] default:2
+ (did some tests with Supervista S12 and PowerLook III
+ on the same scsi controller (ncr53c810):
+ command queueing works, it is possible to start
+ both scanners at the same time. The scanner with the
+ higher scsi-ID (=priority) does scan without stops,
+ the other scanner has to wait long time between the
+ scsi-read commands, it also is possible to give
+ bothe scanners different scsi command queueing depth).
+
+ * prepared replacement of pipe by sanei_ipc_* routines
+
+ * added routines umax_get_lamp_status and umax_set_lamp_status
+
+ * updated inquiry output (new bits from powerlook scsi protocol 1.0 X101)
+
+ * added new (powerlook scsi protocol 1.0 X101) window descriptor block entries to umax-scsidef.h
+
+ * added button protocol (3 buttons, from powerlook scsi protocol 1.0 X101)
+
+ * added button "lamp off" to turn off scanner lamp
+ (this option may be remoeved again in later version, may be
+ it will be replaced by an autmatic lamp turn off function)
+
+ * added options to umax.conf
+ lamp-off-at-exit [01] default:0
+ lamp-off-time [10..720] (in minutes) default:30
+
+ * if lamp_off_at_exit == 1 and lamp_control_available == 1
+ the scanner lamp is turned off in sane_close
+
+ * renamed umax-scanner.h and umax-"scannername".h to umax*.c
+ because these files create data code
+
+
+build-22 -> build-23
+--------------------
+
+ * scsi commands set/get lamp control are send with a command length of
+ 10 bytes instead of 6 bytes and control bit #7 is in byte 0x03
+ and not in byte 0x04 (it is described incorrect in the umax doc)
+
+ * enabled lamp control for Astra 2200
+
+ * removed umax.conf options lamp-off-at-exit and lamp-off-time
+
+ * added frontend option lamp-off-at-exit
+
+ * added frontend option lamp-on
+
+ * forcing calibration_bytespp = 1 for Astra 2200 - quality calibration does work now
+
+ * for Astra 2200 selection for different x/y resolutions is disabled
+
+
+build-23 -> build-24 (sane-1.0.4)
+--------------------
+
+ * forcing calibration_bytespp = 1 for Astra 2100S
+
+ * Added Astra 2100S as supported scanner
+
+ * enabled lamp control for Astra 2100S
+
+ * Added warning in sane_control_option if option could not be set
+
+
+build-24 -> build-25
+--------------------
+
+ * dev->lamp_control_available is preset to 0
+
+ * dev is erased (0) after it is allocated
+
+ * added special options for PowerLook 3000:
+ - calibration is done for each CCD pixel
+ - calibration_bytespp is set to 1
+ the scanner still is not listed as supported scanner because
+ the changes are not tested
+
+ * added options that are read from umax.conf:
+
+ - execute-request-sense:
+ values: 0=disabled, 1=enabled, default=0
+ If set to 1 umax_do_request_sense is called in umax_do_calibration.
+ This can hang the system (but has been enabled until this version)
+
+ - scsi-buffer-size-min, scsi-buffer-size-max:
+ values: 4096-1048576, default min=65536, max=131072
+
+ - scan-lines, preview-lines:
+ values: 1-65535, default scan-lines=40, preview-lines=10
+ define the maximum number of lines that are scanned into one buffer
+
+ - force-preview-bit-rgb:
+ values: 0=disabled, 1=enabled, default=0
+ set preview bit in rgb real scan
+
+ - slow-speed, care-about-smearing:
+ values: -1=auto, 0=disabled, 1=enabled, default=-1
+ dangerous options, needed for some scanners
+
+ - calibration-full-ccd:
+ values: -1=auto, 0=disabled, 1=enabled, default=-1
+ do calibration for each pixel of ccd instead of selected image
+
+ - calibration-width-offset:
+ values: -1=disabled, >=0 set value
+ add an offset width to the calculated with for image/ccd
+
+ - calibration-bytes-pixel:
+ values: -1=disabled, 0=not set, 1=1 byte/pixel, 2=x bytes/pixel
+ use # bytes per pixel for calibration
+
+ - invert-shading-data:
+ values: -1=auto, 0=disabled, 1=enabled, default=-1
+ invert shading data before sending it back to the scanner
+
+ - lamp-control-available:
+ values: 0=automatically set by driver - if known, 1=available, default=0
+
+ * updated html-documentation
+
+ * updated sane-umax.man
+
+ * added pre focus options (PowerLook 3000):
+ - FP - fix focus position
+ - FDC - lens calibration in doc position
+ - PF - disable pre focus
+ - LCL - use 0.6/0.0mm holder focus position
+
+ * added #define SANE_I18N(text) text to umax.c. This is to mark the backend
+ specific texts that shall be translated by the frontend
+
+
+build-25 -> build-26
+--------------------
+
+ * added umax.conf option handle-bad-sense-error #
+
+ * added Mirage II as supported scanner
+
+ * added routine umax_set_max_geometry that defines available surface
+ and resolution in dependance of scansource and double optical resolution
+ (before this bugfix the change of dor mode overwrote the settings of
+ scansource and vice versa)
+
+ * added ESCORT Galleria 600S as supported scanner, is an Astra 600S
+
+ * removed if (config_line[len - 1] == '\n')... while reading config file
+
+ * changed some static unsigned int to static int
+
+ * sane_exit does free devlist
+
+ * added some options for Powerlook 3000 - still is not completly supported
+
+
+build-26 -> build-27
+--------------------
+
+ * added Linotype Saphir4 as supported scanner (is a Powerlook III)
+
+ * increased length of vendor, product and version by 1 to make sure the
+ string always ends with '\0'
+
+ * changed default minimum scsi buffer size from 64KB to 32 KB
+
+
+build-27 -> build-28
+--------------------
+
+ * removed "#include <assert.h>" from umax.c, assert() is never called
+
+ * added UMAX Powerlook 3000 as supported scanner
+
+ * bugfix for 3 pass scanning:
+ reposition_scanner is called in sane_start for 2nd and 3rd pass of 3 pass scan
+
+
+ * bugfix for UTA and DOR geometry offsets:
+ - added inquiry_uta_x_off and inquiry_uta_y_off
+ - geometry ranges are defined from xoff..xoff+dx, yoff..yoff+dx now
+ - check_values also does test for this range
+ - removed dev->maxwidth and dev->maxlength, values are calculated in place now
+
+ * bugfix for DOR:
+ - bottom-right edge keeps in position if possible when DOR is switched on
+
+ * bugfix for Astra 600S and 610S color mode:
+ - scale_y is set to 0.5 if y_resolutions is smaller than optical_res/2
+ this does fix the color scan problems for Astra 610S.
+
+ * added Heidelberg Linoscan 1400 "HDM LS4H1S" as supported scanner
+
+
+build-28 -> build-29
+--------------------
+
+ * removed bug in umax_set_max_geomentry: now left y keeps in position when possible
+
+ * rgb bind keeps unchanged when scanmode != color (only gray selection active in this case)
+
+ * in function static int umax_give_scanner(Umax_Device *dev) moved umax_reposition_scanner(dev);
+ to the end of the function
+
+ * set calibration area for astra 2200 to full ccd and calibration_bytespp to 2
+
+ * UC840 does wait in reposition_scanner until scan head stops moving
+
+ * set minimum resolution to 5 (was 1 before what could make problems)
+
+
+build-29 -> build-30
+--------------------
+
+ * added EDGE KTX-9600US as supported scanner
+
+ * Changing scansource does not change lower left selection edge
+ if not necessary
+
+
+build-30 -> build-31 (sane-1.0.6)
+---------------------------------
+
+ * sane-umax.man uses @LIBDIR@ and @CONFIGFIR@
+
+ * changed automatic calibration_width_offset marker from -1 to -99999
+
+ * changed
+ dev->calibration_area to 1 and
+ calibration_width_offset to -1 and
+ inquiry_max_calibration_data_lines to 66
+ for UMAX Supervista S-12, LinoHell Office and LinHell JADE
+
+
+build-31 -> build-32 (sane-1.0.7)
+---------------------------------
+
+ * added Nikon AX-110 as supported scanner (Vista S6E)
+
+ * added umax.conf option "gamma-lsb-padded" with options:
+ -1 = auto
+ 0 = inactive (msb padded)
+ 1 = active (lsb padded)
+ activated for astra 1220s, internal 12 bit gamma correction does work now
+
+
+build-32 -> build-33
+--------------------
+
+ * added USB support for Astra 2200
+ thanks to Frank Zago <fzago@greshamstorage.com>
+ for creating umax-usb.c and suggesting several changes to umax.c
+
+ * added umax.conf option "connection-type", values: 1=scsi, 2=usb
+
+ * added umax.conf device selection "usb 0x1606 0x0230" (usb vendor_id product_id)
+
+ * removed #ifdef HAVE_SANEI_IPC parts (SANEI_IPC was never defined)
+
+
+build-33 -> build-34 (sane-backends-1.0.8)
+--------------------
+
+ * removed bug in reader_process / umax_queue_read_image_data:
+ - the integer value that keeps the length information is kept valid
+ as long a queued scsi command is still running now
+ - when the scsi command returns with less data than requested
+ then the routine does handle this correct now
+ (before the routine handled this as if the requested amount of
+ data was returned)
+
+ * backend waits until scanhead has repositioned after scan for UMAX UC1260
+
+ * y_dpi quanitsation is set to 5 (same as x_dpi quantisation - was 1)
+
+
+build-34 -> build-35
+--------------------
+
+ * changed ID string "LS4H1S " to "LS4H1S " (remove one space)
+
+ * activated lamp control for Astra 1220S V1.5
+
+
+build-35 -> build-36
+--------------------
+
+ * added PowerLook 2100XL as supported scanner
+
+ * settings for PowerLook 2100XL:
+ calibration_width_offest = 52
+ (calibration_bytespp = 2, default)
+ (calibration area = image, default)
+
+ * force_quality_calibration defined for PowerLook 2100XL:
+ (normal calibration mode expects different calibration_width_offsets
+ for PowerLook 2100XL, so it is not possible to calculate the correct
+ number of calibration pixels in normal calibration mode)
+ - disable quality calibration option for frontend
+ - always set quality calibration bit when scanning
+
+ * changes for exposure times:
+ - Inquiry does print correct maximum value now
+ - changed variable type from SANE_FIXED to SANE_INT
+ - exposure times setting for colormode does work correct now
+ - as default there is only one common setting for exposure times in rgb mode,
+ added umax.conf option exposure-time-rgb-bind to enable different settings
+ for each color
+ - added option select-calibration-exposure-time, disabled by default.
+ if disabled then the calibration expousre times are the same as the scan exposure times
+
+ * added UMAX PS-2400X as supported device
+
+ * added batch scanning support:
+ Options:
+ --batch-scan-start: calibration, scan, scanhead is not moved into home position
+ --batch-scan-loop: no calibration, scan, scanhead is not moved into home position
+ --batch-scan-end: no calibration, scan, scanhead is moved into home position
+ --batch-next-tl-y: defines the y start position of the bext batch scan
+
+ - calibration for batch scan needs a different offset and always is done for full ccd.
+ PowerLook 2100XL: calibration_width_offset_batch = 1052
+ Powerlook III: calibration_width_offset_batch = 828
+
+
+build-36 -> build-37
+--------------------
+
+ * added Linotype Hell SAPHIR3 as supported scanner
+
+ * if batch-next-tl-y is not set then the backend uses br_y
+
+
+build-37 -> build-38 (sane-backends-1.0.9)
+--------------------
+
+ * added Power Look 2000 as supported scanner
+
+
+build-38 -> build-39 (sane-backends-1.0.10)
+--------------------
+
+ * Power Look 2000: corrected wrong calibration-width-offset from 52 to 22
+ and added calibration-width-offset-batch to 24
+
+ * initialized some global pointers and num_devices in sane_init
+
+ * replaced fork() by thread for OS2
+
+build-39 -> build-40 (sane-backends-1.0.12)
+--------------------
+
+ * UC630: dev->pause_after_reposition = 0
+
+
+build-40 -> build-41 (sane-backends-1.0.13)
+--------------------
+
+ * Astra 2200 SU via USB connection: quality calibration is reset and not selectable
+
+
+build-41 -> build-42
+--------------------
+
+ * replaced fork() routines by sanei_thread routines
+
+ * added call sanei_scsi_req_flush_all(); to do_cancel - in threaded case this is not done when reader_process is cancled
+
+ * in reader_process: marked freed scsi buffers as freed(NULL). This is necessary when reader_process is run as thread!
+
+ * Backend is compatible to Mac OS-X now.
+
+
+build-42 -> build-43
+--------------------
+
+ * DOR mode does test for non negative upper_left_x values, set to 0 if negative
+
+
+build-43 -> build-44
+--------------------
+
+ * the sense_hanlder stores the sense data in buffer[0] when valid sense data is avialable
+
+ * do_calibration:
+ - corrected bug in reading calibration width from scanner (added /bytespp)
+ - when additional request sense is not called then the buffer is not erased,
+ the sense data from the sense_handler is used
+ - when additional request sense is called then the buffer is erased at first
+
+build-44 -> build-45
+--------------------
+
+ * added defualt options for Linotype Opal2
+ * changed bug in highlight-blue function (using green value)
+
diff --git a/doc/umax/umax.FAQ b/doc/umax/umax.FAQ
new file mode 100644
index 0000000..0901a2c
--- /dev/null
+++ b/doc/umax/umax.FAQ
@@ -0,0 +1,147 @@
+-------------------------------------------------------------------------------
+
+Q: I am using an Astra 2200 Scanner and can do a preview scan but the scanner
+ hangs or produces bad images when I start a final scan.
+
+A: Disable the option "quality calibration". This does not reduce the image
+ quality, the scanner reports it can do a quality calibration but that is
+ not true for the current firmware version.
+
+-------------------------------------------------------------------------------
+
+Q: What scsi controller shall I use for UMAX scsi scanners?
+
+A: The controller cards that come with UMAX scanners are very simple ones
+ and I suggest not to use this cards.
+
+ I like the ncr53c8xx (=symbios-loigc53c8xx = lsi53c8xx) controllers because
+ they are not too expensive and I had very good results with these cards.
+ Especially the ncr53c810 is very interesting for scanning because this
+ are fast scsi controllers which allow long scsi cables.
+
+ The Adaptec 2904 controllers seem to make problems with UMAX scanners on
+ linux.
+
+-------------------------------------------------------------------------------
+
+Q: I want to use the scsi-card that comes with my umax scanner.
+ What card is it and is it supported by my os?
+
+A: There are at least two kind of scsi controller cards that
+ come with UMAX scanners.
+
+ ISA-Card:
+ The ISA-cards that come with the umax scanners are very simple cards.
+ I suggest not to use these cards.
+
+ If you really want to try:
+ the UDS-IS11 ISA-card is a DTC3181E-card based on the NCR5380-chip.
+ 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: dtc3181e=0x280,255
+ or use the following command:
+
+ insmod g_NCR5380 ncr_irq=255 ncr_addr=0x280 dtc3181e=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
+
+ (Thanks to Colin Brough and Hans Schaefer for that tip)
+
+
+ PCI-Card:
+ Some UMAX Scanners come with a PCI SCSI controller card DOMEX DMX3191E.
+ This card shall be compatible to the Advansys ABP940U (Chip: Advansys
+ ASC3030). The card shall work without problems with the Advansys SCSI
+ driver for linux.
+
+ (Thanks to Volker Ossenkopf for that tip)
+
+-------------------------------------------------------------------------------
+
+Q: I use linux with a NCR/Symbios logic SCSI-Controller, sane does not work
+ right.
+
+A: There are two differen drivers in the linux Kernel/modules.
+ Use the BSD-driver ncr53c8xx or sym53c8xx.
+
+-------------------------------------------------------------------------------
+
+Q: I am using an AM53C974 based scsi card with a umax scanner, the system
+ freezes when I start a scan, what can I do?
+
+A: Try the recent driver for the scsi card, take a look at:
+ http://www.garloff.de/kurt/linux/dc390/index.html
+
+-------------------------------------------------------------------------------
+
+Q: Will there be a support for the UMAX-parallel-port-scanners?
+
+A: Since sane-1.0.5 there is a separate sane-umax-pp backend that does
+ support (some) umax parallel port scanners.
+
+-------------------------------------------------------------------------------
+
+Q: Will there be a support for the UMAX-USB-scanners?
+
+A: UMAX published their SCSI-protocol for scanners. However they have not so far
+ published USB protocols. This seems to be because they are using an ASIC that
+ is produced by someone else and they had to subscribe an NDA.
+ Without the protocol documentation it really is hard to write a driver.
+ I will not work on a driver.
+
+ The Astra 2200W does work when connected via SCSI.
+ It could work with SCSI-via-USB-driver and connected via USB, but that
+ is not tested.
+
+-------------------------------------------------------------------------------
+
+Q: I get a black area at the top of the image. What's wrong?
+
+A: This is a problem of some scsi-drivers.
+ Update the driver for your scsi-adapter or update the operating system/kernel.
+
+ For advansys-scsi-cards update to a new kernel which includes at least
+ the driver version 3.1E of the advansys-scsi-driver. Take a look at:
+ http://www.advansys.com/linux.htm
+
+-------------------------------------------------------------------------------
+
+Q: Does SANE and the umax backend work on LinuxPPC / big endian machine ?
+
+A: There are people using the sane-umax on a LinuxPPC (big endian) machine.
+
+ Other people write that they can not scan on a LinuxPPC. It looks like this
+ is a problem with the driver of the scsi card.
+
+ The "MESH" SCSI card is reported to work. The NCR53C94 SCSI card
+ seems not to work.
+
+-------------------------------------------------------------------------------
+
+Q: SANE hangs or crashes when I start a frontend for sane, what can I do?
+
+A: Sometimes the backends that are not used make problems.
+ Edit /usr/(local)/etc/sane.d/dll.conf
+ and comment out everything but the backend you need.
+
+-------------------------------------------------------------------------------
+
+Q: compiling sane aborts with error "virtual memory exhausted"
+ on slackware linux with gcc. What goes wrong?
+
+A: The optimization set by "-O2" makes problems, try which one of the following
+ calls work:
+
+ make CFLAGS="-g -Wall -O1"
+ make CFLAGS="-g -Wall -O"
+ make CFLAGS="-g -Wall"
+
+-------------------------------------------------------------------------------
+
+You find a lot of tips and informations in the internet. E.g. take a look
+at http://www.scantips.com
+
+
diff --git a/doc/umax/umax.TODO b/doc/umax/umax.TODO
new file mode 100644
index 0000000..6af64b6
--- /dev/null
+++ b/doc/umax/umax.TODO
@@ -0,0 +1,22 @@
+TODO UMAX BACKEND FOR SANE
+==========================
+
+ * When depth>8 then it is necessary to create the gray gamma
+ table with the correct depth
+
+ * Astra 2200: enable option resolution bind for grayscale/lineart
+ it must be disabled and set "true" for color mode
+
+ * change set_window if (dev->do_color_ordering != 0) {..}
+ one of the settings makes an error for Astra 6X0S scanners
+
+ * include push-button function to SANE_START (?)
+
+ * add builtin halftone pattern selection
+
+ * add halftone pattern doenload, dimension selection
+
+
+ - I will NOT add support for parallel-port and USB scanners to this backend!
+ Don`t ask for it.
+