[sane-devel] Re: sane-find-scanner detects smartcard reader as scanner

Parag N(पराग़) panemade at gmail.com
Tue Aug 8 13:45:14 UTC 2006


Hi,
On 8/8/06, Johannes Meixner <jsmeix at suse.de> wrote:
>
> Hello,
>
> On Aug 8 18:34 Parag N(????) wrote (shortened):
> > On 8/8/06, Johannes Meixner <jsmeix at suse.de> wrote:
> > > On Aug 8 16:49 Parag N(????) wrote (shortened):
> > > > What sane-find-scanner does
> > > ...
> > > > 3)check_usb_file will open each attached usb device and then collect
> > > > USB ID's and it will show you that output.
> ...
> > > Right now I didn't check check_usb_file and the functions
> > > which it calls in detail but according to
> > > https://bugzilla.novell.com/attachment.cgi?id=95324&action=view
> > > it seems sane-find-scanner lists any USB device as scanner when
> > > either bDeviceClass = 255 (Vendor Specific Class)
> > > or bDeviceClass = 0 (Defined at Interface level)
> > >    and bInterfaceClass = 255 (Vendor Specific Class)
> > > because those USB devices are "The Usual Suspects" ;-)
> >
> > yeah i just checked with other USB webcams and barcode scanners and
> > what i found is that your observation is correct.
> > for all webcams i got
> > either bDeviceClass = 255 (Vendor Specific Class)
> > or bDeviceClass = 0 (Defined at Interface level) with bInterfaceClass
> > = 255 (Vendor Specific Class)
> > but for USB barcode scanner i got
> > bDeviceClass = 0 (Defined at Interface level) with bInterfaceClass = 3
> > which is not detected by sane-find-scanner.
>
> As far as I have found out up to now, it is not check_usb_file()
> but nowadays check_libusb_device() (if libusb is used)
> and here the section
> /* Some heuristics, which device may be a scanner */
> seems to be the crucial one:
> -------------------------------------------------------------------
>         case USB_CLASS_VENDOR_SPEC:
>           ++is_scanner;
>           break;
> ...
>             case USB_CLASS_VENDOR_SPEC:
>             case USB_CLASS_PER_INTERFACE:
>             case 16:                /* data? */
>               ++is_scanner;
>               break;
> ...
>   if (is_scanner > 0)
> ...
>       printf ("found USB scanner ...
> -------------------------------------------------------------------
> In particular it seems bInterfaceClass is not tested at all.

 You can then file this problem in bugzilla and even submit patch for it.

Regards,
Parag.



More information about the sane-devel mailing list