i2c-hid and hid-multitouch drivers wake computer during suspend

Bug #1670356 reported by Timothy Allen on 2017-03-06
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Medium
Unassigned

Bug Description

Using the latest 16.04 LTS (Ubuntu 4.4.0-64.85-generic 4.4.44), my Dell Inspiron 7548 wakes everytime the Elan touchpad registers a touch. This causes the machine to wake when the lid is closed, and renders the suspend/hibernate function useless.

The only way in which the suspend doesn't respond to the touchpad is if the touchpad is manipulated *during* the suspend process.

This is true when removing the drivers or unbinding the hardware in /etc/pm/sleep.d; removing or unbinding will still cause the laptop to wake from sleep unless the touchpad has been touched between removing the driver and suspending the laptop.

Disabling everything in /proc/acpi/wakeup has no effect on the issue.

The relevant lines from dmesg:
[ 174.627776] input: MSFT0001:00 06CB:75BD Touchpad as /devices/pci0000:00/INT3
433:00/i2c-5/i2c-MSFT0001:00/0018:06CB:75BD.0001/input/input13
[ 174.627923] hid-multitouch 0018:06CB:75BD.0001: input,hidraw0: I2C HID v1.00 Mouse [MSFT0001:00 06CB:75BD] on i2c-MSFT0001:00

lsusb:
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 004: ID 8087:07dc Intel Corp.
Bus 002 Device 003: ID 04f3:2098 Elan Microelectronics Corp.
Bus 002 Device 002: ID 1bcf:2b8a Sunplus Innovation Technology Inc.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

(04f3:2098 is the device in question.)

