Bug 701368

Summary: Particular USB mouse gets disabled when finding USB devices via libusb (e.g. by running sane-find-scanner)
Product: [openSUSE] openSUSE 12.1 Reporter: Hendrik Woltersdorf <hendrikw>
Component: KernelAssignee: Oliver Neukum <oneukum>
Status: RESOLVED WONTFIX QA Contact: E-mail List <qa-bugs>
Severity: Minor    
Priority: P5 - None CC: jsmeix
Version: Milestone 1   
Target Milestone: ---   
Hardware: i686   
OS: openSUSE 12.1   
Whiteboard:
Found By: Community User Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: debug log of sane-find-scanner and /var/log/messages of unplugging and plugging in the mouse after it got disabled (for hardware info)
new system logs from sane-find-scanner runs
lsusb output
lsusb -t output
lsusb -D output
output of sane-findscanner -v -v
2. output of sane-find-scanner -v -v

Description Hendrik Woltersdorf 2011-06-21 18:10:05 UTC
Created attachment 435761 [details]
debug log of sane-find-scanner and /var/log/messages of unplugging and plugging in the mouse after it got disabled (for hardware info) 

User-Agent:       Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1

When I run sane-find-scanner a couple of times the USB mouse gets disabled. One (or two) more run(s) of sane-find-scanner re-enables the mouse. Or I unplug and plug in the mouse again, to make it work again. 
I will add a attachment with the debug log of sane-find-scanner.
I tested this with OpenSUSE 12.1 Milestone, kernel 2.6.39-2-desktop #1 SMP PREEMPT Mon May 23 11:35:38 UTC 2011 (3b6edff) i686 i686 i386 GNU/Linux
and an OpenSUSE 11.4 KDE live cd with kernel 2.6.37.1-1.2-default #1 SMP 2011-02-21 10:34:10 +0100 i686 i686 i386 GNU/Linux
and always sane-backends 1.0.22.
I did not test this with other usb devices than this mouse.

Reproducible: Sometimes

Steps to Reproduce:
1. become root
2. run sane-find-scanner until the mouse gets disabled
3.
Actual Results:  
The mouse stops working.

Expected Results:  
The mouse should keep on working.

The computer is a six years old Fujitsu Siemens Celsius H230 laptop.
Comment 1 Johannes Meixner 2011-07-14 08:13:40 UTC
*** Bug 697694 has been marked as a duplicate of this bug. ***
Comment 2 Hendrik Woltersdorf 2011-08-14 18:31:51 UTC
Today I retested this with the current factory versions, that should be openSUSE 12.1 Milestone 4.

sane: sane-backends-1.0.22-13.6.i586
kernel: Linux lthendrik.site 3.0.0-2-desktop #1 SMP PREEMPT Fri Jul 22 08:28:15 UTC 2011 (50c05d7) i686 i686 i386 GNU/Linux

The issue with the mouse still exists.
I tested with two other USB devices, an external hard disk and a DVB-T-stick. Both devices keep working, when the mouse gets blocked.

hwinfo --mouse shows this about that USB mouse:

lthendrik:/home/hendrik # hwinfo --mouse
39: USB 00.0: 10503 USB Mouse                                   
  [Created at usb.122]
  Unique ID: FKGF.IvHLBRRchEC
  Parent ID: pBe4.v+N+B0xY+P6
  SysFS ID: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0
  SysFS BusID: 2-1:1.0
  Hardware Class: mouse
  Model: "STMicroelectronics Imaging Division (VLSI Vision) 5 button optical mouse with scroll wheel"
  Hotplug: USB
  Vendor: usb 0x0553 "STMicroelectronics Imaging Division (VLSI Vision)"
  Device: usb 0x0a02 "5 button optical mouse with scroll wheel"
  Revision: "1.00"
  Compatible to: int 0x0210 0x0015
  Driver: "usbhid"
  Driver Modules: "usbhid"
  Device File: /dev/input/mice (/dev/input/mouse0)
  Device Files: /dev/input/mice, /dev/input/mouse0, /dev/input/event1, /dev/input/by-id/usb-5_button_optical_mouse_with_scroll_wheel_5_button_optical_mouse_with_scroll_wheel-event-mouse, /dev/input/by-path/pci-0000:00:1d.0-usb-0:1:1.0-event-mouse, /dev/input/by-id/usb-5_button_optical_mouse_with_scroll_wheel_5_button_optical_mouse_with_scroll_wheel-mouse, /dev/input/by-path/pci-0000:00:1d.0-usb-0:1:1.0-mouse
  Device Number: char 13:63 (char 13:32)
  Speed: 1.5 Mbps
  Module Alias: "usb:v0553p0A02d0100dc00dsc00dp00ic03isc01ip02"
  Driver Info #0:
    Buttons: 5
    Wheels: 1
    XFree86 Protocol: explorerps/2
    GPM Protocol: exps2
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #35 (Hub)
Comment 3 Hendrik Woltersdorf 2012-02-12 08:19:29 UTC
More versions, more tests:

