[libusb] Problems with USB-based scanner
Wojciech A. Koszek
wkoszek at freebsd.org
Sun Sep 13 13:44:16 UTC 2009
On Sun, Sep 13, 2009 at 01:33:23PM +0200, Hans Petter Selasky wrote:
> On Sunday 13 September 2009 11:37:06 Wojciech A. Koszek wrote:
> > Hi,
> >
> > Recently, I updated my laptop to the newest sources:
> >
> > FreeBSD laptop.freebsd.czest.pl 9.0-CURRENT FreeBSD 9.0-CURRENT #0
> > r197059M: Thu Sep 10 19:08:58 UTC 2009
> >
> > This is the very first time I tried to use my Canon CanoScan 1220u
> > scanner:
> >
> > [..]
> > ugen0.4: <CanoScan Canon> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
> >
> > bLength = 0x0012
> > bDescriptorType = 0x0001
> > bcdUSB = 0x0100
> > bDeviceClass = 0x0000
> > bDeviceSubClass = 0x0000
> > bDeviceProtocol = 0x0000
> > bMaxPacketSize0 = 0x0008
> > idVendor = 0x04a9
> > idProduct = 0x2207
> > bcdDevice = 0x0100
> > iManufacturer = 0x0040 <Canon>
> > iProduct = 0x004d <CanoScan>
> > iSerialNumber = 0x0000 <no string>
> > bNumConfigurations = 0x0001
> >
> > since uscanner(4) removal. It worked without a problem with
> > the old driver and I could use scanimage(8) with no effort:
> >
> > http://freebsd.czest.pl/~wkoszek/wlog/0/
> >
> > Right now I'm getting segmentation fault from plustek driver (and pretty
> > much any other driver, if I comment "plustek" in dll.conf and add necessary
> > quirk to other driver):
>
> Hi,
>
> This is a fault in the plustek driver, because it does not refresh the device
> pointer after a USB-rescan!
>
> /usr/ports/graphics/sane-backends/work/sane-backends-1.0.20/sanei
>
> Try the following patch:
>
> --- sanei_usb.c.orig 2009-09-13 13:27:29.000000000 +0200
> +++ sanei_usb.c 2009-09-13 13:29:32.000000000 +0200
> @@ -337,6 +337,16 @@
> && devices[i].vendor == device.vendor
> && devices[i].product == device.product)
> {
> + /*
> + * Need to update the LibUSB device pointer, hence it might
> + * have changed after the latest USB scan.
> + */
> +#ifdef HAVE_LIBUSB
> + devices[i].libusb_device = device.libusb_device;
> +#endif
> +#ifdef HAVE_LIBUSB_1_0
> + devices[i].lu_device = device.lu_device;
> +#endif
> devices[i].missing=0;
> DBG (3, "store_device: not storing device %s\n", device.devname);
> return;
>
> If it works, are you able to get this patch committed to the SANE project?
>
It seems to fix my problem. Thanks.
I'll write a post to sane-devel@ and provide links to this report.
--
Wojciech A. Koszek
wkoszek at FreeBSD.org
http://FreeBSD.czest.pl/~wkoszek/
More information about the freebsd-current
mailing list