lsmod:
Module Size Used by
i2c_hid 20480 0
hid_multitouch 20480 0
hid 118784 2 i2c_hid,hid_multitouch
joydev 20480 0
rfcomm 69632 2
drbg 32768 1
ansi_cprng 16384 0
ctr 16384 2
ccm 20480 2
xt_CHECKSUM 16384 1
iptable_mangle 16384 1
ipt_MASQUERADE 16384 3
nf_nat_masquerade_ipv4 16384 1 ipt_MASQUERADE
iptable_nat 16384 1
nf_nat_ipv4 16384 1 iptable_nat
nf_nat 24576 2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack_ipv4 16384 2
nf_defrag_ipv4 16384 1 nf_conntrack_ipv4
xt_conntrack 16384 1
nf_conntrack 106496 5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
ipt_REJECT 16384 2
nf_reject_ipv4 16384 1 ipt_REJECT
xt_tcpudp 16384 6
bridge 126976 0
stp 16384 1 bridge
llc 16384 2 stp,bridge
ebtable_filter 16384 0
ebtables 36864 1 ebtable_filter
ip6table_filter 16384 0
ip6_tables 28672 1 ip6table_filter
iptable_filter 16384 1
ip_tables 24576 3 iptable_filter,iptable_mangle,iptable_nat
x_tables 36864 11 ip6table_filter,xt_CHECKSUM,ip_tables,xt_tcpudp,ipt_MASQUERADE,xt_conntrack,iptable_filter,ebtables,ipt_REJECT,iptable_mangle,ip6_tables
bnep 20480 2
nls_iso8859_1 16384 1
dell_laptop 20480 0
dell_wmi 16384 0
dcdbas 16384 1 dell_laptop
sparse_keymap 16384 1 dell_wmi
dell_smm_hwmon 16384 0
uvcvideo 90112 0
videobuf2_vmalloc 16384 1 uvcvideo
videobuf2_memops 16384 1 videobuf2_vmalloc
videobuf2_v4l2 28672 1 uvcvideo
videobuf2_core 36864 2 uvcvideo,videobuf2_v4l2
v4l2_common 16384 1 videobuf2_v4l2
videodev 176128 4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
arc4 16384 2
dell_led 16384 1
media 24576 2 uvcvideo,videodev
iwlmvm 311296 0
snd_hda_codec_hdmi 53248 1
snd_hda_codec_realtek 86016 1
snd_hda_codec_generic 77824 1 snd_hda_codec_realtek
mac80211 737280 1 iwlmvm
intel_rapl 20480 0
x86_pkg_temp_thermal 16384 0
intel_powerclamp 16384 0
snd_hda_intel 40960 12
coretemp 16384 0
snd_hda_codec 135168 4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel
kvm_intel 172032 0
kvm 544768 1 kvm_intel
snd_hda_core 73728 5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
irqbypass 16384 1 kvm
snd_hwdep 16384 1 snd_hda_codec
crct10dif_pclmul 16384 0
iwlwifi 200704 1 iwlmvm
crc32_pclmul 16384 0
ghash_clmulni_intel 16384 0
snd_pcm 106496 5 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_core
aesni_intel 167936 4
btusb 45056 0
aes_x86_64 20480 1 aesni_intel
btrtl 16384 1 btusb
btbcm 16384 1 btusb
btintel 16384 1 btusb
snd_seq_midi 16384 0
snd_seq_midi_event 16384 1 snd_seq_midi
lrw 16384 1 aesni_intel
gf128mul 16384 1 lrw
acpi_als 16384 0
snd_rawmidi 32768 1 snd_seq_midi
snd_seq 69632 2 snd_seq_midi_event,snd_seq_midi
bluetooth 520192 29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
glue_helper 16384 1 aesni_intel
kfifo_buf 16384 1 acpi_als
ablk_helper 16384 1 aesni_intel
cryptd 20480 3 ghash_clmulni_intel,aesni_intel,ablk_helper
snd_seq_device 16384 3 snd_seq,snd_rawmidi,snd_seq_midi
snd_timer 32768 2 snd_pcm,snd_seq
cfg80211 565248 3 iwlwifi,mac80211,iwlmvm
industrialio 61440 2 acpi_als,kfifo_buf
input_leds 16384 0
serio_raw 16384 0
snd 81920 34 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
soundcore 16384 1 snd
mei_me 36864 0
dw_dmac 16384 0
dw_dmac_core 24576 1 dw_dmac
mei 98304 1 mei_me
dell_smo8800 16384 0
dell_rbtn 16384 0
int3403_thermal 16384 0
shpchp 36864 0
lpc_ich 24576 0
acpi_pad 24576 0
int3400_thermal 16384 0
int3402_thermal 16384 0
acpi_thermal_rel 16384 1 int3400_thermal
i2c_designware_platform 16384 0
int340x_thermal_zone 16384 2 int3402_thermal,int3403_thermal
mac_hid 16384 0
i2c_designware_core 20480 1 i2c_designware_platform
acpi_call 16384 0
parport_pc 32768 0
ppdev 20480 0
lp 20480 0
parport 49152 3 lp,ppdev,parport_pc
autofs4 40960 2
i915 1208320 13
i2c_algo_bit 16384 1 i915
drm_kms_helper 155648 1 i915
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
fb_sys_fops 16384 1 drm_kms_helper
ahci 36864 3
drm 364544 11 i915,drm_kms_helper
libahci 32768 1 ahci
wmi 20480 2 dell_led,dell_wmi
video 40960 3 i915,dell_wmi,dell_laptop
fjes 28672 0
---
ApportVersion: 2.20.1-0ubuntu2.5
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/pcmC1D0p: tim 1877 F...m pulseaudio
 /dev/snd/controlC1: tim 1877 F.... pulseaudio
 /dev/snd/controlC0: tim 1877 F.... pulseaudio
