[Lenovo Miix] Synaptic/ITE Tech touchpad (06cb:a001) cannot be configured by hid-rmi

Bug #1437759 reported by Nicolas
24
This bug affects 3 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Confirmed
Medium
Unassigned

Bug Description

Problem:
The touchpad in the dock of the Lenovo Miix 2 11 tablet does not work. It is handled by hid-rmi, which fails to configure the device:

kernel: [ 3007.388388] input: ITE Tech. Inc. ITE Device(8595) as /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0/0003:06CB:A001.0008/input/input18
kernel: [ 3007.442088] hid-generic 0003:06CB:A001.0008: input,hiddev0,hidraw2: USB HID v1.10 Keyboard [ITE Tech. Inc. ITE Device(8595)] on usb-0000:00:14.0-3.3/input0
kernel: [ 3007.521067] hid-rmi 0003:06CB:A001.0009: failed to write hid report (-38)
kernel: [ 3007.521074] hid-rmi 0003:06CB:A001.0009: rmi_set_page: set page failed: -38.
kernel: [ 3007.521077] hid-rmi 0003:06CB:A001.0009: failed to set page select to 0.
kernel: [ 3007.523194] input: ITE Tech. Inc. ITE Device(8595) as /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.1/0003:06CB:A001.0009/input/input19
kernel: [ 3007.523546] hid-rmi 0003:06CB:A001.0009: input,hiddev0,hidraw3: USB HID v1.10 Pointer [ITE Tech. Inc. ITE Device(8595)] on usb-0000:00:14.0-3.3/input1
kernel: [ 3007.523552] hid-rmi 0003:06CB:A001.0009: Device failed to be properly configured

Ubuntu 15.04 Beta (but same problem with 14.10)
Kernel: Linux miix 3.19.0-10-generic #10-Ubuntu SMP Mon Mar 23 16:16:45 UTC 2015 i686 i686 i686 GNU/Linux

The Keyboard (which works) and the touchpad are connected as one USB device with two interfaces:

Bus 001 Device 015: ID 06cb:a001 Synaptics, Inc.
Device Descriptor:
  bLength 18
  bDescriptorType 1
  bcdUSB 2.00
  bDeviceClass 0 (Defined at Interface level)
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 64
  idVendor 0x06cb Synaptics, Inc.
  idProduct 0xa001
  bcdDevice 0.03
  iManufacturer 1 ITE Tech. Inc.
  iProduct 2 ITE Device(8595)
  iSerial 0
  bNumConfigurations 1
  Configuration Descriptor:
    bLength 9
    bDescriptorType 2
    wTotalLength 59
    bNumInterfaces 2
    bConfigurationValue 1
    iConfiguration 0
    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 1 Keyboard
      iInterface 0
        HID Device Descriptor:
          bLength 9
          bDescriptorType 33
          bcdHID 1.10
          bCountryCode 0 Not supported
          bNumDescriptors 1
          bDescriptorType 34 Report
          wDescriptorLength 163
         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 0x0040 1x 64 bytes
        bInterval 4
    Interface Descriptor:
      bLength 9
      bDescriptorType 4
      bInterfaceNumber 1
      bAlternateSetting 0
      bNumEndpoints 1
      bInterfaceClass 3 Human Interface Device
      bInterfaceSubClass 1 Boot Interface Subclass
      bInterfaceProtocol 2 Mouse
      iInterface 1 ITE Tech. Inc.
        HID Device Descriptor:
          bLength 9
          bDescriptorType 33
          bcdHID 1.10
          bCountryCode 0 Not supported
          bNumDescriptors 1
          bDescriptorType 34 Report
          wDescriptorLength 133
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength 7
        bDescriptorType 5
        bEndpointAddress 0x82 EP 2 IN
        bmAttributes 3
          Transfer Type Interrupt
          Synch Type None
          Usage Type Data
        wMaxPacketSize 0x0040 1x 64 bytes
        bInterval 4
Device Status: 0x0000
  (Bus Powered)

Workaround:
The touchpad works with hid-generic, if it is forces to handle the device. Yet, multitouch and dragging does not work.

