Re: [Bugme-new] [Bug 12301] New: Fingerprint reader doesn't respod after the first use

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 30 Dec 2008, Erik Ekman wrote:

> >> Do you have the thinkfinger source code handy?  Can you build it with
> >> the USB_DEBUG option enabled?
> >
> 
> With stock 2.6.28 kernel:
> 
> # ./tf-tool --acquire
> 
> ThinkFinger 0.3 (http://thinkfinger.sourceforge.net/)
> Copyright (C) 2006, 2007 Timo Hoenig <thoenig@xxxxxxx>
> 
> Initializing...

...

> Error: usb_bulk_read (-2)
> Error: usb_bulk_read (-2)
> Error: usb_bulk_read (-2)
> Could not acquire fingerprint (USB error).
> Error: usb_bulk_write (-2)

Okay, this is starting to narrow things down.  Here's a kernel patch to 
add some extra debugging information to the log.  Run the same test as 
before (you don't need to set usbfs_snoop this time) and post the 
resulting dmesg log.

Alan Stern


Index: 2.6.28/drivers/usb/core/devio.c
===================================================================
--- 2.6.28.orig/drivers/usb/core/devio.c
+++ 2.6.28/drivers/usb/core/devio.c
@@ -522,6 +522,22 @@ static int findintfep(struct usb_device 
 			}
 		}
 	}
+
+	printk(KERN_INFO "NumInt: %d\n", dev->actconfig->desc.bNumInterfaces);
+	for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
+		intf = dev->actconfig->interface[i];
+		for (j = 0; j < intf->num_altsetting; j++) {
+			alts = &intf->altsetting[j];
+			printk(KERN_INFO "intf %d alt %d:",
+					alts->desc.bInterfaceNumber,
+					alts->desc.bAlternateSetting);
+			for (e = 0; e < alts->desc.bNumEndpoints; e++) {
+				endpt = &alts->endpoint[e].desc;
+				printk(" %d", endpt->bEndpointAddress);
+			}
+			printk("\n");
+		}
+	}
 	return -ENOENT;
 }
 
@@ -985,9 +1001,11 @@ static int proc_do_submiturb(struct dev_
 	if (!(uurb->type == USBDEVFS_URB_TYPE_CONTROL &&
 	    (uurb->endpoint & ~USB_ENDPOINT_DIR_MASK) == 0)) {
 		ifnum = findintfep(ps->dev, uurb->endpoint);
+printk(KERN_INFO "findintfep: %d\n", ifnum);
 		if (ifnum < 0)
 			return ifnum;
 		ret = checkintf(ps, ifnum);
+printk(KERN_INFO "checkintf: %d\n", ret);
 		if (ret)
 			return ret;
 	}
@@ -998,6 +1016,7 @@ static int proc_do_submiturb(struct dev_
 		is_in = 0;
 		ep = ps->dev->ep_out[uurb->endpoint & USB_ENDPOINT_NUMBER_MASK];
 	}
+printk(KERN_INFO "ep addr: %d: ptr: %p\n", uurb->endpoint, ep);
 	if (!ep)
 		return -ENOENT;
 	switch(uurb->type) {

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux