Hello all, Scanner: hp scanjet 2400 using sane-backends-cvs20051124
Expected completion date: unknown, it is ready when it is ready Update from previous post: key: - previously reported; + update : - Head moves two times the expected distance. - Excessive time in genesys_warmup_lamp() + excessive time appears to be a result of an incorrect formula. (the source was patched to force SANE_STATUS_GOOD, thereby ignoring the frontend setup, and attempting to be sure that head movements were OK. I am to look into the frontend setup later) - There was no image in the STDOUT output (file size 1523712) - Status register for lamp reports OFF, but lamp remains ON. - Head remains where the scan stopped. + This is a FEATURE, not a bug. The scan process depends on every detail being expected and correct. When a status other than SANE_STATUS_GOOD is encountered, all processing stops whereever it was. This is good, because it assures that there can be no damage to the scanner as a result of an unexpected reply from the device. The cause of the problem was a result SANE_IO_ERROR, reported at the end of the scan (miscalculation of bytes expected/received) - In lineart mode, depth:1 was what I expected. depth:8 was reported. NEW: + The device responds inconsistently to the same scan request. When the same request is executed sequentially many times, on the odd-numbered attempts, the scan completes, and goes to end of task. On even-numbered attempts, the scan head never moves off of the home position. (reading bulk data: Error during device I/O) The error comes from not properly setting up the frontend during the lamp warmup. NOTE: to duplicate this problem, install from cvs referenced above. The source code is patched (see below) to force SANE_STATUS_GOOD in function genesys_warmup_lamp(). Use scanimage from SOURCE_TOP_DIR/frontend/scanimage. Execute the bash command as shown below, substituting your {BUS}/{DEVNUM} as shown in /proc/bus/usb/devices file for your scanner. REMEMBER to keep the image size small until the size of the image is corrected. #!/bin/sh scanimage -d genesys:libusb:{BUS}:{DEVNUM} --resolution 150 --mode color -t 1 -l 80 -x100 -y 30 2>scan.log 1>image.pnm #end PATCH (DO NOT APPLY) This patch was how SANE_STATUS_GOOD was forced from genesys_warmup_lamp(). The frontend is not setup right, so the image is not correct, but it demonstrates motor handling of the scan head and the inconsistent response from the device. --- sane-backend-20051124/backend/genesys.c 2005-12-02 00:25:55.000000000 -0600 +++ sane-backend-hack/backend/genesys.c 2005-12-02 00:24:45.000000000 -0600 @@ -3419,6 +3419,12 @@ DBG (DBG_error, "genesys_warmup_lamp: warmup timed out after %d seconds. Lamp defective?\n", seconds); + if (seconds > 40) { /* FIXME GPM: remove 6 lines here */ + DBG(DBG_info, + "genesys_warmup_lamp: ** ENOUGH (FIXME) **\n"); + status = SANE_STATUS_GOOD; + goto FIXME_hack_trick; + } status = SANE_STATUS_IO_ERROR; } else @@ -3427,6 +3433,7 @@ "genesys_warmup_lamp: warmup succeeded after %d seconds\n", seconds); } +FIXME_hack_trick: /* FIXME remove this GPM */ free (first_line); free (second_line); return status; ---- end-of-patch best regards, Gerald --