[sane-devel] automate scanner work

Tom Miller tom@hostwebase.com
Fri, 17 Jun 2005 11:46:50 -0400


I need some help and direction to where or whom to talk to.
I need to stream line or automate the scanner process for 
Linux.

I am looking for some help to write a driver and some other 
functions for a scanner project.
Let me know if you are interest in helping out or for a fee.

I want to automate the scanner process.  Turn it into a fax 
alike.
You know how we only need to push one button on the fax 
machine.  That is how I 
would like to see a scanner able to perform.

Having said that, I am looking for someone who can help me to 
write a USB driver, interface that allow the system to 
automate the process.


Please write me at tom@hostwebase.com if you can and 
interested.

Thanks,

Tom




---- Original message ----
>Date: Fri, 17 Jun 2005 17:26:52 +0200
>From: Till Kamppeter <till.kamppeter@gmx.net>  
>Subject: [sane-devel] IScan 1.14.0 startup delay, not 
working Perf 2450, not compiling on Mandriva LE2005/gcc 
3.4.3  
>To: Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>, SANE list 
<sane-devel@lists.alioth.debian.org>
>
>libusb: 0.1.8
>kernel: 2.6.11
>
>I am trying to get an Epson Perfection 2450 and 4180 to work 
on the 
>distro mentioned in the subject.
>
>At first I tried /home/test/iscan-1.14.0-3.i386.rpm, but 
iscan had a 
>long delay to start up with both with the Perfection 4180 
and 2450 
>Photo. The 4180 actually worked, once the iscan window was 
open. Also 
>multiple page scanning with the pages initiated by the 
scanner's button 
>works. The 2450 did not work.
>
>Here the debug output for the 2450 Photo (in epkowa.conf 
only "usb" line 
>is active, in dll.conf "epson", "plustek", and "snapscan" 
are commented 
>out):
>
>-------------------------------------------------------------
----------------
>[test@majax ~]$ SANE_DEBUG_EPKOWA=255 iscan
>[sanei_debug] Setting debug level of epkowa to 255.
>[epkowa] sane_init: iscan 1.14.0
>[epkowa] sane_init, ># epkowa.conf -- sample configuration 
for the 
>EPKOWA SANE backend<
>[epkowa] sane_init, ># Copyright (C) 2004  Olaf Meeuwissen<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, ># See sane-epkowa(5), sane-scsi(5) and 
sane-usb(5) 
>for details.<
>[epkowa] sane_init, ><
>[epkowa] sane_init, ># SCSI scanners can be configured 
simply by listing 
>the path to the<
>[epkowa] sane_init, ># device.  For example, if your system 
claims to 
>have a /dev/scanner<
>[epkowa] sane_init, ># SCSI device, all you have to do is 
uncomment the 
>following line:<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >#/dev/scanner<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, ># In the interest of maintainability, 
most 
>installations would have<
>[epkowa] sane_init, ># /dev/scanner sym-linked to the real 
SCSI scanner 
>device node.<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, ># An alternative way that works for 
many operating 
>systems and is a<
>[epkowa] sane_init, ># little bit more generic, is to have 
the backend 
>probe for your SCSI<
>[epkowa] sane_init, ># scanner with the following 
configuration command:<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >scsi EPSON<
>[epkowa] sane_init, ><
>[epkowa] sane_init, ># On systems with libusb, the following 
line is 
>sufficient to get the<
>[epkowa] sane_init, ># backend to recognise your USB 
scanners.  It 
>presumes, however, that<
>[epkowa] sane_init, ># the scanner---more precisely, it's 
USB product 
>ID---is known to the<
>[epkowa] sane_init, ># backend.<
>[epkowa] sane_init, ># For all USB scanners that are 
officially 
>supported by this backend,<
>[epkowa] sane_init, ># this presumption is true.  A list of 
such 
>scanners can be found in<
>[epkowa] sane_init, ># sane-epkowa(5).<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >usb<
>[epkowa] attach_one_usb()
>[epkowa] SANE EPKOWA Backend 1.14.0 - 2005-02-18
>[epkowa] attach(, 3)
>[epkowa] attach: opening
>[epkowa] attach_one_usb(libusb:001:086)
>[epkowa] SANE EPKOWA Backend 1.14.0 - 2005-02-18
>[epkowa] attach(libusb:001:086, 3)
>[epkowa] attach: opening libusb:001:086
>[epkowa] Found valid EPSON scanner: 0x4b8/0x112 
(vendorID/productID)
>[epkowa] send buf, size = 2
>[epkowa] buf[0] 1b .
>[epkowa] buf[1] 40 @
>[epkowa] receive buf, expected = 1, got = 0
>[epkowa] get_identity_information()
>[epkowa] send buf, size = 2
>[epkowa] buf[0] 1b .
>[epkowa] buf[1] 49 I
>[epkowa] receive buf, expected = 4, got = 4
>[epkowa] buf[0] 02 .
>[epkowa] buf[1] 12 .
>[epkowa] buf[2] 6a j
>[epkowa] buf[3] 00 .
>[epkowa] code   02
>[epkowa] status 12
>[epkowa] count  106
>[epkowa] receive buf, expected = 106, got = 106
>[epkowa] buf[0] 42 B
>[epkowa] buf[1] 38 8
>[epkowa] buf[2] 52 R
>[epkowa] buf[3] 32 2
>[epkowa] buf[4] 00 .
>[epkowa] buf[5] 52 R
>[epkowa] buf[6] 3c <
>[epkowa] buf[7] 00 .
>[epkowa] buf[8] 52 R
>[epkowa] buf[9] 48 H
>[epkowa] buf[10] 00 .
>[epkowa] buf[11] 52 R
>[epkowa] buf[12] 4b K
>[epkowa] buf[13] 00 .
>[epkowa] buf[14] 52 R
>[epkowa] buf[15] 50 P
>[epkowa] buf[16] 00 .
>[epkowa] buf[17] 52 R
>[epkowa] buf[18] 5a Z
>[epkowa] buf[19] 00 .
>[epkowa] buf[20] 52 R
>[epkowa] buf[21] 64 d
>[epkowa] buf[22] 00 .
>[epkowa] buf[23] 52 R
>[epkowa] buf[24] 78 x
>[epkowa] buf[25] 00 .
>[epkowa] buf[26] 52 R
>[epkowa] buf[27] 85 .
>[epkowa] buf[28] 00 .
>[epkowa] buf[29] 52 R
>[epkowa] buf[30] 90 .
>[epkowa] buf[31] 00 .
>[epkowa] buf[32] 52 R
>[epkowa] buf[33] 96 .
>[epkowa] buf[34] 00 .
>[epkowa] buf[35] 52 R
>[epkowa] buf[36] a0 .
>[epkowa] buf[37] 00 .
>[epkowa] buf[38] 52 R
>[epkowa] buf[39] af .
>[epkowa] buf[40] 00 .
>[epkowa] buf[41] 52 R
>[epkowa] buf[42] b4 .
>[epkowa] buf[43] 00 .
>[epkowa] buf[44] 52 R
>[epkowa] buf[45] c8 .
>[epkowa] buf[46] 00 .
>[epkowa] buf[47] 52 R
>[epkowa] buf[48] d8 .
>[epkowa] buf[49] 00 .
>[epkowa] buf[50] 52 R
>[epkowa] buf[51] f0 .
>[epkowa] buf[52] 00 .
>[epkowa] buf[53] 52 R
>[epkowa] buf[54] 0a .
>[epkowa] buf[55] 01 .
>[epkowa] buf[56] 52 R
>[epkowa] buf[57] 2c ,
>[epkowa] buf[58] 01 .
>[epkowa] buf[59] 52 R
>[epkowa] buf[60] 40 @
>[epkowa] buf[61] 01 .
>[epkowa] buf[62] 52 R
>[epkowa] buf[63] 5e ^
>[epkowa] buf[64] 01 .
>[epkowa] buf[65] 52 R
>[epkowa] buf[66] 68 h
>[epkowa] buf[67] 01 .
>[epkowa] buf[68] 52 R
>[epkowa] buf[69] 90 .
>[epkowa] buf[70] 01 .
>[epkowa] buf[71] 52 R
>[epkowa] buf[72] e0 .
>[epkowa] buf[73] 01 .
>[epkowa] buf[74] 52 R
>[epkowa] buf[75] 58 X
>[epkowa] buf[76] 02 .
>[epkowa] buf[77] 52 R
>[epkowa] buf[78] d0 .
>[epkowa] buf[79] 02 .
>[epkowa] buf[80] 52 R
>[epkowa] buf[81] 20
>[epkowa] buf[82] 03 .
>[epkowa] buf[83] 52 R
>[epkowa] buf[84] 84 .
>[epkowa] buf[85] 03 .
>[epkowa] buf[86] 52 R
>[epkowa] buf[87] b0 .
>[epkowa] buf[88] 04 .
>[epkowa] buf[89] 52 R
>[epkowa] buf[90] 40 @
>[epkowa] buf[91] 06 .
>[epkowa] buf[92] 52 R
>[epkowa] buf[93] 08 .
>[epkowa] buf[94] 07 .
>[epkowa] buf[95] 52 R
>[epkowa] buf[96] 60 `
>[epkowa] buf[97] 09 .
>[epkowa] buf[98] 52 R
>[epkowa] buf[99] 80 .
>[epkowa] buf[100] 0c .
>[epkowa] buf[101] 41 A
>[epkowa] buf[102] 40 @
>[epkowa] buf[103] 6a j
>[epkowa] buf[104] 40 @
>[epkowa] buf[105] 92 .
>[epkowa] type    B 0x42
>[epkowa] level   8 0x38
>[epkowa] option equipment is installed
>[epkowa] resolution (dpi): 50
>[epkowa] resolution (dpi): 60
>[epkowa] resolution (dpi): 72
>[epkowa] resolution (dpi): 75
>[epkowa] resolution (dpi): 80
>[epkowa] resolution (dpi): 90
>[epkowa] resolution (dpi): 100
>[epkowa] resolution (dpi): 120
>[epkowa] resolution (dpi): 133
>[epkowa] resolution (dpi): 144
>[epkowa] resolution (dpi): 150
>[epkowa] resolution (dpi): 160
>[epkowa] resolution (dpi): 175
>[epkowa] resolution (dpi): 180
>[epkowa] resolution (dpi): 200
>[epkowa] resolution (dpi): 216
>[epkowa] resolution (dpi): 240
>[epkowa] resolution (dpi): 266
>[epkowa] resolution (dpi): 300
>[epkowa] resolution (dpi): 320
>[epkowa] resolution (dpi): 350
>[epkowa] resolution (dpi): 360
>[epkowa] resolution (dpi): 400
>[epkowa] resolution (dpi): 480
>[epkowa] resolution (dpi): 600
>[epkowa] resolution (dpi): 720
>[epkowa] resolution (dpi): 800
>[epkowa] resolution (dpi): 900
>[epkowa] resolution (dpi): 1200
>[epkowa] resolution (dpi): 1600
>[epkowa] resolution (dpi): 1800
>[epkowa] resolution (dpi): 2400
>[epkowa] resolution (dpi): 3200
>[epkowa] maximum scan area: x 27200 y 37440
>[epkowa] fbf tlx 0.000000 tly 0.000000 brx 215.899994 bry 
297.179993 [mm]
>[epkowa] send buf, size = 2
>[epkowa] buf[0] 1b .
>[epkowa] buf[1] 44 D
>[epkowa] receive buf, expected = 1, got = 1
>[epkowa] buf[0] 06 .
>[epkowa] send buf, size = 1
>[epkowa] buf[0] 10 .
>[epkowa] receive buf, expected = 1, got = 1
>[epkowa] buf[0] 06 .
>[epkowa] Max. supported color depth = 16
>[epkowa] send buf, size = 2
>[epkowa] buf[0] 1b .
>[epkowa] buf[1] 66 f
>[epkowa] receive buf, expected = 4, got = 4
>[epkowa] buf[0] 02 .
>[epkowa] buf[1] 12 .
>[epkowa] buf[2] 2a *
>[epkowa] buf[3] 00 .
>[epkowa] code   02
>[epkowa] status 12
>[epkowa] count  42
>[epkowa] receive buf, expected = 42, got = 42
>[epkowa] buf[0] 05 .
>[epkowa] buf[1] 00 .
>[epkowa] buf[2] 00 .
>[epkowa] buf[3] 00 .
>[epkowa] buf[4] 00 .
>[epkowa] buf[5] 00 .
>[epkowa] buf[6] 80 .
>[epkowa] buf[7] 00 .
>[epkowa] buf[8] 32 2
>[epkowa] buf[9] c0 .
>[epkowa] buf[10] 71 q
>[epkowa] buf[11] 00 .
>[epkowa] buf[12] 00 .
>[epkowa] buf[13] 00 .
>[epkowa] buf[14] 00 .
>[epkowa] buf[15] 00 .
>[epkowa] buf[16] 00 .
>[epkowa] buf[17] 00 .
>[epkowa] buf[18] 00 .
>[epkowa] buf[19] 00 .
>[epkowa] buf[20] 00 .
>[epkowa] buf[21] 00 .
>[epkowa] buf[22] 00 .
>[epkowa] buf[23] 00 .
>[epkowa] buf[24] 00 .
>[epkowa] buf[25] 00 .
>[epkowa] buf[26] 47 G
>[epkowa] buf[27] 54 T
>[epkowa] buf[28] 2d -
>[epkowa] buf[29] 39 9
>[epkowa] buf[30] 37 7
>[epkowa] buf[31] 30 0
>[epkowa] buf[32] 30 0
>[epkowa] buf[33] 20
>[epkowa] buf[34] 20
>[epkowa] buf[35] 20
>[epkowa] buf[36] 20
>[epkowa] buf[37] 20
>[epkowa] buf[38] 20
>[epkowa] buf[39] 20
>[epkowa] buf[40] 20
>[epkowa] buf[41] 20
>[epkowa] TPU detected
>[epkowa] tpu tlx 0.000000 tly 0.000000 brx 101.599991 bry 
231.139999 [mm]
>[epkowa] model : Perfection 2450
>[epkowa] sane_init, ><
>[epkowa] sane_init, ># For any USB scanner not known to the 
backend 
>(yet), you may, at your<
>[epkowa] sane_init, ># own peril(!!), force the backend to 
recognise and 
>use it via libusb.<
>[epkowa] sane_init, ># You can do so by the following 
configuration 
>command:<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >#   usb <USB vendor ID> <USB product 
ID><
>[epkowa] sane_init, >#<
>[epkowa] sane_init, ># SEIKO EPSON's USB vendor ID 
is '0x04b8' (without 
>quotes).  In order<
>[epkowa] sane_init, ># to find the USB product ID, use lsusb
(1) or, on 
>Linux systems, peek<
>[epkowa] sane_init, ># at the information 
in /proc/bus/usb/devices.<
>[epkowa] sane_init, ># A sample configuration for the 
Perfection 1650 
>(GT-8200), which has<
>[epkowa] sane_init, ># a product ID of 0x0110, would look as 
follows:<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >#usb 0x04b8 0x0110<
>[epkowa] sane_init, ><
>[epkowa] sane_init, ># When not accessing your USB scanner 
via libusb, 
>you may need to use<
>[epkowa] sane_init, ># one of the configuration commands 
below or 
>commands that are almost<
>[epkowa] sane_init, ># the same.  These commands typically 
access the 
>scanner via a kernel<
>[epkowa] sane_init, ># scanner module.<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >#usb /dev/usb/scanner0<
>[epkowa] sane_init, >#usb /dev/usbscanner0<
>[epkowa] sane_init, >#usb /dev/uscanner0<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, ># Linux had a scanner module until 
version 2.6.2. 
>As of version 2.6.3<
>[epkowa] sane_init, ># libusb is your only option.  Linux' 
scanner 
>module can be loaded via<
>[epkowa] sane_init, ># the modprobe(8) command like so:<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >#   modprobe scanner vendor=<USB vendor 
ID> 
>product=<USB product ID><
>[epkowa] sane_init, >#<
>[epkowa] sane_init, ># If the scanner module already knows 
the vendor 
>and product IDs, you<
>[epkowa] sane_init, ># do not have to specify them.  If you 
want to have 
>this done automa-<
>[epkowa] sane_init, ># tically every time you boot, you can 
add the 
>above line, except for<
>[epkowa] sane_init, ># the modprobe command itself, to 
your /etc/modules 
>file.<
>[epkowa] sane_init, ><
>[epkowa] sane_init, ># Although not tested with this 
backend, parallel 
>port scanners should<
>[epkowa] sane_init, ># be usable.  You can configure them as 
shown 
>below, but I do not know<
>[epkowa] sane_init, ># much about the details.  Information 
is welcome.<
>[epkowa] sane_init, >#<
>[epkowa] sane_init, >#pio 0x278<
>[epkowa] sane_init, >#pio 0x378<
>[epkowa] sane_init, >#pio 0x3BC<
>[epkowa] sane_get_devices()
>-------------------------------------------------------------
----------------
>
>Then the process hangs some minutes and after some time 
appears the 
>IScan window and on the console appears
>
>-------------------------------------------------------------
----------------
>[epkowa] sane_open(libusb:001:086)
>[epkowa] reset calling open_scanner
>[epkowa] open_scanner()
>-------------------------------------------------------------
----------------
>
>Clicking on "Preview" shows at first a window with a 
progress bar and 
>"Scanner is warming up. Please wait". On the progress bar 
nothing 
>happens and after some seconds a second window appears 
containing: 
>"Could not send command to scanner. Check the scanner's 
status".
>
>On the console the following lines were added:
>
>-------------------------------------------------------------
----------------
>[epkowa] reset calling open_scanner
>[epkowa] open_scanner()
>[epkowa] set = 0.000000
>[epkowa] set = 0.000000
>[epkowa] set = 215.899994
>[epkowa] set = 297.179993
>[epkowa] open_scanner()
>-------------------------------------------------------------
----------------
>
>Due to the long delay on starting iscan and the 2450 not 
working I 
>decided to compile from source, using iscan-1.14.0-3.tar.gz.
>
>I did
>
>-------------------------------------------------------------
----------------
>rpm -e --nodeps libsane1-devel
>urpmi libgtk+1.2-devel
>./configure --prefix=/usr --sysconfdir=/etc
>-------------------------------------------------------------
----------------
>
>libusb1-devel was already installed.
>
>Then I continued:
>
>-------------------------------------------------------------
----------------
>[root@majax iscan-1.14.0]# make
>making all in libltdl
>make[1]: Entering directory `/root/i/iscan-1.14.0/libltdl'
>make  all-am
>make[2]: Entering directory `/root/i/iscan-1.14.0/libltdl'
>/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -
I. -I.     -g 
>-O2 -c -o ltdl.lo ltdl.c
>mkdir .libs
>  gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c ltdl.c  -fPIC -
DPIC -o 
>.libs/ltdl.o
>  gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c ltdl.c -o ltdl.o 
>/dev/null 2>&1
>/bin/sh ./libtool --mode=link gcc  -g -O2   -o libltdlc.la   
ltdl.lo -ldl
>ar cru .libs/libltdlc.a .libs/ltdl.o
>ranlib .libs/libltdlc.a
>creating libltdlc.la
>(cd .libs && rm -f libltdlc.la && ln -s ../libltdlc.la 
libltdlc.la)
>make[2]: Leaving directory `/root/i/iscan-1.14.0/libltdl'
>make[1]: Leaving directory `/root/i/iscan-1.14.0/libltdl'
>making all in include
>make[1]: Entering directory `/root/i/iscan-1.14.0/include'
>make[1]: Nothing to be done for `all'.
>make[1]: Leaving directory `/root/i/iscan-1.14.0/include'
>making all in lib
>make[1]: Entering directory `/root/i/iscan-1.14.0/lib'
>gcc -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d 
>-DPATH_SANE_DATA_DIR=/usr/share         -DV_MAJOR=1 -
DV_MINOR=0 -g -O2 
>-W -Wall getopt.c
>gcc -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d 
>-DPATH_SANE_DATA_DIR=/usr/share         -DV_MAJOR=1 -
DV_MINOR=0 -g -O2 
>-W -Wall getopt1.c
>gcc -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d 
>-DPATH_SANE_DATA_DIR=/usr/share         -DV_MAJOR=1 -
DV_MINOR=0 -g -O2 
>-W -Wall md5.c
>ar r liblib.a getopt.o getopt1.o md5.o
>ar: creating liblib.a
>ranlib liblib.a
>mkdir .libs
>  gcc -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d -
DPATH_SANE_DATA_DIR=/usr/share 
>-DV_MAJOR=1 -DV_MINOR=0 -g -O2 -W -Wall getopt.c  -fPIC -
DPIC -o 
>.libs/getopt.o
>  gcc -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d -
DPATH_SANE_DATA_DIR=/usr/share 
>-DV_MAJOR=1 -DV_MINOR=0 -g -O2 -W -Wall getopt1.c  -fPIC -
DPIC -o 
>.libs/getopt1.o
>  gcc -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d -
DPATH_SANE_DATA_DIR=/usr/share 
>-DV_MAJOR=1 -DV_MINOR=0 -g -O2 -W -Wall md5.c  -fPIC -DPIC -
o .libs/md5.o
>g++ -c -DHAVE_CONFIG_H -I. -I. -I../include/sane -
I../include 
>-DPATH_SANE_CONFIG_DIR=/etc/sane.d 
>-DPATH_SANE_DATA_DIR=/usr/share         -DV_MAJOR=1 -
DV_MINOR=0 -g -O2 
>cfilebuf.cc
>cfilebuf.cc:252: error: expected unqualified-id before ';' 
token
>cfilebuf.cc:253: error: expected unqualified-id before ';' 
token
>make[1]: *** [cfilebuf.o] Error 1
>make[1]: Leaving directory `/root/i/iscan-1.14.0/lib'
>make: *** [all-recursive] Error 1
>[root@majax iscan-1.14.0]#
>-------------------------------------------------------------
----------------
>
>Any idea what went wrong here? I am using gcc 3.4.3. The 
package is 
>supposed to compile with gcc 3.2 or newer according to the 
Avasys web site.
>
>I am grateful for any help, both on the binary RPM and on 
the 
>compilation issues.
>
>    Till
>
>-- 
>sane-devel mailing list: sane-devel@lists.alioth.debian.org
>http://lists.alioth.debian.org/mailman/listinfo/sane-devel
>Unsubscribe: Send mail with subject "unsubscribe 
your_password"
>             to sane-devel-request@lists.alioth.debian.org