# [SOLVED] Touchpad not recognized on Lenovo IdeaPad 720-15

## sasq

I have a Lenovo IdeaPad 720-15 laptop on which I can't make the touchpad to work :/

Here's what I did so far:

dmesg shows the following lines regarding the keyboard controller:

```
[    0.624217] i8042: PNP: PS/2 Controller [PNP0303:KBD0] at 0x60,0x64 irq 1

[    0.624230] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp

[    0.625565] serio: i8042 KBD port at 0x60,0x64 irq 1
```

After adding that option to the kernel command line and rebooting I now get:

```
[    0.627505] i8042: PNP detection disabled

[    0.631473] serio: i8042 KBD port at 0x60,0x64 irq 1

[    0.631479] i8042: [4] Interrupt 1, without any data

[    0.631518] serio: i8042 AUX port at 0x60,0x64 irq 12

[    0.631817] i8042: [4] f2 -> i8042 (kbd-data)
```

so it seems to turn on the AUX port now (which the touchpad is supposedly attached to).

lsusb:

```
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 005: ID 06cb:0081 Synaptics, Inc.                                      // Touchpad? Fingerprint reader?

Bus 001 Device 004: ID 8087:0a2a Intel Corp.                                          // Bluetooth

Bus 001 Device 003: ID 5986:210e Acer, Inc                                            // The camera on the lid

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```

and xinput list:

```
⎡ Virtual core pointer                          id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer               id=4    [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)]

    ↳ Sleep Button                              id=8    [slave  keyboard (3)]

    ↳ Ideapad extra buttons                     id=11   [slave  keyboard (3)]

    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
```

I turned on pretty much everything regarding touchpads in my kernel config:

```
CONFIG_INPUT=y

CONFIG_INPUT_MOUSEDEV=m

CONFIG_INPUT_EVDEV=y

CONFIG_INPUT_MOUSE=y

CONFIG_MOUSE_PS2=y

CONFIG_MOUSE_PS2_ALPS=y

CONFIG_MOUSE_PS2_BYD=y

CONFIG_MOUSE_PS2_LOGIPS2PP=y

CONFIG_MOUSE_PS2_SYNAPTICS=y

CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y

CONFIG_MOUSE_PS2_CYPRESS=y

CONFIG_MOUSE_PS2_LIFEBOOK=y

CONFIG_MOUSE_PS2_TRACKPOINT=y

CONFIG_MOUSE_PS2_ELANTECH=y

CONFIG_MOUSE_PS2_SENTELIC=y

CONFIG_MOUSE_PS2_TOUCHKIT=y

CONFIG_MOUSE_PS2_FOCALTECH=y

CONFIG_MOUSE_PS2_SMBUS=y

CONFIG_MOUSE_CYAPA=m

CONFIG_MOUSE_ELAN_I2C=m

CONFIG_MOUSE_ELAN_I2C_I2C=y

CONFIG_MOUSE_ELAN_I2C_SMBUS=y

CONFIG_MOUSE_VSXXXAA=m

CONFIG_MOUSE_SYNAPTICS_I2C=m

CONFIG_MOUSE_SYNAPTICS_USB=m
```

Here's my input configuration in /etc/portage/make.conf:

```
INPUT_DEVICES="libinput synaptics"
```

What else should I check?

----------

## hhfeuer

AFAIK, you'll need at least kernel 4.14 for the touchpad to work, which version are you running?

----------

## sasq

I got 4.14.65-gentoo.

Edit:

I tried booting Ubuntu Live USB on that laptop and while the touchpad still doesn't work there, it seems to detect something:

xinput list displays it as:

```
MSFT0001:00 06CB:7F27 Touchpad     id=11   [slave pointer (2)] 
```

And here's how it appears in dmesg:

```
input: MSFT0001:00 06CB:7F27 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-4/i2c-MSFT0001:00/0018:06CB:7F27.0002/input/input10

hid-multitouch 0018:06CB:7F27.0002: input,hidraw1: I2C HID v1.00 Mouse [MSFT0001:00 06CB:7F27] on i2c-MSFT0001:00
```

So Ubuntu at least detects something that appears to be Synaptics (judging by the "06cb" vendor ID), however it seems to work over i2c bus. Any ideas?

----------

## PCmaniaK

Try to find something about Synaptics in /proc/bus/input/devices

----------

## sasq

Nope, nothing in there...