Revision history for this message
Brad Figg (brad-figg) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:

apport-collect 1437759

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Revision history for this message
Philipp Spilger (philipp-spilger-deactivatedaccount) wrote :

I'm experiencing the same problem as you, but how exactly were you able to force hid-generic to handle the device, because simply blacklisting hid-rmi results in the device not being recognized at all with my machine.
Thanks in advance for your time.

Revision history for this message
Nicolas (niccer) wrote :

To force hid-generic, remove hid-rmi, load hid-generic and run:

echo echo 3 06cb a001 0 | sudo tee /sys/module/hid_generic/drivers/hid\:hid-generic/new_id

By the way, the touchpad has a Synaptics S3203B chip.

Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

Did this issue start happening after an update/upgrade? Was there a prior kernel version where you were not having this particular problem?

Would it be possible for you to test the latest upstream kernel? Refer to https://wiki.ubuntu.com/KernelMainlineBuilds . Please test the latest v4.0 kernel[0].

If this bug is fixed in the mainline kernel, please add the following tag 'kernel-fixed-upstream'.

If the mainline kernel does not fix this bug, please add the tag: 'kernel-bug-exists-upstream'.

If you are unable to test the mainline kernel, for example it will not boot, please add the tag: 'kernel-unable-to-test-upstream'.
Once testing of the upstream kernel is complete, please mark this bug as "Confirmed".

Thanks in advance.

[0] http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-rc6-vivid/

Changed in linux (Ubuntu):
importance: Undecided → Medium
status: Confirmed → Incomplete
Revision history for this message
Philipp Spilger (philipp-spilger-deactivatedaccount) wrote :

I just tested the latest upstream kernel and the problem still exists. (with the same error message).

In my case, the issue was never resolved (with no older version). I only got both the keyboard and the touchpad working with debian wheezy (kernel version 3.2.0), but the kernel module hid-rmi is not available in this version, so i assume (did not check for multitouch, etc.) the workaround, as described on top, was applied automatically in this kernel version.

Changed in linux (Ubuntu):
status: Incomplete → Confirmed
tags: added: kernel-bug-exists-upstream
Revision history for this message
Mark Roduner (mroduner) wrote :

Okay, so I managed to come up with a workaround(ish) thing for this particular problem; you need to reload the hid-multitouch kernel module, and then re-enable the device using xinput.

Example script

#!/bin/bash
# Touchpad / Touchscreen Fix Script
# 2016.05.24
# Mark C. Roduner, Jr.

# If Run as root; fix all users, otherwise fix the current user

SCRIPT=$0

#Space separated list of kernel modules to reload
MODS_RELOAD="hid-multitouch"

get_users() {
        #echo ":1 mroduner"
        w -sh | sed -r "s/([^ ]+)[^:]+(:[0-9.]+).*/\2 \1/" | sort | uniq
}

execute_fix() {
        export DISPLAY="$1"
        sudo -iu "$2" $SCRIPT
}

get_core_regex() {
        xinput --list --long | grep "Virtual core" | sed -r 's/.*id\=([0-9]+).*/\\b\1\\b/' | sort | uniq | tr '\n' '|'
}

get_all_pointers() {
        xinput --list --long | grep XIButtonClass | sed -r "s/.*: ([0-9]+).*/\1/" | sort | uniq | tr '\n' ' '
}

get_real_pointers() {
        EXPR="`get_core_regex` +"
        get_all_pointers | sed -r "s/$EXPR/ /g"
}

if [ `id -u` -ne 0 ]; then
        echo "Enabling devices for ${USERNAME}${DISPLAY}... "
        for PTR in `get_real_pointers`; do
                xinput set-prop $PTR "Device Enabled" 1
        done
        exit 0
fi

echo -n Reloading Modules:
for MOD in $MODS_RELOAD; do
        echo -n " $MOD"
        rmmod "$MOD" && modprobe "$MOD"
done

echo -e "\nFixing Input Devices..."
CDISP="$DISPLAY"
get_users \
| while read USER; do
         execute_fix $USER;
done
export DISPLAY="$CDISP"
echo -e "\nDone."

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.