[sane-devel] Timeouts: usb_reset seems necessary to avoid bulk
timeouts.
Olaf Meeuwissen
olaf@epkowa.co.jp
Tue, 15 Jun 2004 13:31:18 +0900
Hi Tom,
Henning Meier-Geinitz <henning@meier-geinitz.de> writes:
> Hi,
>
> On Wed, Jun 09, 2004 at 04:48:51PM +0100, Tom Schutzer-Weissmann wrote:
>> I had problems using the Epkowa libraries (libsane-epkowa) and the
>> iscan frontend with my usb scanner in kernel 2.6.
>
>> The scanner was closed after each operation. Once closed, nothing
>> could be read from it, and I got lots of BULK TIMEOUTs, although
>> there were no errors when the device was reopened.
>>
>> By modifying the code so that usb_reset() was always called before
>> usb_release_interface() and usb_close(), I solved the problem.
>
> Doesn't usb_reset() cause a renumeration and therefore the device gets
> a new device file? I guess this isn't the default for closing USB
> devices. Maybe the usb_reset just hides a bug in the SANE backend,
> libusb or the kernel.
Henning is right about the re-enumeration. As far as I understand the
docs, that means that after calling usb_reset(), you may no longer use
the handle you have. Problem is, it *is* used twice after that call.
If the documentation is serious about this re-enumeration, than your
"fix" is incorrect and has the potential to break support for *all*
SANE supported USB devices.
That it works for you is mere coincidence.
FYI: http://libusb.sourceforge.net/doc/function.usbreset.html
That leads us to a bug in the epson/epkowa backends, quite possibly
caused by undocumented behaviour of this particular scanner. :-(
--
Olaf Meeuwissen EPSON KOWA Corporation, PF1
FSF Associate Member #1962 sign up at http://member.fsf.org/
GnuPG key: 6BE37D90/AB6B 0D1F 99E7 1BF5 EB97 976A 16C7 F27D 6BE3 7D90
Penguin's lib! -- I hack, therefore I am -- LPIC-2