```
I: Bus=0019 Vendor=0000 Product=0005 Version=0000

N: Name="Lid Switch"

P: Phys=PNP0C0D/button/input0

S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0

U: Uniq=

H: Handlers=event0 

B: PROP=0

B: EV=21

B: SW=1

I: Bus=0019 Vendor=0000 Product=0003 Version=0000

N: Name="Sleep Button"

P: Phys=PNP0C0E/button/input0

S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1

U: Uniq=

H: Handlers=kbd event1 

B: PROP=0

B: EV=3

B: KEY=4000 0 0

I: Bus=0019 Vendor=0000 Product=0001 Version=0000

N: Name="Power Button"

P: Phys=LNXPWRBN/button/input0

S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input2

U: Uniq=

H: Handlers=kbd event2 

B: PROP=0

B: EV=3

B: KEY=10000000000000 0

I: Bus=0019 Vendor=0000 Product=0006 Version=0000

N: Name="Video Bus"

P: Phys=LNXVIDEO/video/input0

S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input3

U: Uniq=

H: Handlers=kbd event3 

B: PROP=0

B: EV=3

B: KEY=3e000b00000000 0 0 0

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41

N: Name="AT Translated Set 2 keyboard"

P: Phys=isa0060/serio0/input0

S: Sysfs=/devices/platform/i8042/serio0/input/input4

U: Uniq=

H: Handlers=sysrq kbd event4 leds 

B: PROP=0

B: EV=120013

B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe

B: MSC=10

B: LED=7

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA Intel PCH Mic"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input7

U: Uniq=

H: Handlers=event5 

B: PROP=0

B: EV=21

B: SW=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA Intel PCH Headphone"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input8

U: Uniq=

H: Handlers=event6 

B: PROP=0

B: EV=21

B: SW=4

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA Intel PCH HDMI/DP,pcm=3"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input9

U: Uniq=

H: Handlers=event7 

B: PROP=0

B: EV=21

B: SW=140

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="HDA Intel PCH HDMI/DP,pcm=7"

P: Phys=ALSA

S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input10

U: Uniq=

H: Handlers=event8 

B: PROP=0

B: EV=21

B: SW=140

I: Bus=0019 Vendor=0000 Product=0000 Version=0000

N: Name="Ideapad extra buttons"

P: Phys=ideapad/input0

S: Sysfs=/devices/pci0000:00/0000:00:1f.0/PNP0C09:00/VPC2004:00/input/input11

U: Uniq=

H: Handlers=rfkill kbd event9 

B: PROP=0

B: EV=13

B: KEY=81000800100c03 4400000000300000 0 2

B: MSC=10
```

----------

## PCmaniaK

Gentoo "Minimal Installation CD" kernel is pretty rich on hardware detection. If you boot the live media and do not see any traces of touchpad in /proc/bus/input/devices then might be a hardware problem.

----------

## Anon-E-moose

sysrescuecd should also work for detection.

----------

## sasq

OK I checked it on that Ubuntu Live USB that seems to detect it, and here's the relevant part of /proc/bus/input/devices:

```
I: Bus=0018 Vendor=06cb Product=7f27 Version=0100

N: Name="MSFT0001:00 06CB:7F27 Touchpad"

P: Phys=i2c-MSFT0001:00

S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-4/i2c-MSFT0001:00/0018:06CB:7F27.0001/input/input7

U: Uniq=

H: Handlers=mouse0 event6

B: PROP=5

B: EV=1b

B: KEY=e520 10000 0 0 0 0

B: ABS=260800000000003

B: MSC=20
```

So I guess it recognizes it and assigns it an input device (input7), but no new information in here, maybe except this "i2c_designware.0" thing.

I'll try with that Gentoo Minimal Installation CD later, but I'm not sure we'll get any other information than this stuff above.

----------

## PCmaniaK

The kernel found your touchpad on i2c-MSFT bus (no idea what it is) possible bridged to PCI.

There is no PS2 bus (aka i8042) controller mentioned here which makes PS2_MOUSE kernel config entries irrelevant.

Some driver internals are exposed in /sys/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-4/i2c-MSFT0001:00/0018:06CB:7F27.0001/input/input7 directory

udev created /dev/input/event6 for your device 

Check your device working by

```
# cat /dev/input/event6
```

(touch the touchpad and see gibberish output if it is working) or use evtest to see formatted messages from event6

And... this is a full extent to my knowledge on the matter

----------

## sasq

OK I think I cracked it! :>

The main culprit was CONFIG_PINCTRL_SUNRISEPOINT that provides an interface that allows configuring of PCH pins and using them as GPIOs. Apparently the touchpad port needs to be unlocked by the signal raised by PCH's GPIO pins, so this module is required for it to work. It is called pinctrl_sunrisepoint, and it is a feature of my motherboard's chipset, Sunrise Point. (I was hinted at this information by a post I found on Arch's forums.)

In order to enable this module, another option has to be turned on:  X86_INTEL_LPSS, which controls Intel's "Low Power SubSystem", because on Sunrise Point chipsets, most low-power devices (such as I2C/SMBus) are connected to the PCH and require this feature to work (according to this information). This option has to be enabled for the PINCTRL feature to work, and then the CONFIG_PINCTRL_SUNRISEPOINT can be enabled as well in the kernel.

After enabling these in my kernel and rebooting, Gentoo recognizes the touchpad the same way Ubuntu does. Despite these messages in dmesg:

```
i8042: PNP: PS/2 Controller [PNP0303:KBD0] at 0x60,0x64 irq 1

i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
```

the touchpad should work fine, because it worked in Ubuntu as well with the same message.

Then I can see the same message in dmesg on Gentoo as it was on Ubuntu regarding the touchpad getting recognized:

```
input: MSFT0001:00 06CB:7F27 as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-13/i2c-MSFT0001:00/0018:06CB:7F27.0002/input/input11

hid-generic 0018:06CB:7F27.0002: input,hidraw1: I2C HID v1.00 Mouse [MSFT0001:00 06CB:7F27] on i2c-MSFT0001:00
```

Now xinput list shows the same line for the touchpad as Ubuntu did:

```
MSFT0001:00 06CB:7F27      id=10  [slave pointer (2)]
```

And the last thing to activate the touchpad was to... press one of the special buttons on the keyboard (shared with F6) that toggles the touchpad on/off.

(Which requires the ideapad_laptop module to be present as well for that key to work that way.)

And now, finally, the touchpad is working! :>

It most likely uses the i2c_designware_platform, i2c_designware_core and i2c_hid modules, because they're getting loaded automatically as well.

Thanks for all your help, it hinted me at the right direction.

Now it would be nice to add these things to the official Gentoo documentation for touchpads to save other people all that fuss...

----------

## PCmaniaK

Great!

Any hints/ideas on a similar issue https://forums.gentoo.org/viewtopic-t-1085458.html would be appreciated   :Smile: 

----------

