Bug 670546

Summary: some devices respond poorly to mtp-probe
Product: [Fedora] Fedora Reporter: Nalin Dahyabhai <nalin>
Component: libmtpAssignee: Linus Walleij <triad>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: medium    
Version: rawhideCC: triad
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-03-31 22:01:03 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Nalin Dahyabhai 2011-01-18 16:15:54 UTC
Description of problem:
On an HP tx1320 laptop, mtp-probe causes the touchscreen device to disconnect from the bus and reappear.  When it reappears, mtp-probe is run against it and it disconnects again, repeating indefinitely.  Desktop applications which try to keep up with the input device insertions and removals tend to crash when they notice that there's a new device, but it disappears before they can finish reconfiguring to use it.

Version-Release number of selected component (if applicable):
libmtp-1.0.4-1.fc15.x86_64

How reproducible:
Always

Steps to Reproduce:
1. Boot the system with an older libmtp (1.0.3, for example).
2. Use lsusb to find the touchscreen device (in my case, bus 1 device 8).
3. As root, run mtp-probe /sys/devices 1 8
  
Actual results:
The kernel logs these messages:
[ 2454.816548] usb 1-2.3: USB disconnect, address 8
[ 2455.065298] usb 1-2.3: new full speed USB device using ehci_hcd and address 9
[ 2455.153950] usb 1-2.3: New USB device found, idVendor=0eef, idProduct=0001
[ 2455.153960] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2455.153969] usb 1-2.3: Product: USB TouchController
[ 2455.153976] usb 1-2.3: Manufacturer: eGalax INC.
[ 2455.175918] input: eGalax INC. USB TouchController as /devices/pci0000:00/0000:00:0b.1/usb1/1-2/1-2.3/1-2.3:1.0/input/input13
[ 2455.177270] input: eGalax INC. USB TouchController as /devices/pci0000:00/0000:00:0b.1/usb1/1-2/1-2.3/1-2.3:1.0/input/input14
[ 2455.178320] generic-usb 0003:0EEF:0001.0003: input,hidraw0: USB HID v2.10 Pointer [eGalax INC. USB TouchController] on usb-0000:00:0b.1-2.3/input0

Expected results:
Not to have this happen.

Additional info:
lsusb -v output for this device, in case it proves useful:
Bus 001 Device 009: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0eef D-WAV Scientific Co., Ltd
  idProduct          0x0001 eGalax TouchScreen
  bcdDevice            1.00
  iManufacturer           1 eGalax INC.
  iProduct                2 USB TouchController
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          1 eGalax INC.
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               2.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     141
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               3
Device Status:     0x0002
  (Bus Powered)
  Remote Wakeup Enabled

Comment 1 Linus Walleij 2011-01-19 17:50:03 UTC
Hm, I think I need to add a quirk so that mtp-probe does
not touch devices which are class 0x00 (interface defined)
and where none of the interfaces are custom.

Lemme check if I can fix!

Comment 2 Linus Walleij 2011-01-19 18:46:46 UTC
I've pushed a patch against libmtp, and spun libmtp-1.0.4-2
on Koji, can you test this once it appears and see if it's
any better?

Comment 3 Nalin Dahyabhai 2011-01-19 18:58:12 UTC
With libmtp-1.0.4-2.fc15 from koji, I'm no longer seeing this problem on my system.  Thanks!