[regression] Touchscreen stop working on LG L90 Dual

Bug #1530384 reported by Ratchanan Srirattanamet
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Canonical System Image
Confirmed
Undecided
Unassigned
Mir
Invalid
Undecided
Unassigned
udev
Confirmed
Undecided
Andreas Pokorny
systemd (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

I ports Ubuntu touch to LG L90 Dual. When I upgraded my device from 20151218.1 to 20151221 (channel rc-proposed), the touchscreen stopped working. A discussion in IRC with @anpok_ suggesting that it may come from changing input system to udev/libevdev/libinput.

The following udevadm output is most likely from the Touch Screen:

$ udevadm test-builtin input_id /devices/virtual/input/input0/
calling: test-builtin
=== trie on-disk ===
tool version: 219
file size: 6711498 bytes
header size 80 bytes
strings 1721914 bytes
nodes 4989504 bytes
Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/usr/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/00-rmnet-kernel.link
Created link configuration context.
ID_INPUT=1
capabilities/ev raw kernel attribute: b
capabilities/ev decoded bit map:
  bit 0: 0000000B
capabilities/abs raw kernel attribute: 6718000 0
capabilities/abs decoded bit map:
  bit 0: 00000000
  bit 32: 06718000
capabilities/rel raw kernel attribute: 0
capabilities/rel decoded bit map:
capabilities/key raw kernel attribute: 400 0 0 2000000 0 1000 40000800 100000 0 10000000 0
capabilities/key decoded bit map:
  bit 0: 00000000
  bit 32: 10000000
  bit 64: 00000000
  bit 96: 00100000
  bit 128: 40000800
  bit 160: 00001000
  bit 192: 00000000
  bit 224: 02000000
  bit 256: 00000000
  bit 288: 00000000
  bit 320: 00000400
properties raw kernel attribute: 0
properties decoded bit map:
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 32 for any keys; found=1
test_key: checking bit block 64 for any keys; found=1
test_key: checking bit block 96 for any keys; found=1
test_key: checking bit block 128 for any keys; found=1
test_key: checking bit block 160 for any keys; found=1
test_key: checking bit block 192 for any keys; found=1
test_key: checking bit block 224 for any keys; found=1
ID_INPUT_KEY=1
Unload module index
Unloaded link configuration context.

The driver claims that is provides the multi touch axis touch major, touch minor, tracking id, x, y, tool type and slot id. So apart from missing properties like DIRECT it seems to be a normal touch screen, but udev clearly does not detect it properly.

----------------------------------------------------------
The other devices are probably not the touchscreen...

$ udevadm test-builtin input_id /devices/gpio_keys.70/input/input2/
calling: test-builtin
=== trie on-disk ===
tool version: 219
file size: 6711498 bytes
header size 80 bytes
strings 1721914 bytes
nodes 4989504 bytes
Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/usr/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/00-rmnet-kernel.link
Created link configuration context.
ID_INPUT=1
capabilities/ev raw kernel attribute: 3
capabilities/ev decoded bit map:
  bit 0: 00000003
capabilities/abs raw kernel attribute: 0
capabilities/abs decoded bit map:
capabilities/rel raw kernel attribute: 0
capabilities/rel decoded bit map:
capabilities/key raw kernel attribute: 4000000 0 0 0 c0040 0 0 0
capabilities/key decoded bit map:
  bit 0: 00000000
  bit 32: 00000000
  bit 64: 00000000
  bit 96: 000C0040
  bit 128: 00000000
  bit 160: 00000000
  bit 192: 00000000
  bit 224: 04000000
properties raw kernel attribute: 0
properties decoded bit map:
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 32 for any keys; found=0
test_key: checking bit block 64 for any keys; found=0
test_key: checking bit block 96 for any keys; found=1
test_key: checking bit block 128 for any keys; found=1
test_key: checking bit block 160 for any keys; found=1
test_key: checking bit block 192 for any keys; found=1
test_key: checking bit block 224 for any keys; found=1
ID_INPUT_KEY=1
Unload module index
Unloaded link configuration context.

$ udevadm test-builtin input_id /devices/virtual/input/input1/
calling: test-builtin
=== trie on-disk ===
tool version: 219
file size: 6711498 bytes
header size 80 bytes
strings 1721914 bytes
nodes 4989504 bytes
Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/usr/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/00-rmnet-kernel.link
Created link configuration context.
ID_INPUT=1
capabilities/ev raw kernel attribute: 3
capabilities/ev decoded bit map:
  bit 0: 00000003
capabilities/abs raw kernel attribute: 0
capabilities/abs decoded bit map:
capabilities/rel raw kernel attribute: 0
capabilities/rel decoded bit map:
capabilities/key raw kernel attribute: 100000 0 0 0
capabilities/key decoded bit map:
  bit 0: 00000000
  bit 32: 00000000
  bit 64: 00000000
  bit 96: 00100000
properties raw kernel attribute: 10
properties decoded bit map:
  bit 0: 00000010
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 32 for any keys; found=0
test_key: checking bit block 64 for any keys; found=0
test_key: checking bit block 96 for any keys; found=1
test_key: checking bit block 128 for any keys; found=1
test_key: checking bit block 160 for any keys; found=1
test_key: checking bit block 192 for any keys; found=1
test_key: checking bit block 224 for any keys; found=1
ID_INPUT_KEY=1
Unload module index
Unloaded link configuration context.

$ udevadm test-builtin input_id /devices/sound-9302.42/sound/card0/input3/
calling: test-builtin
=== trie on-disk ===
tool version: 219
file size: 6711498 bytes
header size 80 bytes
strings 1721914 bytes
nodes 4989504 bytes
Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/usr/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/00-rmnet-kernel.link
Created link configuration context.
ID_INPUT=1
capabilities/ev raw kernel attribute: 3
capabilities/ev decoded bit map:
  bit 0: 00000003
capabilities/abs raw kernel attribute: 0
capabilities/abs decoded bit map:
capabilities/rel raw kernel attribute: 0
capabilities/rel decoded bit map:
capabilities/key raw kernel attribute: 7a 4 0 0 0 c0000 0 0 0
capabilities/key decoded bit map:
  bit 0: 00000000
  bit 32: 00000000
  bit 64: 00000000
  bit 96: 000C0000
  bit 128: 00000000
  bit 160: 00000000
  bit 192: 00000000
  bit 224: 00000004
  bit 256: 0000007A
properties raw kernel attribute: 0
properties decoded bit map:
test_key: checking bit block 0 for any keys; found=0
test_key: checking bit block 32 for any keys; found=0
test_key: checking bit block 64 for any keys; found=0
test_key: checking bit block 96 for any keys; found=1
test_key: checking bit block 128 for any keys; found=1
test_key: checking bit block 160 for any keys; found=1
test_key: checking bit block 192 for any keys; found=1
test_key: checking bit block 224 for any keys; found=1
ID_INPUT_KEY=1
Unload module index
Unloaded link configuration context.

$ udevadm test-builtin input_id /devices/sound-9302.42/sound/card0/input4/
calling: test-builtin
=== trie on-disk ===
tool version: 219
file size: 6711498 bytes
header size 80 bytes
strings 1721914 bytes
nodes 4989504 bytes
Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
timestamp of '/etc/systemd/network' changed
timestamp of '/usr/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/00-rmnet-kernel.link
Created link configuration context.
ID_INPUT=1
capabilities/ev raw kernel attribute: 21
capabilities/ev decoded bit map:
  bit 0: 00000021
capabilities/abs raw kernel attribute: 0
capabilities/abs decoded bit map:
capabilities/rel raw kernel attribute: 0
capabilities/rel decoded bit map:
capabilities/key raw kernel attribute: 0
capabilities/key decoded bit map:
properties raw kernel attribute: 0
properties decoded bit map:
test_key: no EV_KEY capability
Unload module index
Unloaded link configuration context.

Revision history for this message
Ratchanan Srirattanamet (peat-new) wrote :
description: updated
Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

If you manage to identify the device in a udev rule you could try to attach ID_INPUT_TOUCHSCREEN=1 to extend the result of udevs own checks with the right result. Meanwhile I will look how to extend the detection logic inside systemd/udev to get this fixed.

I believe the problem here is not limited to this device. Looking through the exposed keys it also sends BTN_TOUCH which should be enough for udev to detect it..

Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

Ok found the cause. The logic inside udev test ABS_X ABS_Y + BTN_TOUCH which catches a lot of single touchscreens. For multi touch coordinates as advertised here there is only a test for ABS_MT_POSITION_X + Y and property DIRECT.. So adding another case for BTN_TOUCH instead of DIRECT should solve the issue

Changed in canonical-devices-system-image:
status: New → Confirmed
Changed in udev:
status: New → Confirmed
Revision history for this message
Ratchanan Srirattanamet (peat-new) wrote :

I confirmed that the rule that add ID_INPUT_TOUCHSCREEN=1 to the device makes touchscreen works. Meanwhile, I'll ship the rule with my device tarball. Glad to know that you found the cause.

Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Sounds like invalid for Mir. anpok's fix is targeting udev instead.

tags: added: input
affects: mir (Ubuntu) → udev (Ubuntu)
Changed in mir:
status: New → Invalid
Changed in udev:
assignee: nobody → Andreas Pokorny (andreas-pokorny)
Changed in udev (Ubuntu):
status: New → Triaged
importance: Undecided → Medium
summary: - Touchscreen stop working on LG L90 Dual
+ [regression] Touchscreen stop working on LG L90 Dual
tags: added: regression
Revision history for this message
Martin Pitt (pitti) wrote :

Fix landed upstream, thanks Andreas!

affects: udev (Ubuntu) → systemd (Ubuntu)
Changed in systemd (Ubuntu):
status: Triaged → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package systemd - 230-1git1

---------------
systemd (230-1git1) yakkety; urgency=medium

  * Don't add a Breaks: against usb-modeswitch when building on Ubuntu; there
    it does not use hotplug.functions and is a lower version.
  * boot-and-services autopkgtest: Add missing xserver-xorg and
    lightdm-greeter test dependencies, so that lightdm can start.
    (See LP #1581106)

 -- Martin Pitt <email address hidden> Wed, 25 May 2016 09:37:41 +0200

Changed in systemd (Ubuntu):
status: Fix Committed → Fix Released
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.