ELAN touchpad acts as generic mouse after firmware update

Bug #1647199 reported by DH
18
This bug affects 4 people
Affects Status Importance Assigned to Milestone
Linux
New
Undecided
Unassigned
linux-hwe-edge (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

Hardware: Lenovo Miix 700-12ISK with Lenovo Keyboard/Touchpad cover

1) Touchpad works 100% in Windows 10 before and after firmware update.
2) Touchpad worked 100% in Ubuntu 16.04 with kernel 4.4.0-51 before firmware update.
3) Touchpad works as generic mouse (movement, hardware clicks, tap to click all function, but no multitouch, no scrolling, and "mouse and touchpad" settings options missing) since Lenovo Oct 2016 firmware update, using kernels 4.4.0-21, -22, -51, -52 and 4.8.0-25 and -28.
4) Logitech USB mouse/keyboard works as expected.
5) Touchscreen works as expected.

$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Receiver id=10 [slave pointer (2)]
⎜ ↳ Lenovo ideapad MIIX 700 USB keyboard id=12 [slave pointer (2)]
⎜ ↳ Lenovo ideapad MIIX 700 USB keyboard id=13 [slave pointer (2)]
⎜ ↳ ELAN222F:00 04F3:222F id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    ↳ Power Button id=6 [slave keyboard (3)]
    ↳ Video Bus id=7 [slave keyboard (3)]
    ↳ Power Button id=8 [slave keyboard (3)]
    ↳ Logitech USB Receiver id=9 [slave keyboard (3)]
    ↳ Lenovo ideapad MIIX 700 USB keyboard id=11 [slave keyboard (3)]
    ↳ Ideapad extra buttons id=15 [slave keyboard (3)]
    ↳ Intel Virtual Button driver id=16 [slave keyboard (3)]
    ↳ AT Translated Set 2 keyboard id=17 [slave keyboard (3)]

$ uname -a
Linux uranus 4.8.0-28-generic #30~16.04.1-Ubuntu SMP Mon Nov 21 12:03:16 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: linux-image-4.8.0-28-generic 4.8.0-28.30~16.04.1
ProcVersionSignature: Ubuntu 4.8.0-28.30~16.04.1-generic 4.8.6
Uname: Linux 4.8.0-28-generic x86_64
ApportVersion: 2.20.1-0ubuntu2.1
Architecture: amd64
CurrentDesktop: Unity
Date: Sun Dec 4 11:54:41 2016
InstallationDate: Installed on 2016-11-24 (10 days ago)
InstallationMedia: Ubuntu 16.04.1 LTS "Xenial Xerus" - Release amd64 (20160719)
SourcePackage: linux-hwe-edge
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
DH (dave-higherform) wrote :
Revision history for this message
DH (dave-higherform) wrote :
Revision history for this message
DH (dave-higherform) wrote :
description: updated
Revision history for this message
DH (dave-higherform) wrote :

Also, I tried about every combination of i8042.reset, i8042.kbdreset=1, i8042.nopnp, i8042.noloop boot parameters I could think of, no change.

Tried alternate versions of psmouse, such as psmouse-alps, psmouse-elantech-x551c, etc from various forums, no change.

I should be back to the stock psmouse module at this time.

Revision history for this message
DH (dave-higherform) wrote :
Revision history for this message
DH (dave-higherform) wrote :

$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 7: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 7: Dev 5, If 2, Class=Human Interface Device, Driver=usbhid, 12M

Revision history for this message
FB (fennb) wrote :

I'm suffering this exact problem - apparently the firmware update to the keyboard/touchpad required new drivers due to changes in the underyling device IDs: https://forums.lenovo.com/t5/Windows-based-Tablets/Miix-700-Keyboard-dropouts-are-so-vexing-need-firmware-update/m-p/3461576/highlight/true#M6372

I can only presume that Ubuntu is perhaps being affected by this same issue?

Would love to work out a fix to this one!

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in linux-hwe-edge (Ubuntu):
status: New → Confirmed
Revision history for this message
jkusa (jkusa) wrote :

Just ran into this issue! Any updates or workarounds?

Revision history for this message
FB (fennb) wrote :

@jkusa, not yet.

However, I did a bit of work today in an attempt to contrast a working with a broken version (eg: old vs new keyboard/trackpad firmware), however it doesn't appear to be possible to downgrade the firmware due to lack of an image.

After a bit of digging, I was able to find an example of a dmesg output of a working trackpad (with trackpad features) vs not (see attached).

The USB productId does indeed change from 6084 to 60A2 after the firmware upgrade.

The key difference appears to be the following line:
---
[ 1002.906583] hid-generic 0003:17EF:60A2.0008: input,hiddev0,hidraw1: USB HID v1.10 Device [Lenovo ideapad MIIX 700 USB keyboard] on usb-0000:00:14.0-7/input1
---

Where it appears the input which is normally detected as a "v1.10 Mouse" is instead detected as a "v1.10 Device".

I hope that helps someone work it out.

Revision history for this message
FB (fennb) wrote :

Regarding my previous comment: It appears the extra "USB HID v1.10 Device" is a red herring - this device corresponds to the extra function keys (eg: for volume, brightness, airplane mode, wifi control/etc), as proven by testing with evtest (or observing hidraw).

Revision history for this message
DA (moustacheful) wrote :

I am currently on the older version of the keyboard firmware, since there's now a way to downgrade. Although it does indeed feature multitouch gestures and such, it's apparently not detected as a touchpad either, and appears as a generic device too, as far as I know. It's also quite imprecise and has issues with drag & drop and tap click (cursor shifting).

xinput:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ELAN222F:00 04F3:222F Pen id=11 [slave pointer (2)]
⎜ ↳ ELAN222F:00 04F3:222F id=12 [slave pointer (2)]
⎜ ↳ Lenovo ideapad MIIX 700 USB keyboard id=9 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    ↳ Power Button id=6 [slave keyboard (3)]
    ↳ Video Bus id=7 [slave keyboard (3)]
    ↳ Power Button id=8 [slave keyboard (3)]
    ↳ Ideapad extra buttons id=13 [slave keyboard (3)]
    ↳ Intel Virtual Button driver id=14 [slave keyboard (3)]
    ↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
    ↳ Lenovo ideapad MIIX 700 USB keyboard id=10 [slave keyboard (3)]

Let me know if there's anything I can provide from the older firmware version.

Revision history for this message
Atti (atti84it) wrote :

Perhaps I've got the same problem but there's something that I don't understand since I don't know much about hardware/driver. Does downgrading linux-firmware through synaptic "force version" solve the problem? Or the upgraded versions wrote something permanent in some I don't know flash EPROM.. ?!

My touchpad STOPPED WORKING at all, it is not recognized in linux nor in windows (I've a dual boot). I've downgraded linux-firmware with synaptic from 1.157.11 to 1.157.8 but this didn't solve the problem. The previous installed version 1.157.5 is not in synaptic.

Any suggestions?

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

Other bug subscribers

Remote bug watches

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