Re: Scanner works on USB-2 port but not on USB-3 because of usbfs claiming the interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Am 23.02.2012 19:23, schrieb Alan Stern:
On Thu, 23 Feb 2012, Harald Judt wrote:

Hi,

I've been asked to contact this mailing list regarding
https://bugzilla.kernel.org/show_bug.cgi?id=42784:

Using the same configuration (kernel-3.3-rc4 and older versions), Canon
CanoScan LiDE 20 USB scanner works on the USB-2.0 port, but not on USB-3.0.

usb 5-1: usbfs: interface 0 claimed by usbfs while 'scanimage' sets
config #1

This message is not printed when using USB-2.0.

You can get more information in the dmesg log if you do:

	echo true>/sys/module/usbcore/parameters/usbfs_snoop

before plugging in the scanner.  Compare the results for the two
different ports.

scanimage -L:
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

lsusb:
Bus 001 Device 005: ID 04a9:220d Canon, Inc. CanoScan N670U/N676U/LiDE 20

The scanner can be reset using the reset code from
https://bugzilla.redhat.com/show_bug.cgi?id=723696 after adapting the
vendor_id and product_id to match those of the Canon scanner:
usb 5-1: new full-speed USB device number 3 using xhci_hcd
usb 5-1: usbfs: interface 0 claimed by usbfs while 'scanimage' sets
config #1
usb 5-1: reset full-speed USB device number 3 using xhci_hcd
xhci_hcd 0000:05:00.0: xHCI xhci_drop_endpoint called with disabled ep
ffff880419ba0e40

The next scanimage -L successfully detects the scanner:
scanimage -L
device `plustek:libusb:005:003' is a Canon CanoScan N670U/N676U/LiDE20
flatbed scanner

Unfortunately, it will stop working after a while; There will be
messages like "usb 5-1: usbfs: process 12345 (scanbuttond) did not claim
interface 0 before use" on repeated use.

That's just a warning.  It indicates the scanbuttond program is doing
something wrong, but mostly you can ignore it.

If I'm not mistaken, the USB3 chipset is an Etrontech EJ168A (AsRock P67
Extreme 4 Gen2).

Why does usbfs claim the device on USB-3, but not on USB-2? What's wrong
here, is there a way to solve it, what can I do about it?

Probably usbfs does claim the interface on both ports, but in one case
the claim is before the reset or before the use and, in the other case
it is after.  The usbfs_snoop information should show what's going on.

As for fixing it, there's no way to know until we find out exactly what
the problem is.

Alan Stern

Thanks for your response. I performed the following steps:

1) Deactivate the udev rules which start scanbuttond, so it won't get in the way, because it spawns its own scanimage process at initialization.
2) echo 1 > /sys/module/usbcore/parameters/usbfs_snoop
3) Connect scanner to usb2 port and execute scanimage -L, disconnect scanner. 4) Connect scanner to usb3 port and execute scanimage -L, break out of the ever-looping scanimage using <C>-<c>, disconnect scanner.

I've attached the kernel logs for step 3 and step 4. As they're not so small, I bzipped them, I hope that's ok for you.

In step 4 scanimage hung until I interrupted it, producing lots of the following repeated lines in dmesg:
usb 5-1: usbdev_do_ioctl: REAPURBNDELAY
To save you from excessive scrolling, I've deleted most of these repeated lines, as you will recognize when looking at the timestamps.

Harald

--
`Experience is the best teacher.'

Attachment: scanimage-usb2.dmesg.bz2
Description: application/bzip

Attachment: scanimage-usb3.dmesg.bz2
Description: application/bzip


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux