[sane-devel] PATCH : Disallowing sane-find-scanner to detect Non-Scanner USB devices

bertrik at sikken.nl bertrik at sikken.nl
Wed Aug 9 09:22:15 UTC 2006

> Hi,
> On 8/9/06, Johannes Meixner <jsmeix at suse.de> wrote:
>> Hello,
>> On Aug 9 13:03 Parag N(????) wrote (shortened):
>> > With reference to Johannes Meixner's mail to this mailing list
>> > http://lists.alioth.debian.org/pipermail/sane-devel/2006-August/017446.html,
>> > I have created a patch that will make sane-find-scanner not to detect
>> > Non-Scanner USB devices.
>> The following in the patch looks wrong for me:
>> ----------------------------------------------------------------
>> +                if (i->bInterfaceClass == 255)
>> +                    {
>> +                       --is_scanner;
>> ----------------------------------------------------------------
>> because there are USB scanners which have bInterfaceClass = 255
>> e.g. my Epson all-in-one device, see my other mail where I
>> listed sane-find-scanner and lsusb results on three hosts:
>> ----------------------------------------------------------------
>> Bus 002 Device 003: ID 04b8:080f Seiko Epson Corp.
>>   bDeviceClass            0 (Defined at Interface level)
>>   idVendor           0x04b8 Seiko Epson Corp.
>>   idProduct          0x080f
>>       bInterfaceClass       255 Vendor Specific Class
>>       iInterface              5 EPSON Scanner
>>       bInterfaceClass         7 Printer
>>       iInterface              6 USB Printer
>>       bInterfaceClass         8 Mass Storage
>>       iInterface              7 USB Mass Storage
>> ----------------------------------------------------------------
>> and my plain Epson USB scanner has also bInterfaceClass = 255
>> ----------------------------------------------------------------
>> Bus 001 Device 002: ID 04b8:0121 Seiko Epson Corp.
>>   bDeviceClass          255 Vendor Specific Class
>>   idVendor           0x04b8 Seiko Epson Corp.
>>   idProduct          0x0121
>>       bInterfaceClass       255 Vendor Specific Class
>>       iInterface              0
>> ----------------------------------------------------------------
>    Thanks for replying and testing patch. So this is not useful to
> make sane-find-scanner not to show up non USB Scanner devices.
>     I agree only option then to have a proper maintained list from all
> supported scanners by sane-backend.
>     I got an idea how about writing a code that will parse each
> vendor's descriptions files and show up its name,usb id's, backend
> status like good,basic,complete? I also found not all entries in .desc
> files have usb id's.

As far as I know, there are two ways of detecting a scanner:
1) scanimage -L, which asks all installed backends to report a supported
2) sane-find-scanner, which makes a rough guess based on the USB descriptors
   and on several scanner-chip specific detection algorithms.

Detection by sane-find-scanner will never be exact. As far as I understand,
this tool is supposed to find scanners even if they are not supported yet
by sane. Therefore there will always be some false positives.
Simply patching it up based on a specific false positive will indeed result
in at least one less false positive but will very likely also result in
*more* false negatives.

So I think the patch should not be applied to sane-find-scanner, but
perhaps the wording used in sane-find-scanner can be more conservative
when it thinks it has detected a scanner.

I think a list of USB ids can only be useful for sane-find-scanner to
positively identify a scanner, not for deciding somehing is NOT a scanner.

Kind regards,

More information about the sane-devel mailing list