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