[sane-devel] Epson Perfection 3490 -> included bugfix makes it work
Bauke Jan Douma
bjdouma at xs4all.nl
Thu Sep 15 16:24:18 UTC 2005
Hi!
Good news for all you with an Epson Perfection 3490 USB scanner.
Here is a bugfix to get the 'Epson Perfection 3490' scanner working.
It now makes perfect color *.pnm scans, at full A4 size.
The details: I've been looking over some usbmon dumps and scanimage
debug logs, and the Perfection 3490 should just read 120 bytes even
when firmware isn't loaded yet.
The fix is in snapscan-scsi.c.
Here are two kinds of diffs, I'm not sure which format is mandatory.
The diffs are against CVS snapshot sane-backends-2005-09-15.
Regards,
Bauke Jan Douma
bjdouma at xs4all.nl
September 15th, 2005
diff -uprN ./sane-backends-2005-09-15/backend/snapscan-scsi.c ./sane-backends-2005-09-15-bjd/backend/snapscan-scsi.c
--- ./sane-backends-2005-09-15/backend/snapscan-scsi.c 2005-09-03 13:31:31.000000000 +0200
+++ ./sane-backends-2005-09-15-bjd/backend/snapscan-scsi.c 2005-09-15 18:04:53.000000000 +0200
@@ -439,9 +439,15 @@ static SANE_Status inquiry (SnapScan_Sca
switch (pss->pdev->model)
{
case PERFECTION2480:
- case PERFECTION3490:
pss->read_bytes = (pss->firmware_loaded) ? 139 : INQUIRY_RET_LEN;
break;
+ case PERFECTION3490:
+ /*
+ * The 'Epson Perfection 3490' only returns 120, so don't try to read 139.
+ * Bauke Jan Douma, bjdouma at xs4all.nl, 20050915
+ */
+ pss->read_bytes = INQUIRY_RET_LEN;
+ break;
default:
pss->read_bytes = INQUIRY_RET_LEN;
break;
@@ -480,7 +486,6 @@ static SANE_Status inquiry (SnapScan_Sca
pss->chroma = 0;
break;
case PERFECTION2480:
- case PERFECTION3490:
/* TODO: remove */
if (pss->firmware_loaded)
{
diff -c3 --recursive --new-file ./sane-backends-2005-09-15/backend/snapscan-scsi.c ./sane-backends-2005-09-15-bjd/backend/snapscan-scsi.c
*** ./sane-backends-2005-09-15/backend/snapscan-scsi.c Sat Sep 3 13:31:31 2005
--- ./sane-backends-2005-09-15-bjd/backend/snapscan-scsi.c Thu Sep 15 18:04:53 2005
***************
*** 439,447 ****
switch (pss->pdev->model)
{
case PERFECTION2480:
- case PERFECTION3490:
pss->read_bytes = (pss->firmware_loaded) ? 139 : INQUIRY_RET_LEN;
break;
default:
pss->read_bytes = INQUIRY_RET_LEN;
break;
--- 439,453 ----
switch (pss->pdev->model)
{
case PERFECTION2480:
pss->read_bytes = (pss->firmware_loaded) ? 139 : INQUIRY_RET_LEN;
break;
+ case PERFECTION3490:
+ /*
+ * The 'Epson Perfection 3490' only returns 120, so don't try to read 139.
+ * Bauke Jan Douma, bjdouma at xs4all.nl, 20050915
+ */
+ pss->read_bytes = INQUIRY_RET_LEN;
+ break;
default:
pss->read_bytes = INQUIRY_RET_LEN;
break;
***************
*** 480,486 ****
pss->chroma = 0;
break;
case PERFECTION2480:
- case PERFECTION3490:
/* TODO: remove */
if (pss->firmware_loaded)
{
--- 486,491 ----
More information about the sane-devel
mailing list