[sane-devel] "hp4200" backend detects non-HP scanners as HP ScanJet 4200
Till Kamppeter
till.kamppeter at gmx.net
Fri Aug 29 14:36:42 BST 2003
This is a bug reported by someone with an Epson Perfection 1650 who
tested the release candidate 1 of the new Mandrake 9.2:
https://qa.mandrakesoft.com/show_bug.cgi?id=4987
For Mandrake 9.2 I have packaged SANE 1.0.12 with "hp4200" version 0.4.
I can also reproduce the bug with my Epson Perfection 1260 Photo and the
same software versions.
I have a system with an HP PSC 950 and an Epson Perfection 1260 Photo
and I get the following:
---------------------------------------------------------------------------
[root at majax g]# sane-find-scanner | grep -v \#
found USB scanner (vendor=0x04b8, product=0x011d) at /dev/usb/scanner0
found USB scanner (vendor=0x04b8 [EPSON], product=0x011d [EPSON
Scanner]) at libusb:001:115
[root at majax g]# scanimage -L
device `hpoj:mlc:usb:PSC_900_Series' is a Hewlett-Packard PSC 900 Series
multi-function peripheral
device `plustek:/dev/usb/scanner0' is a Epson Perfection 1260/Photo USB
flatbed scanner
device `hp4200:/dev/usb/scanner0' is a Hewlett-Packard HP-4200 flatbed
scanner
[root at majax g]#
---------------------------------------------------------------------------
and /proc/bus/usb/devices has the following entries
---------------------------------------------------------------------------
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 22/900 us ( 2%), #Int= 2, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=1000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 7
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0451 ProdID=2077 Rev= 1.00
S: Product=General Purpose USB Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms
T: Bus=01 Lev=02 Prnt=02 Port=04 Cnt=01 Dev#=115 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=ff(vend.) Sub=00 Prot=ff MxPS= 8 #Cfgs= 1
P: Vendor=04b8 ProdID=011d Rev= 1.00
S: Manufacturer=EPSON
S: Product=EPSON Scanner
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff Driver=usbscanner
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=16ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
T: Bus=01 Lev=02 Prnt=02 Port=05 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=03f0 ProdID=1e11 Rev= 1.00
S: Manufacturer=Hewlett-Packard
S: Product=PSC 950xi
S: SerialNumber=MY21AC21J6WP
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=07(print) Sub=01 Prot=03 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I: If#= 0 Alt= 1 #EPs= 2 Cls=07(print) Sub=01 Prot=02 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 0 Alt= 2 #EPs= 1 Cls=07(print) Sub=01 Prot=01 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
---------------------------------------------------------------------------
So my Epson Perfection 1260 Photo is detected both as Epson and as HP
(/dev/usb/scanner0).
If I unload the scanner.o kernel module with
rmmod scanner.o
my scanners are correctly detected (The HP 4200 disappears, the other
two stay). So the problem only happens with access to the scanners via
the kernel module but not with user-mode USB access via libusb.
This seems for me to be a bug in the "hp4200" backend that it recognizes
also scanners which use other drivers (and will not necessarily work
with "hp4200").
Or is it safe to not use scanner.o any more at all, for example shipping
Mandrake Linux with a kernel without this module or at least adding a
line to /etc/modules.conf to suppress automatic loading of the module?
Are there really scanners/backends which need scanner.o?
What is the advantage of scanner.o vs. libusb?
Till
More information about the sane-devel
mailing list