[fprint] 4000b image error

Timo Teras timo.teras at iki.fi
Tue Nov 6 22:22:36 PST 2012


Hi,

On Tue, 06 Nov 2012 18:06:51 -0600 "Ing. Alfredo Alarcon"
<frekoalarcon at gmail.com> wrote:

> Hi, sorry for my bad english, my name is Freko from Mexico, have a
> 4000b reader and a Beaglebone ARM 7 with Ubuntu 12.04 and kernel 3.2.
> 
> I successfully installed libfprint from sources and all dependencies 
> from the repository, except libmagick9-dev Ubuntu suggested me
> another one, all compilations are fine, when run the examples detects
> my reader fine, but when takes the image send the next error:
> 
> uru4000:error [imaging_run_state] bad captured image (289 lines) or
> size mismatch 111041 != 111040

The error implies you have fresh git checkout with my uru4500 patch
applied. So that change probably introduced this :/

Basically the device is sending one more byte than expected. The extra
byte could come because of problem in:
 - Host USB hardware
 - Bug in USB driver for your hardware in linux kernel
 - Or error due to some architecture specific bug in the code
 - Bug in my patch

> But if i run the same examples in my PC with Ubuntu 10.04 kernel 2.6, 
> everything works fine, gets a image from the reader and save this in
> the same carpet in pgm format. I hope my problem have a solution.

If possible, could you get USB captures of what is happening?
See: http://wiki.wireshark.org/CaptureSetup/USB#Linux

Alternatively, if the junk byte is at the end of the transfer, just
modfying to length assertation should be ok:

--- a/libfprint/drivers/uru4000.c
+++ b/libfprint/drivers/uru4000.c
@@ -687,8 +687,8 @@ static void imaging_run_state(struct fpi_ssm *ssm)
                fp_dbg("hw header lines %d", img->num_lines);
 
                if (img->num_lines >= IMAGE_HEIGHT ||
-                   urudev->img_transfer->actual_length != img->num_lines * IMAGE_WIDTH + 64) {
-                       fp_err("bad captured image (%d lines) or size mismatch %d != %d",
+                   urudev->img_transfer->actual_length < img->num_lines * IMAGE_WIDTH + 64) {
+                       fp_err("bad captured image (%d lines) or size mismatch %d < %d",
                                img->num_lines,
                                urudev->img_transfer->actual_length,
                                img->num_lines * IMAGE_WIDTH + 64);

Maybe this helps.

Cheers,
 Timo


More information about the fprint mailing list