CurrentDesktop: GNOME
DistroRelease: Ubuntu 16.04
HibernationDevice: RESUME=UUID=1cbc9c9b-72e0-4fc0-913f-035abf5c232b
InstallationDate: Installed on 2017-02-22 (12 days ago)
InstallationMedia: Ubuntu 16.04.1 LTS "Xenial Xerus" - Release amd64 (20160719)
MachineType: Dell Inc. Inspiron 7548
Package: linux (not installed)
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.4.0-64-generic.efi.signed root=/dev/mapper/ubuntu--vg-root ro video=1920x1080@60 radeon.modeset=1 enable_mtrr_cleanup mtrr_spare_reg_nr=1 mtrr_gran-size=32M mtrr_chunk_size=128M quiet splash vt.handoff=7
ProcVersionSignature: Ubuntu 4.4.0-64.85-generic 4.4.44
RelatedPackageVersions:
 linux-restricted-modules-4.4.0-64-generic N/A
 linux-backports-modules-4.4.0-64-generic N/A
 linux-firmware 1.157.8
Tags: wayland-session xenial
Uname: Linux 4.4.0-64-generic x86_64
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip libvirtd lpadmin plugdev sambashare sudo
_MarkForUpload: True
dmi.bios.date: 03/17/2016
dmi.bios.vendor: Dell Inc.
dmi.bios.version: A07
dmi.board.name: 0AM6R0
dmi.board.vendor: Dell Inc.
dmi.board.version: A00
dmi.chassis.type: 8
dmi.chassis.vendor: Dell Inc.
dmi.chassis.version: Not Specified
dmi.modalias: dmi:bvnDellInc.:bvrA07:bd03/17/2016:svnDellInc.:pnInspiron7548:pvrA07:rvnDellInc.:rn0AM6R0:rvrA00:cvnDellInc.:ct8:cvrNotSpecified:
dmi.product.name: Inspiron 7548
dmi.product.version: A07
dmi.sys.vendor: Dell Inc.

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

apport-collect 1670356

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

apport information

tags: added: apport-collected wayland-session xenial
description: updated

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

apport information

Changed in linux (Ubuntu):
status: Incomplete → Confirmed
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.11 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'.

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.11-rc1/

Changed in linux (Ubuntu):
importance: Undecided → Medium
status: Confirmed → Incomplete
tags: added: kernel-bug-exists-upstream
Changed in linux (Ubuntu):
status: Incomplete → Confirmed
Timothy Allen (tim-treehouse) wrote :

Thank you. Testing on 4.11.0-041100rc1-generic yields exactly the same result, testing with various values of /proc/acpi/wakeup and removed/inserted i2c-hid and hid-multitouch modules: the laptop wakes from suspend upon touching the touchpad unless the touchpad was manipulated between removing the modules and suspending, or during the suspend process.

Kai-Heng Feng (kaihengfeng) wrote :

IIUC, the laptop wakes up because the screen somehow touched the touchpad when lid closed, right?

Timothy Allen (tim-treehouse) wrote :

That's correct; the screen presumably touches the touchpad when closing the lid. I've been testing by simply suspending and then touching the touchpad to wake the laptop (it doesn't require pressing the touchpad button; simply registering a touch works).

As I say, the exception is if the touchpad is touched _during_ the suspend process (then the touchpad doesn't wake the laptop), or if the touchpad is touched after unloading the hid-multitouch or i2c-hid drivers. (I initially tried to resolve the issue by forcing removal of the drivers during the suspend processes, but this would also require that I touch the touchpad during the suspend process.)

Kai-Heng Feng (kaihengfeng) wrote :

From you description, I'd argue that we can't do much here, that's EC's job.

EC should disable the touchpad wakeup when it detects lid is closed, but sounds like your laptop only disable touchpad wakeup when both lid is closed and touchpad is touched.

Instead of
if (lid_is_closed)
   disable_touchpad

Its logic sound like
if (lid_is_closed and touchpad_in_use)
   disable_touchpad

IMO this bug is not related to linux and should report to Dell.

Timothy Allen (tim-treehouse) wrote :

Thanks; I had been looking at the hid-multitouch and i2c-hid source and was increasingly wondering if it was a BIOS/hardware issue. I'll raise the issue with Dell.

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

Other bug subscribers