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 [email protected] 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, [email protected], 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, [email protected], 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 ----
