[sane-devel] HP Scanjet 2400 support for genesys backend

Julien TIERNY julien.tierny@wanadoo.fr
Tue, 4 May 2004 19:08:02 +0200


--Boundary-00=_y38lAZ27zKoGUi9
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hi all, hi Henning,

> The genesys backend wasn't even loaded. Double-check dll.conf.
I even respected alphabetical order (I had put genesys between gphoto and=20
gt68xx).
In fact, as I already told I am a gentoo linux user. I wrote a port-like fi=
le=20
(ebuild) to compile and install the patched sources.
Actually, it seems that /etc/sane.d/dll.conf wasn't updated properly (?).

as I told you, you will find attached a shell script to patch the SANE sour=
ces=20
with the genesys backend (could be useful for a SANE beginner like me ;-))

you will also find some outputs (# SANE_DEBUG_GENESYS=3D255 scanimage -T).
it seems that I encountered issues with the low level part of the backend :=
 cf=20
traces of the "genesys_read_data_from_scanner" function (at the very end of=
=20
the file).
Do you also produce this behaviour with your scanner ?

{somewhere in genesys_low.c (hum.... line 512) you mention that the read si=
ze=20
must be a multiple of 128 otherwise read issues might be encountered : coul=
d=20
this be linked ? .... naive though ...}

could you give me a few explainations about the related low level code=20
(genesys_read_data_from_scanner, genesys_white_shading_calibration,=20
genesys_flatbed_calibration and genesys_start_scan) ?
in which direction would you like me to focus on, in order to help u in you=
r=20
development ?

bye, Julien

ps: you would have corrected by yourself that I forgot last time the diff f=
or=20
the genesys.conf file (in the tarball if needed)

Le lundi 19 Avril 2004 15:25, Henning Meier-Geinitz a =E9crit :
> Hi,
>
> On Sun, Apr 18, 2004 at 10:14:01PM +0200, Julien TIERNY wrote:
> >     great news Henning, at last I managed to make my scanner move under
> > GNU/Linux !
>
> That's nice :-)
>
> > # SANE_DEBUG_GENESYS=3D255 scanimage -L
> >
> > No scanners were identified. If you were expecting something different,
>
> The genesys backend wasn't even loaded. Double-check dll.conf.
>
> > How could you explain that scanimage can't load the genesys backend ?
>
> You have installed sane-backends in /usr/local/ and /usr. Or at least
> twice at different locations.
>
> Try SANE_DEBUG_DLL=3D255 scanimage -L
>
> That should print which dll.conf is used and where it looks for
> libraries. Try the same with xscanimage.
>
> > # SANE_DEBUG_GENESYS=3D255 xscanimage genesys:libusb:005:002
>
> Doe it work without the explicit mentioning of
> "genesys:libusb:005:002"? If not, "genesys" is not in dll.conf.
>
> Bye,
>   Henning

--Boundary-00=_y38lAZ27zKoGUi9
Content-Type: application/x-tgz;
  name="logs&patch.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="logs&patch.tar.gz"

H4sICMvNl0AAA2FwTUExYS50YXIA7X1rdxs3lm2+Rr8CnWS67VmyXEC9Na2sSTvuTPomTpad9F29
Ei+mSBalapMsNqtoW5mZ+9svXiWTKpwi9aAoypv9kMkDYAMbOOcAKBzUq69ePO99/fwvP3/T++b5
i+ev/vGqJ8KwVw2yaTHJTvMnP31y448nP1EQqL88Drn+zs13j3t+yDn/hHteEMRBEIroE5mKc/8T
5t0cev1nUdXZnLFP/rkYF/m0K10+rzrK8czn4u+efH6psmle9IZ5f3H6mr3K67qYnjL9lY3zt/mY
lSN2mk/z6rxidcnk4Dg6+MX+IDPI4cO+seJ+NniTT4fsrWSqKKeMH3msvyjGQ8bZaF5OmMJ6YlNV
SnzEgyezeS6WSlRpesW0qI9ZtqjPynnxe87+cMKmi/HYnWxc1PU4Z7LMIpuySTY4K6a5O+k8z4aq
fYNyOipO2aiQ+X6zCY/Uj39y51tOP5alM37MitOprJwubDLJp7UWbJhd3Cy7v5Q9n8zq86tkDm6S
ObxZxaNjVs/PVWY5lLK6ln3FfltUfea99yI/UX8y7m3aCfFNWpLcrCVpR0uCLJV/hOD+xsPJu0lT
+A1HIxcdjfFHnu4Wjy83xiQ6Zsp4yiKH+duZUtIXP3/33aFUwfPeu6yo2QnzHHk+QJWzfKryFgOp
huOiLyGPpUuQ//NdYERKVi0Gg7yqRtJCnOsy86Ej96hcSNv0X/m7sTRyT36UViibD9lonNX9fMiU
w5vmc/ZK/v1bXjMReJ7MylaxHMXm74vazbNLcprXPdOM6oK8cTnIxr1yKit/wkbZuGr120ouV7Gq
0bY89siknGaTXJZ3mazH7qyGnN/OZk8UEf/M6yeKgD+xQvfPuKiWIf/vVy9ffPvim2P2j3Ixv2Cu
qNi0rJnphWoxm5XzWhJbzjWNeVbVbKmMi89ZJtOoto+LSaEy1HmlfNAR+1Flylk/Z4NsnstyWSbr
6CpjniswKT6X/BXjxTx/aseEGmVO1Hw6lSD/OcmLfP7kNFc99vvRML9Anc3Lt8UwZ1klh/P03FXG
MK8lWKWSzMqqKvrj/JDlR7Lm9Zl0R++zQc10L0gPei6ZcpXRkKda9u5MEjUs84o9kkQ+Zu/K+Ztl
X6vqKLurlq61GTxLUjmGBr1ZNpeAtfS/GyQYlfNJVp94h9oKVCdyIib/Pcxn9dlJ0pVxVrzPx1Vv
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
IEtaTIfSS9VnOZM+c1KxcqS/fPPiZ93oeTZmPy7642LAvpNmd1rl7K3sb9leJlgm66Bk1Zk08P1z
WZrK+ldVl1e2LuyvpUTILEEH8jOTVrzuLSpp5R89Zv998Gk+OCvZZz9X2uwfPb2seOzPmmo5GPvZ
ePwl+7NNcPHLZwf/e3CgfXhVLuaDvDLFFiP2C3uSsy9U9t6rH35++ez5q6dHK8Wz1wefyipPDz61
tfjs4l/fleWbio2LN5IYRbZFY2ey0f1cdpQuQLY7Gyu/fM6OnzxSub94+T178nIVdennb56/eP7q
H696X3/7UkFJB8G8g09HxUUbsvmpbcDnbLnhyplUdWXb9YdWy5aassTwKoYs8tlZPpDtKkwvK92V
g3g4/VPNiqnsWDlE5qeLST5VSONSOm321ctvet+++Pvzl6++/eHFyW+anVXk/5HNevn8R+35fmuI
/519sZLzKvVT1ctYlQ/K6fCiQsvMV5WcRX0Aakj9y1fP/s/zF19vCPXN6jhyEXyNgpt+lDZhXNTn
pisNk9//o/fzT99+9+1P/zj5grd/7H33w7OvflIkfyGWGudI0DFsX5Xz+fmRtA9Ghf+0lP1PzNZJ
GYxpng/l4P31QM7SjCrowWY16Oiz1aJXmreYzrLBm1Vlu0hrlVknUbO1lVKPVLlf/PTVS/bk/dvf
R5eG0R+/ZE/l5O7pdDEed5TYqH9ffs+nw3ahlzttpVxZ/4G0vT2b21l7ZZxppGc/rmjx03+/ZGFs
6qcKSjPbG47HPTmUR06wH1USPa8dj49UKgOjhU0FvvySwGjyfMBS34rTxTzvFdNHjzvgLhIeFdOm
ZV/9dAlnOZFU819lolfPv2afVU8tua9Ofv3s1y/+u/n2v6ya+JHnPf1jU/enn6lcl+u/Al5PZrLc
7/++Jk2H+EPzJ9mbXC6yTOu72P7eJuxqfcPyUtpVEr7+9tVPf/32Ozl2T5hs8hcfvv+qPlPGZPNX
csg1kLKST0aLfxZ1tTgay7Xc0dGvT9WPhf0jrUr/aFw+/eOv0y+++/YvqkpuFh31o8gkkqpSP12b
UtE7X0x72aIuP4zjwfCyk7vE9cvFdKqobrIdsR/HeSYnEP1cmRw5u6kt9V/9/NMPz3548dcm57LR
uPCz74r6jFWLgfytYv/x5PFnSi1W3bmu1NGRrm++1ki9zBuT4rBPg5Z9OpJ+4uj096OmPl3Gyz0J
cM0BZFU/l4NRjiw54ZgdNEycfPFILsulVW7Ie3wgx+fFr4Oslj/8+OH7TH79eUm+kHLlky9+OZWE
PD74/u8XP0zePj54+f3F1/nk8YEcoxffpYN9fCCZuPhBtl6mWGqP8mGXTK1yXEuNO7FjyWR7+fy7
51+9et777vnfn3934h9cKMvJZ7YTjwZyPF78WzZ66evZh3/3xuW75aT6+9lnB1ZXTj5rlKzJ61Qy
Wb6cGUvie2+z8SKXCvfrdKOMRjs/O5AuuJmv2X827rXpM7Y0sFcSyO5jyt5c/lnauGc/Xv5xodL+
fDmt6k8z7bokmLyVU4a/X/pxPmFy8F36sdKD+PnXl35Wqz6lAwefrjr6g09Xep+YCMqasidSCdmT
EeNPvmj3/G8W7qLUZXd88Omqx2y+L3u15rclU3/w6bJ5kt/y1YpfUvzNzAs2bj7qz7IdOpLL5dEW
MNR+SGT2e1z7P1LIzf5PHEShF+j9H/kT9n/u4MO9jPNDLg6+ZJ+z//qRvRpk07/lNROB58nfpBdg
3nvPH3nqT+ZxmAt88MEHH3zwwQcffPDBB5/9/Px/R9CN/wBgBAA=

--Boundary-00=_y38lAZ27zKoGUi9--