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

Johannes Meixner jsmeix at suse.de
Tue Aug 8 13:18:04 UTC 2006


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.


Kind Regards
Johannes Meixner
-- 
SUSE LINUX Products GmbH, Maxfeldstrasse 5      Mail: jsmeix at suse.de
90409 Nuernberg, Germany                    WWW: http://www.suse.de/



More information about the sane-devel mailing list