openSUSE 12.1 Final : bug still there
openSUSE 12.1 Final with Tumbleweed (kernel 3.2): bug still there

openSUSE 12.2 Milestone 1: bug is gone
Comment 4 Oliver Neukum 2012-03-07 07:40:27 UTC
Please attach dmesg of the failure case. The log attached in the description begins too late.
Comment 5 Hendrik Woltersdorf 2012-03-07 18:22:03 UTC
Created attachment 480136 [details]
new system logs from sane-find-scanner runs

I reinstalled OS 12.1 at the test machine, and let sane-find-scanner run until the mouse got blocked. Another run of  sane-find-scanner unblocked the mouse.
After that I copied /var/log/messages und the output of dmesg.
Comment 6 Oliver Neukum 2012-03-08 08:49:27 UTC
There's simply nothing unusual in the log. Odd. Can you please run "lsusb -v" after the scanner has blocked and attach the reslt?
Comment 7 Hendrik Woltersdorf 2012-03-08 19:42:26 UTC
Created attachment 480498 [details]
lsusb output

I attached the output of lsusb -v before and after the mouse got blocked by sane-find-scanner.
Comment 8 Oliver Neukum 2012-03-09 10:14:31 UTC
Also nothing wrong. Can you please provide the output of "lsusb -t" before and after blockage?
Comment 9 Hendrik Woltersdorf 2012-03-09 18:19:42 UTC
Created attachment 480769 [details]
lsusb -t output
Comment 10 Hendrik Woltersdorf 2012-03-09 18:26:17 UTC
Created attachment 480771 [details]
lsusb -D output

One more try with: lsusb -D /dev/bus/usb/003/002
There is a difference.
Comment 11 Oliver Neukum 2012-03-21 09:17:47 UTC
(In reply to comment #10)
> Created an attachment (id=480771) [details]
> lsusb -D output
> 
> One more try with: lsusb -D /dev/bus/usb/003/002
> There is a difference.

I am afraid I am too stupid to see it. Could you clarify?
Comment 12 Hendrik Woltersdorf 2012-03-21 14:54:40 UTC
before:
  iManufacturer           1 5 button optical mouse with scroll wheel
  iProduct                3 5 button optical mouse with scroll wheel
after:
  iManufacturer           1 
  iProduct                3 

Not much of a difference and probably not helpful:(
Comment 13 Oliver Neukum 2012-03-26 10:19:33 UTC
(In reply to comment #3)
> More versions, more tests:
> 
> openSUSE 12.1 Final : bug still there
> openSUSE 12.1 Final with Tumbleweed (kernel 3.2): bug still there
> 
> openSUSE 12.2 Milestone 1: bug is gone

Very well. Could you try the kernel of the working version on your system?
Comment 14 Hendrik Woltersdorf 2012-03-26 18:45:59 UTC
I tested 12.1 + Tumbleweed (kernel 3.3.0-16-desktop) against 12.2 Milestone 2 (kernel 3.3.0-rc6-1-default). Again in 12.1 the problem was still there and in 12.2 not. But then I checked the output of "sane-find-scanner -v" of both versions and found in the 12.2-version an error message:
"libusb not available"
So I think, that the 12.2-version does not even read/write _any_ USB device and is therefore not able to cause any problems. 
This might by worth a bug report of its own. But my scanner is not attached by USB and I cannot check, if sane-find-scanner is able to detect USB devices.
Comment 15 Oliver Neukum 2012-04-17 12:54:00 UTC
(In reply to comment #14)

> versions and found in the 12.2-version an error message:
> "libusb not available"

This is odd due to a kernel change. Please check for the availability of libusb
with the rpm tool.
Comment 16 Hendrik Woltersdorf 2012-04-17 19:09:05 UTC
I am sure, that libusb was there. But in the meantime I installed openSUSE 12.2 Milestone 3. In this version the error message about missing libusb is gone, but now the problem (mouse freezes) is back. 
I also tested different mouse models from another vendor (Logitech). With these mice I don't have this problem.
Comment 17 Oliver Neukum 2012-04-18 08:07:02 UTC
Johannes, this suggests strongly that this is a problem with the firmware of the mouse in question. Can we teach sane-find-scanner to leave such devices alone? Is there a scanner that pretends to be an HID device?
Comment 18 Johannes Meixner 2012-04-18 08:44:34 UTC
I am afraid, I do not know if there are plain USB scanner devices
or USB all-in-one devices (with a built-in scanner unit)
which use USB device classes other than
- 255 "Vendor Specific Class" (usually for plain scanners) or
- 7 "Printer" (usually for all-in-one devices).

I think as long as sane-find-scanner only reads libusb information
it cannot cause the USB mouse device to become disconnected.

I think it is that sane-find-scanner also tries to find out the
type of USB chip used in the device which causes the trouble
with this particular USB mouse, see "man sane-find-scanner".

Hendrik Woltersdorf,
in https://bugzilla.novell.com/show_bug.cgi?id=697694#c10
I wrote "sane-find-scanner -vv" which was unfortunately a typo
because "sane-find-scanner -vv" is the same as "sane-find-scanner -v".

To get the USB device descriptor information please run as root

# sane-find-scanner -v -v

and attach its output as MIME type "text/plain".

E.g. on my workstation "sane-find-scanner -v -v" results:
---------------------------------------------------------------------------
This is sane-find-scanner ...
...
searching for SCSI scanners:
...
searching for USB scanners:
...
trying libusb:
...
<device descriptor of 0x04a9/0x220e at 008:002 (Canon CanoScan)>
...
<trying to find out which USB chip is used>
  checking for GT-6801 ...
  this is not a GT-6801 (bDeviceSubClass = 0x0)
  checking for GT-6816 ...
  this is not a GT-6816 (bDeviceClass = 255, bInterfaceClass = 255)
  checking for GT-8911 ...
  this is not a GT-8911 (check 1, bDeviceClass = 255, bInterfaceClass = 255)
  checking for MA-1017 ...
  this is not a MA-1017 (bDeviceClass = 255, bInterfaceClass = 255)
  checking for MA-1015 ...
  this is not a MA-1015 (bcdUSB = 0x110)
  checking for MA-1509 ...
  this is not a MA-1509 (bDeviceSubClass = 0x0)
  checking for LM983[1,2,3] ...
<This USB chip looks like a LM9832/3

found USB scanner (vendor=0x04a9 [Canon], product=0x220e [CanoScan],
 chip=LM9832/3) at libusb:008:002
...
done
---------------------------------------------------------------------------

My assumption is that for Hendrik Woltersdorf's USB mouse device
sane-find-scanner is "trying to find out which USB chip is used"
and that causes the trouble.
Comment 19 Hendrik Woltersdorf 2012-04-18 16:30:15 UTC
Created attachment 486731 [details]
output of sane-findscanner -v -v
Comment 20 Johannes Meixner 2012-04-19 09:06:55 UTC
Hendrik Woltersdorf,
Was your "5 button optical mouse with scroll wheel" again
disconnected when you did run "sane-find-scanner -v -v"?

Your attachment #486731 [details]
does not show any "trying to find out which USB chip is used"
in particular not for your "5 button optical mouse with scroll wheel"
so that it seems my above assumption is wrong.

I need to ckeck in detail what the check_libusb_device function
which is called by sane-find-scanner actually does - but I am
not at all an USB expert so that this may take a while...

I set needinfo to myself while I ckeck check_libusb_device.
Comment 21 Johannes Meixner 2012-04-19 09:39:21 UTC
There are two check_libusb_device functions in tools/sane-find-scanner.c
in the SANE sources, one "#ifdef HAVE_LIBUSB" and
one "#ifdef HAVE_LIBUSB_1_0".

As far as I see the check_libusb_device functions only test
libusb values and does not communicate with the USB device
(long lines shown wrapped here):
------------------------------------------------------------------------------
#ifdef HAVE_LIBUSB
...
  for (interface_nr = 0; interface_nr < dev->config[0].bNumInterfaces && is_scanner <= 0; interface_nr++)
    {
      switch (dev->descriptor.bDeviceClass)
        {
        case USB_CLASS_VENDOR_SPEC:
          ++is_scanner;
          break;
        case USB_CLASS_PER_INTERFACE:
          if (dev->config[0].interface[interface_nr].num_altsetting == 0 ||
              !dev->config[0].interface[interface_nr].altsetting)
            break;
          switch (dev->config[0].interface[interface_nr].altsetting[0].bInterfaceClass)
            {
            case USB_CLASS_VENDOR_SPEC:
            case USB_CLASS_PER_INTERFACE:
            case 16:                /* data? */
              ++is_scanner;
              break;
            }
          break;
        }
    }

  if (is_scanner > 0)
    {
      char * chipset = check_usb_chip (dev, verbose, from_file);

      printf ("found USB scanner (vendor=0x%04x", dev->descriptor.idVendor);
...
#ifdef HAVE_LIBUSB_1_0
...
  for (intf = 0; (intf < config0->bNumInterfaces) && (is_scanner <= 0); intf++)
    {
      switch (desc.bDeviceClass)
        {
          case USB_CLASS_VENDOR_SPEC:
            ++is_scanner;
            break;
          case USB_CLASS_PER_INTERFACE:
            if ((config0->interface[intf].num_altsetting == 0)
                || config0->interface[intf].altsetting)
              break;
            switch (config0->interface[intf].altsetting[0].bInterfaceClass)
              {
                case USB_CLASS_VENDOR_SPEC:
                case USB_CLASS_PER_INTERFACE:
                case 16:                /* data? */
                  ++is_scanner;
                  break;
              }
            break;
        }
    }
...
  if (is_scanner > 0)
    {
#if 0
      char *chipset = check_usb_chip (dev, verbose, from_file);
#endif

      printf ("found USB scanner (vendor=0x%04x", vid);
------------------------------------------------------------------------------
where include/sane/sanei_usb.h lists
------------------------------------------------------------------------
#define USB_CLASS_VENDOR_SPEC           0xff
#define USB_CLASS_PER_INTERFACE         0x00
------------------------------------------------------------------------

As far as I see sane-find-scanner only does check_usb_chip
when the USB device class is 255 "Vendor Specific Class"
and then it would print "found USB scanner" which is
not the case in attachment #486731 [details]

Therefore - from my point of view - there is no code in sane-find-scanner
which can trigger that the "5 button optical mouse with scroll wheel"
gets disconnected.

But I am not at all an USB expert so that my analysis could be wrong.
Comment 22 Oliver Neukum 2012-04-19 11:53:22 UTC
(In reply to comment #21)

> As far as I see the check_libusb_device functions only test
> libusb values and does not communicate with the USB device
> (long lines shown wrapped here):

The descriptors which libusb evaluates are first retrieved from the device. According to the USB spec devices must always be able to deliver the device descriptors. This particular mouse seems to have a buggy firmware that expects a request for device descriptors only at the times a certain other OS requests them.

I am afraid SANE needs to have a blacklist entry for this device based on a VID:PID pair.
Is there a facility for that in SANE?
Comment 23 Johannes Meixner 2012-04-19 13:36:01 UTC
As far as I see in the SANE sources for the sanei_usb_init function
in sanei/sanei_usb.c it calls the libusb functions
usb_init(); usb_find_busses(); usb_find_devices ();
before it loops through all of the busess and all of the devices
to find USB devices with "USB_CLASS_VENDOR_SPEC":
-----------------------------------------------------------------------
sanei_usb_init
...
  DBG (4, "sanei_usb_init: Looking for libusb devices\n");
  usb_init ();
#ifdef DBG_LEVEL
  if (DBG_LEVEL > 4)
    usb_set_debug (255);
#endif /* DBG_LEVEL */

  usb_find_busses ();
  usb_find_devices ();

  /* Check for the matching device */
  for (bus = usb_get_busses (); bus; bus = bus->next)
    {
      for (dev = bus->devices; dev; dev = dev->next)
        {
-----------------------------------------------------------------------

Hendrik Woltersdorf,
you could run
------------------------------------------------
# export SANE_DEBUG_SANEI_USB=128
# sane-find-scanner -v -v 2>&1 | less
------------------------------------------------
to get additionally SANE USB debug messages.
Check for "Looking for libusb devices" and subsequent messages.

I.e. SANE works - as far as I see - as described in
http://libusb.sourceforge.net/doc/examples-code.html

I assume this particular "5 button optical mouse with scroll wheel"
USB devices would get disconnected when any program calls the
libusb functions usb_init(); usb_find_busses(); usb_find_devices();

I do not understand how blacklisting in SANE could help at all
when a device get disconnected when the libusb functions
usb_init(); usb_find_busses(); usb_find_devices();
are called because those functions are not device specific.

Therefore I think a blacklist for broken USB devices
which get disconnected when those libusb functions
are called as described in the libusb Developers Guide
might work if it happens in libusb to avoid such issues
for any program and not only for SANE programs.

On the other hand:
If a broken USB device would be blacklisted in libusb
(so that libusb ignores it), how could it be used at all?

In the end I think blacklisting would not really help
(at least not in SANE).

As far as I see all what Hendrik Woltersdorf could do
with his "5 button optical mouse with scroll wheel"
is to re-plug it whenever it got disconnected.

I will ask on the sane-devel@lists.alioth.debian.org
mailing list what SANE upstream thinks about
blacklisting USB devices in SANE because in
other exceptional cases it might make sense.

I close the issue as WONTFIX for openSUSE which means
that we (i.e. openSUSE) will not (and probably cannot)
implement something to work around such broken USB devices.
Comment 24 Hendrik Woltersdorf 2012-04-19 18:36:50 UTC
Created attachment 487029 [details]
2. output of sane-find-scanner -v -v

Not every run of sane-find-scanner disables this mouse and I do not run sane-find-scanner all day long. So this is a minor problem and WONTFIX is fine with me.
I attached 2 outputs of sane-find-scanner with "SANE_DEBUG_SANEI_USB=128". 
sf_128.log   : run without disabling the mouse
sf_128_2.log : run with disabling the mouse
Comment 25 Johannes Meixner 2012-04-20 14:55:27 UTC
Whether or not the issue is closed as WONTFIX (at least for now)
does not hinder us to continue (but it is no longer seen as an
open bug in openSUSE which is the main reason to have it closed).

"diff -u1 sf_128.log sf_128_2.log" shows (long lines wrapped here):
--------------------------------------------------------------------------
--- sf_128.log  2012-04-19 20:27:59.000000000 +0200
+++ sf_128_2.log        2012-04-19 20:28:11.000000000 +0200
@@ -262,3 +262,3 @@
 
-<device descriptor of 0x0553/0x0a02 at 002:002 (5 button optical
 mouse with scroll wheel 5 button optical mouse with scroll wheel)>
+<device descriptor of 0x0553/0x0a02 at 002:002 (5 button optical
 mouse with scroll wheel 5 button optica)>
 bLength               18
@@ -274,3 +274,3 @@
 iManufacturer         1 (5 button optical mouse with scroll wheel)
-iProduct              3 (5 button optical mouse with scroll wheel)
+iProduct              3 (5 button optica)
 iSerialNumber         0 ()
--------------------------------------------------------------------------

In sf_128_2.log (with disabling the mouse) the iProduct string is
truncated (the device descriptor shows the iManufacturer and iProduct
strings which are identical in this case).

The truncated iProduct string indicates - from my non-expert point
of view - that the communication with the USB device got somehow
corrupted.

In particular the diff shows that there is nothing different
regarding what SANE does in both cases which indicates - from
my non-expert point of view - that the root cause is not
in SANE.


But perhaps it might make a difference whether or not the
old libusb0 is used or the newer libusb1 to communicate
with USB devices.

Currently the sane-backends packages uses the old libusb0
but not directly as in the beginning but since some time
via the compatibility layer libusb-compat and this
compatibility layer had already caused some issues
in particular bnc#559697 and bnc#596411 - see
https://bugzilla.novell.com/show_bug.cgi?id=559697#c7
for the libusb naming and versioning numbering.

Because newer sane-backends versions support libusb1 directly
I updated our sane-backends package right now in its OBS
development project "graphics" to use libusb1 directly.

Hendrik Woltersdorf,
if you like you may try out for testing if our newest
sane-backends package from the "graphics" project
works better for you.

It is available as ready-made RPMs for openSUSE 11.4 and 12.1
via the "graphics" development project in the openSUSE build
service for 32-bit i586 and 64-bit x86_64 architecture.

E.g. for openSUSE 12.1 32-bit architecture from this direct URL
http://download.opensuse.org/repositories/graphics/openSUSE_12.1/i586/

The newest sane-backends package contains this RPM changelog entry:
----------------------------------------------------------------------
# rpm -q --changelog sane-backends | head -n3
* Fri Apr 20 2012 jsmeix@suse.de
- Configure --enable-libusb_1_0 plus BuildRequires libusb-1_0-devel
  to use libusb1 (instead of using libusb0 via libusb-compat),
----------------------------------------------------------------------

Do not use "Factory" if your system is not "Factory".
Use the matching packages for your particular system.
The packages in the "graphics" development project are
only for testing, without any guarantee or warranty,
and without any support. As an extreme example, this means
if your complete computer center crashes because of those
packages, it is only your problem. On the other hand
this does not mean that those packages are known to be
terrible broken but they are not thoroughly tested
so that any unexpected issue can happen.

I appreciate any feedback whether or not sane-backends
from the "graphics" project works for you.

Many Thanks in advance for testing it!
Comment 26 Hendrik Woltersdorf 2012-04-20 19:40:25 UTC
I tested the sane-backends from the "graphics" repository. Now things got worse. When the mouse got disabled, that disabled state survived a reboot. I needed to plug in a different mouse (Logitech M90), which worked. After that the "problem-mouse" did work again. See the corresponding dmesg output:
...
[   91.682054] usb 2-1: new low-speed USB device number 6 using uhci_hcd
[   91.847053] usb 2-1: device descriptor read/64, error -71
[   92.061064] usb 2-1: device descriptor read/64, error -71
[   92.264067] usb 2-1: new low-speed USB device number 7 using uhci_hcd
[   92.429069] usb 2-1: device descriptor read/64, error -71
[   92.643024] usb 2-1: device descriptor read/64, error -71
[   92.846082] usb 2-1: new low-speed USB device number 8 using uhci_hcd
[   93.254079] usb 2-1: device not accepting address 8, error -71
[   93.356085] usb 2-1: new low-speed USB device number 9 using uhci_hcd
[   93.764078] usb 2-1: device not accepting address 9, error -71
[   93.764097] hub 2-0:1.0: unable to enumerate USB device on port 1
[  109.126051] usb 3-2: new low-speed USB device number 2 using uhci_hcd
[  109.291047] usb 3-2: device descriptor read/64, error -71
[  109.505052] usb 3-2: device descriptor read/64, error -71
[  109.708062] usb 3-2: new low-speed USB device number 3 using uhci_hcd
[  109.822062] usb 3-2: device descriptor read/64, error -71
[  110.087075] usb 3-2: device descriptor read/64, error -71
[  110.290104] usb 3-2: new low-speed USB device number 4 using uhci_hcd
[  110.699045] usb 3-2: device not accepting address 4, error -71
[  110.801084] usb 3-2: new low-speed USB device number 5 using uhci_hcd
[  111.209079] usb 3-2: device not accepting address 5, error -71
[  111.209099] hub 3-0:1.0: unable to enumerate USB device on port 2
[  204.306086] usb 2-1: new low-speed USB device number 10 using uhci_hcd
[  204.520139] usb 2-1: New USB device found, idVendor=046d, idProduct=c05a
[  204.520149] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  204.520156] usb 2-1: Product: USB Optical Mouse
[  204.520162] usb 2-1: Manufacturer: Logitech
[  204.538700] input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input10
[  204.539000] generic-usb 0003:046D:C05A.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:1d.0-1/input0
[  221.454121] usb 2-1: USB disconnect, device number 10
[  231.156087] usb 2-1: new low-speed USB device number 11 using uhci_hcd
[  231.384142] usb 2-1: New USB device found, idVendor=0553, idProduct=0a02
[  231.384151] usb 2-1: New USB device strings: Mfr=1, Product=3, SerialNumber=0
[  231.384159] usb 2-1: Product: 5 button optical mouse with scroll wheel
[  231.384166] usb 2-1: Manufacturer: 5 button optical mouse with scroll wheel
[  231.403083] input: 5 button optical mouse with scroll wheel 5 button optical mouse with scroll wheel as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input11
[  231.403626] generic-usb 0003:0553:0A02.0002: input,hidraw0: USB HID v1.10 Mouse [5 button optical mouse with scroll wheel 5 button optical mouse with scroll wheel] on usb-0000:00:1d.0-1/input0

--------------------------------------------
I tried two times in different ports the problem-mouse before using the Logitech model.

--------------------------------------------
lthendrik:/home/hendrik # rpm -qa sane-backends
sane-backends-1.0.22-72.1.i586
Comment 27 Hendrik Woltersdorf 2012-04-22 10:59:14 UTC
Precision: That odd behavior happened after I upgraded only the sane-backends package. Later I did a "zypper dup" (the recommended update method for OS 12.1+Tumbleweed) and beside a lot of other packages, including a new kernel, the package sane-backends-autoconfig got updated too.
After these updates the behavior returned to "normal". That means, it is no longer necessary to plug in a different mouse model to revive the "problem-mouse".