[sane-devel] fail: open driver for Epson Perfection V100

2010-06-08 Thread Stéphane Blondon
As discussed before on this mailing list, I tried to write an open
driver in order to replace epkowa but I fail and I will live far from
the scanner in few weeks so I can't continue.


To sum up what is known today:
- the protocol is more or less like the epjitsu.
- however the command headers are not the same as the epjitsu ones.
- command used to call to set up the resolution is 1e 8d.
Value for 50dpi: 03
Value for 600dpi: 02
Value for 12800dpi: 00
- the preview scans at 50dpi

- the firmware is included in the Esf66.bin file (in the MS Windows driver).
- the 255 first bytes of Esf66.bin are not sended.
- the end of the Esf66.bin is not sended too (they are only ff values).


It's probably not useful but my logs and files are there:
http://sblondon.free.fr/scanner_v100/

I will unsubscribe to the mailing list in days/weeks.

-- 
St?phane



[sane-devel] Xsane 0.996 Canon LIDE50 Ubuntu Karmic

2010-04-25 Thread Stéphane Blondon
2010/4/25 David Liell opus9743 at gmail.com:
 Cannot attach results due to limitations of this service.

The maximum size is 100Ko for the attachment.

- compress your files and see if the size decreases enough
- host it with a webserver or ftp server
- use a webservice

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-04-15 Thread Stéphane Blondon
2010/4/14 Olaf Meeuwissen olaf.meeuwissen at avasys.jp:
 When that's done, autoreconf and ./configure again.

 Hope this helps,

I done what you said and the compile runs. I get .la file like the epjitsu.

Thank to you and m. allan noah!

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-04-14 Thread Stéphane Blondon
2010/4/12 Alejandro Imass ait at p2ee.org:
 Any news regarding the use of epjistu to directly drive the v100? (w/out 
 iscan)

I copied/paste the epjitsu files and renamed them as epv100. I change
few things in files but currently I'm fighting with the compilation
process:
- File 'configure.in':
I added epv100 in the ALL_BACKENDS variable, execute ./configure and
make but the scripts ignore my files.
- File 'config.status':
I added epv100.conf in S[BACKEND_CONFS_ENABLED] and
libsane-epv100.la in S[BACKEND_LIBS_ENABLED].

My last attempts:
- I added a syntax error in the .c file but the compilation process works ok.
- I added an invalid backend ('XXX' in ALL_BACKENDS) but it doesn't
complain too.

Does anyone know what I'm doing wrong?


-- 
St?phane

Il y a 98,57% de chance que cette signature soit approximative.



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-04-14 Thread Stéphane Blondon
2010/4/14 St?phane Blondon stephane.blondon at gmail.com:
 Does anyone know what I'm doing wrong?


(The problem is the files are simply ignored.)

-- 
St?phane

Il y a 98,57% de chance que cette signature soit approximative.



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-04-06 Thread Stéphane Blondon
2010/4/1 m. allan noah kitno455 at gmail.com:
 It is difficult to know which scanner commands are vital to proper
 operation, without trying :)


I have sniffed, taken notes, read, think ...and it's not finished
because there are lot of mysterious data.

Stuff that I understand/assume about the protocol (more or less obvious):
- all the command sended start by 1e xx.
- the answer to a command can be data or 06 (which means ok).
- 1b 03 is used to start a new sequence. The answer is 18 81 when
the scanner is ready. If not ready, the scanner sends 58 81. This
allows the driver to loop until the scanner is ready.
- some command seems to be used for several things. wtf?!
- some same data are sended to the scanner and by the scanner in
another step. Perhaps it's to check the data transfer (see note 1)?
- the same start sequence is used to make a preview and to scan.
- command used to call to set up the resolution is 1e 8d.
Set up for 50dpi: 03
Set up for 600dpi: 02
Set up for 12800dpi: 00
- the preview scans at 50dpi, which seems to be logical because it's
the lower resolution according the Epson scanner software under
Windows (see note 2).
- the picture data are splitted in block. (too big?) The block ends by
the same sequence for every block. The sequence is different between
preview and each resolution of final scan (see note 3).

Of course, there are perhaps misunderstandings in the previous list.

1: however, it would be strange because several data was transfered
(firmware for example). So there is high probability I made an error
about it.
2: the available resolutions in Epson scan are 50, 72, 96, 150, 200,
240, 266, 300, 350, 360, 400, 600, 720, 800, 1200, 2400, 3200, 4800,
6400, 9600 and 12800dpi.
3: tested only with preview and scan at 50, 600 et 12800dpi.


Mysterious data/behaviour:
- send data several time
- or data starting from 0 to ff (and variants)
- or command used to send the same data (1e 92 and 1e 31 for example)
- ...

to continue..

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-04-01 Thread Stéphane Blondon
2010/3/31 m. allan noah kitno455 at gmail.com:
 There are enough commands
 different from epjitsu that I dont know if it makes sense to try and
 cram it into that backend, at least not without a re-write first.


I will copy-paste the epjistu files and modify them. I plan to search
the {dpi, color, ...} values are sended. Do you think there are others
priorities?


-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-31 Thread Stéphane Blondon
2010/3/30 m. allan noah kitno455 at gmail.com:
 get your site up yet?


Not really fast but it's done now.

The logs and others stuff are available at:
http://sblondon.free.fr/scanner_v100/

 -- 'logs' directory: some previous logs and the asked one.
direct links for what you want:
- init: 
http://sblondon.free.fr/scanner_v100/logs/epson_v100_init_before_epson_scan_software_launch.txt
- picture scans: http://sblondon.free.fr/scanner_v100/logs/epson_v100_scan_RGB/

 -- 'test_firmware' directory: the firmware and the little code I
wrote to test it. 'firmware' is what is sended to the scanner
(generated by extract.py). checksum computes the checksum (surprising,
isn't it?). Note the code was written for quick testing so it's not
really polished.

 -- file 'spike4.pl' is the well-know script here. I just added the
command to use it in the header. I hope it will help the next user.


I deleted the hosted archive at zeropassword.com.

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-30 Thread Stéphane Blondon
2010/3/28 St?phane Blondon stephane.blondon at gmail.com:
 I have created a new file based on the Esfw66.bin and used `chksum` on
 it. The sum doesn't match the data sended after the firmware in the
 logfile. The error comes probably from me. I found the code used for
 the checksum in epjistu.c so I will try again tomorrow by writing a
 little C code based on it.


Ok, the checksum code works. It uses the same method than epjistu.
After the checksum, the next command is the same too (reinit with
1b16).


-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-29 Thread Stéphane Blondon
2010/3/28 m. allan noah kitno455 at gmail.com:
 2010/3/27 St?phane Blondon stephane.blondon at gmail.com:
 Esfw66.bin is really the firmware: it's the main block of data in the
 init logfile (starting at line 54). The differences are:
 - the 100 first bytes of the firmware are not sended.

I made a stupid mistake: 100 is displayed in the hexadecimal editor,
so it means adress 255.


 this sounds like epjitsu. there is also a checksum byte that follows.


I have created a new file based on the Esfw66.bin and used `chksum` on
it. The sum doesn't match the data sended after the firmware in the
logfile. The error comes probably from me. I found the code used for
the checksum in epjistu.c so I will try again tomorrow by writing a
little C code based on it.

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-28 Thread Stéphane Blondon
2010/3/28 m. allan noah kitno455 at gmail.com:
 2010/3/27 St?phane Blondon stephane.blondon at gmail.com:
 The results are available in the archive at
 http://static.zeropassword.com/tmp/epson_v100_init_and_scan_RGB.tar.lzma
 It a temporary address; I will set up a very basic website elsewhere.

 not working right now?


It works when I try.
I also created an account to set up a website for free provided by my
ISP but I have to wait 24hours for activation. :-(
When it will be done, I will send every data on it.

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-27 Thread Stéphane Blondon
2010/3/26 m. allan noah kitno455 at gmail.com:
 Well, it does use the same status command as the epjitsu scanners, and
 the two-byte command and status layout is the same, but the actual
 commands are slightly different. When I have more time I will try to
 extract the image.


What can I do to help you (if it's possible)?)

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-26 Thread Stéphane Blondon
2010/3/25 Alejandro Imass ait at p2ee.org:
 i Have done _some_
 tweaking here and there with sane, may be able to help in something
 along the way


Having few experiences is more than me! ^^

It's a really good news!

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-26 Thread Stéphane Blondon
2010/3/24 m. allan noah kitno455 at gmail.com:
 At that point, I would investigate the epjitsu sane backend, as it
 already supports an epson chipset which may be related to the one in
 the V100.


epjitsu.conf.in explains that the driver needs a firmware called
'*.nal', often in a cab file. I didn't found such a file (even in cab
files).

However, I found a 'Esfw66.bin' in a cab.
The size is ok (64Kio), the path too (ProgramFiles/epson/escndv/es0066).
ES66 seems to be a codename for the scanner. For example, the file es66.inf has:
ES66.DeviceDesc = EPSON Perfection V10/V100
or
%ES66.DeviceDesc%  = USB.ES66,USB\VID_04B8PID_012D

(Those VID and PID match the Vendor_ID and Product_ID of the
Perfection V100Photo.)

I don't know if it's useful but `file` doesn't recognize the file
type. If I edit 'Esfw66.bin' in hexadecimal mode, the first line is:
: 4544 4c41        EDLA


The others cab in es0066 directory have a lot of .dll files, .icm
files, another .bin file (only 3Kio), 'Version.dat', two .chm files.
There are files I don't know in 'perv100.cab' but I think they are not
as interesting as 'Esfw66.bin':
stephane at degtyarov:/tmp/epson cab/perv100 $ ls -lh
total 512K
-rw-r--r-- 1 stephane stephane 5,0K ao?t  29  2006 ES0066.hrd
-rw-r--r-- 1 stephane stephane  238 d?c.   1  2005 ES0066.idx
-rw-r--r-- 1 stephane stephane  96K oct.  16  2006 PerV100.ds
(and two .icm files)


-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-26 Thread Stéphane Blondon
2010/3/26 m. allan noah kitno455 at gmail.com:
 Try getting a usb sniffer log of a low resolution small scan, using this tool:



The attachment file is an archive; it contains two files:
- a scan of a small area (10*10 pixels) at the lowest resolution
available in the epson scan software. Init and preview steps not
included in the log file.

- a replug done in Usbsnoop. Preview step not included.

The logs are converted by spike4.

The preview step creates big logfile (41Mo) so I don't provide it
here. If needed, I will provide it by website.


Note: the attachment size is limited to 100Ko. (That's ok; I use
mailing list with lower size.) Do you think it's possible to add this
information in the Welcome message?

-- 
St?phane
-- next part --
A non-text attachment was scrubbed...
Name: epson_v100_logs.tar.lzma
Type: application/x-lzma
Size: 40995 bytes
Desc: not available
URL: 
http://lists.alioth.debian.org/pipermail/sane-devel/attachments/20100326/d08999d7/attachment-0001.bin


[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-25 Thread Stéphane Blondon
2010/3/24 m. allan noah kitno455 at gmail.com:
 Depending on how your system is configured, the existing
 /usr/bin/scanimage might have a preference for /usr/lib, while
 /usr/local/bin/scanimage will prefer /usr/local/lib. So, you might
 just need to call the right binary...


It works exactly like you said! :-) Thanks a lot!

I see the epjitsu library (compiled version is libsane-epjitsu.so.1.0.21).

(It's probably without interest but few files have execute rights in
backend directory: sm3840.c, sm3840.h, sm3840_lib.c, sm3840_lib.h,
sm3840_scan.c, stv680.conf.in, stv680.h)


If it's useful for someone else in the future:
- I commented the line /usr/local/lib in /etc/ld.so.conf.d/libc.conf
- execute `ldconfig` as root
- download the snapshot with git (available in git-core package under debian)
- `./configure`
- `make`
- `make install`


And then:
stephane at degtyarov:/tmp/sane-backends $ /usr/local/bin/scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

stephane at degtyarov:/tmp/sane-backends $ scanimage -L
device `epkowa:interpreter:001:005' is a Epson Perfection V10/V100
flatbed scanner


Now, the hard work starts (understand the generated log files and the
source code)!

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-24 Thread Stéphane Blondon
Hello,

I bought an Epson Perfection V100 Photo which works with the epkowa
driver (with gt-s600).

I don't find a recent mail on the mailing-list talking about writing a
free driver. So I plan to (try to) develop it to remove the licence
problem. I never done reverse engineering or wrote driver so the
failure is clearly possible... :-(

I read the libusb documentation
(http://libusb.sourceforge.net/doc/index.html) and just start a very
minimal C code to find the scanner. I have started to read other pages
on the web too, but I think sane team would have advice about good
links too. I found the backend-writing.txt page on sane website.


http://www.sane-project.org/lists/sane-mfgs-cvs.html says that the
scanner is supported by the epkowa backend plus non-free interpreter
so I suppose I only need to rewrite the interpreter. The epkowa.desc
is under GPL v2+ (found at /usr/share/iscan/epkowa.desc).

It seems that the scanner has 1 Configuration, 1 interface with 2 endpoints.
- endpoint 0 on address 81h (default control pipe)
- endpoint 1 on address 02h (transfer data pipe)
(I deduce this from the output of `lsusb -v`; perhaps I'm wrong. The
useful output is at the end of this e-mail.)


- I subscribed this mailing list.
- I use Debian testing on x86 (32bits)
Packages used:
libusb-dev 2:0.1.12-14
libsane and sane-utils 1.0.20-14+b1
libsane-extra 1.0.20.3


What do you think about I would like to do? Do you have any tips or
see problems?
Thanks


### lsusb start ###
degtyarov:~ # lsusb -v
Bus 001 Device 002: ID 04b8:012d Seiko Epson Corp. Perfection V10/V100
(GT-S600/F650)
Device Descriptor:
  bLength18
  bDescriptorType 1
  bcdUSB   2.00
  bDeviceClass  255 Vendor Specific Class
  bDeviceSubClass   255 Vendor Specific Subclass
  bDeviceProtocol   255 Vendor Specific Protocol
  bMaxPacketSize064
  idVendor   0x04b8 Seiko Epson Corp.
  idProduct  0x012d Perfection V10/V100 (GT-S600/F650)
  bcdDevice1.00
  iManufacturer   1 EPSON
  iProduct2 EPSON Scanner
  iSerial 0
  bNumConfigurations  1
  Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength   32
bNumInterfaces  1
bConfigurationValue 1
iConfiguration  0
bmAttributes 0xc0
  Self Powered
MaxPower2mA
Interface Descriptor:
  bLength 9
  bDescriptorType 4
  bInterfaceNumber0
  bAlternateSetting   0
  bNumEndpoints   2
  bInterfaceClass   255 Vendor Specific Class
  bInterfaceSubClass255 Vendor Specific Subclass
  bInterfaceProtocol255 Vendor Specific Protocol
  iInterface  0
  Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81  EP 1 IN
bmAttributes2
  Transfer TypeBulk
  Synch Type   None
  Usage Type   Data
wMaxPacketSize 0x0200  1x 512 bytes
bInterval 255
  Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02  EP 2 OUT
bmAttributes2
  Transfer TypeBulk
  Synch Type   None
  Usage Type   Data
wMaxPacketSize 0x0200  1x 512 bytes
bInterval 255
Device Qualifier (for other device speed):
  bLength10
  bDescriptorType 6
  bcdUSB   2.00
  bDeviceClass  255 Vendor Specific Class
  bDeviceSubClass   255 Vendor Specific Subclass
  bDeviceProtocol   255 Vendor Specific Protocol
  bMaxPacketSize064
  bNumConfigurations  1
Device Status: 0x0001
  Self Powered
### lsusb end ###

-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-24 Thread Stéphane Blondon
2010/3/24 m. allan noah kitno455 at gmail.com:
 get some traces of the windows driver in action making some small
 scans, using this tool:

 http://www.pcausa.com/Utilities/UsbSnoop/

 Then decode them with another utility (i am partial to spike4.pl,
 which google can find :)


Ok, I found it and the way to use it (cat logfile.log | perl spike4.pl
 output.txt).
Now, I will install usbsnoop and try it a little.


 and make sure you are using a recent sane-backends git snapshot
 for your devel, not 1.0.20.


Can I install the git snapshot inside a system running in qemu? Or
must I use an other install (and reboot from one to another)? I don't
have hardware virtualization instructions on my CPU.


-- 
St?phane



[sane-devel] open driver for Epson Perfection V100 Photo?

2010-03-24 Thread Stéphane Blondon
2010/3/24 m. allan noah kitno455 at gmail.com:
 2010/3/24 St?phane Blondon stephane.blondon at gmail.com:
 Can I install the git snapshot inside a system running in qemu? Or
 must I use an other install (and reboot from one to another)? I don't
 have hardware virtualization instructions on my CPU.

 Why would you want to? just install it in /usr/local, and make sure
 that your system loads those libs before the ones in /usr/lib...


I have got only one available computer but others users need sometimes
the scanner (and they will not want to wait until I finish the
driver...). I thought it's easier to have two distinct installs
instead of playing with libs or symlinks from one to another
configuration. But, the symlink is perhaps a simpler way to do it.


-- 
St?phane