DebuggingTouchpadDetection

Debugging Central

This page is part of the debugging series — pages with debugging details for a variety of Ubuntu packages.

Introduction

Problems with touchpad detection typically fall into one of these categories:

  1. Your Touchpad doesn't work at all.
  2. Your Touchpad stops working after a while.
  3. Your Touchpad has the simple features of a mouse, but Touchpad features, like tapping, scrolling, etc. do not work at all.
  4. Some features of your Touchpad like scrolling, tapping, or dragging don't work as expected.

How to file the bug report

If your are unsure to which package the bug should be filed, or your problem is not listed in any of the categories, then please file your touchpad related bugs against xserver-xorg-input-libinput or xserver-xorg-input-synaptics (if it is installed). If the bug turns out to be a bug related to the kernel (linux) or any other package, bug triagers will assign your bug additionally to that package and mark the task related to xserver-xorg-input-input/synaptics, as invalid.

General information before filing the bug

This information should be provided in the bug description itself:

  1. Laptop model directly from the sticker of the computer.
  2. Manufacturer of the Touchpad.
  3. When the symptom first appeared.

Sample Description - 'ALPS Touchpad' incorrectly detected as PS/2 mouse in 'Sony Vaio VPCCW16FG' after the kernel upgrade.

However, if you think that the bug is a general one with your Touchpad, and is irrespective of the laptop model, you could omit mentioning the laptop model in the description. Please only consider doing this when you are very sure that the bug is affecting all laptops with that Touchpad model.

In case your Touchpad doesn't work at all (No response from the Touchpad)

This is generally a case of a kernel (linux) or xorg bug.

  1. Execute at a terminal:

    cat /proc/bus/input/devices

    One should see a touchpad device, like:

    I: Bus=0011 Vendor=0002 Product=0007 Version=01b1
    N: Name="SynPS/2 Synaptics TouchPad"
    P: Phys=isa0060/serio2/input0
    S: Sysfs=/devices/platform/i8042/serio2/input/input8
    U: Uniq=
    H: Handlers=mouse2 event8
    B: EV=b
    B: KEY=420 0 70000 0 0 0 0 0 0 0 0
    B: ABS=11000003 
    If you do not find something like this, then the bug is in the linux kernel. Please follow these steps:
    1. File the bug against the linux package by running ubuntu-bug linux.

    2. Provide the general information.

    3. Enter the following commands in a terminal:

      cat /proc/bus/input/devices > ~/devices
    4. Attach ~/devices as separate attachments to your bug report.

  2. If you see a touchpad device in /proc/bus/input/devices, check by connecting an external mouse to see if that works. If it does, then one may be affected by the transition from xserver-xorg-input-synaptics to libinput. Hence, one will want to check by uninstalling xserver-xorg-input-synaptics to see if this resolves the issue. If not, please see below:

    • After reading this about how to enter VT and log evtest events, switch to a VT using Crtl+Alt+F2 and enter the following in your terminal:

      sudo evtest /dev/input/eventX > ~/evtest

      where the "X" in "eventX" is the event number found by typing in a terminal:

      cat /proc/bus/input/devices
    • Scroll, tap, drag, press buttons, and create various other possible events on the Touchpad. Then, press CTRL+C to exit and execute:

      cp /var/log/Xorg.0.log ~/Xorg.0.log 
    • Press Crtl+Alt+F7 to switch back to X.
    • Add as separate attachments ~/evtest and ~/Xorg.0.log to the bug report.

In case your Touchpad stops working after a while

This is generally a case of a kernel (linux) or xorg bug. In this case, in the description field, specify the steps to make the touchpad stop working (e.g. hit a key, drag an icon, after X seconds of inactivity, etc.).

  1. If your Touchpad stops working after it has been left unused for awhile, it may be due to runtime power-management. Disable runtime power management of the Touchpad device and check if the issue persists.
    1. Look for your Touchpad device in /proc/bus/input/devices.

    2. The line starts with S: is the path of the Touchpad device, the full path will be something like /sys/devices/platform/i8042/serio1/input/input5/power/control.

    3. Disable runtime power-managed by running echo on | sudo tee /sys/devices/platform/i8042/serio1/input/input5/power/control (replace the path with the one for your Touchpad device.

    4. If the problem disappears, report as such to your bug report. If the problem persists, read on.
  2. After reading this on how to enter VT and log evtest events, switch to a VT using Crtl+Alt+F2 and enter following in your terminal:

    sudo evtest /dev/input/eventX > ~/evtest 
    • Perform the action that makes the Touchpad fails. Then, press CTRL+C to exit.
    • Press Crtl+Alt+F7 to switch back to X.
    • Add as separate attachments ~/evtest to the bug report.

  3. Directly after logging in to GNOME, KDE, or Xfce open a terminal and enter the following commands:

    cat /proc/bus/input/devices > ~/devices
    dmesg > ~/dmesg_boot
    cp /var/log/Xorg.0.log ~/Xorg.0.log 
  4. Wait until your touchpad stops working.
  5. Enter the following commands:

    dmesg > ~/dmesg
    diff -ns ~/dmesg_boot ~/dmesg > ~/dmesg_diff
    cp /var/log/Xorg.0.log ~/Xorg.0.log_tmp
    diff -ns ~/Xorg.0.log ~/Xorg.0.log_tmp > ~/Xorg.0.log_diff 
  6. Attach ~/devices, ~/dmesg_boot, ~/dmesg_diff, ~/Xorg.0.log and ~/Xorg.0.log_diff as separate attachments to your bug report.

In case Touchpad features like scrolling, tapping, etc. do not work at all.

Common symptom is absence of the 'Touchpad' tab/device shown in Control Center.

Your touchpad may be wrongly recognized as a mouse. So xserver-xorg-input-synaptics has nothing to do with it. Please note in the case of filing a bug against the kernel (linux), you should not mark the bug a duplicate of another. Even if you can find a closely related bug and you have a strong feeling that the bug should be duplicate. This is a policy of the Ubuntu Kernel Team and it helps them to handle bugs better.

Please execute at a terminal:

cat /proc/bus/input/devices > ~/devices 

If the output includes the name of your Touchpad (e.g. Name="SynPS/2 Synaptics TouchPad"), then the linux kernel has detected it right. In any case, attach as separate attachments to your bug report the results of the following commands:

cat /proc/bus/input/devices > ~/devices
xinput --list > ~/xinput 
cat /var/log/Xorg.0.log > Xorg.0.log 

In case at least one of the Touchpad features work, but does not work correctly and as expected

Examples of this are jumpy cursor, scrolling problems, Touchpad area is misdetected, circular scrolling, and buttons not correctly mapped. Please attach the following files as separate attachments to your bug report:

  • Execute in a terminal:

    xmodmap -pp > ~/xmodmap 
  • Execute in a terminal:

    xinput --list-props <id> > ~/xinput 
    • Please note that <id> is the number of your Touchpad found executing in a terminal:

      xinput --list 
      • An example, partial output of this notes the id is 12:

           ↳ SynPS/2 Synaptics TouchPad                 id=12   [slave  pointer  (2)] 
  • After reading this for help on how to enter VT and log evtest events, switch to a VT using Crtl+Alt+F2 and enter the following in a terminal:

    sudo evtest /dev/input/eventX > ~/evtest
    • Perform the action that does not work on the Touchpad. Then, press CTRL+C to exit.
    • Press Crtl+Alt+F7 to switch back to X.
  • After reading this on reporting xev logs, execute the following in a terminal, and perform the relevant actions:

    xev > ~/xev.log 

In case your multitouch features does not work

This bug is common in Synaptics Touchpad V7.2 where multitouch works perfect in windows but not in linux. This is not a bug related to xserver-xorg-input-synaptics. Multitouch capabilities are not detected but the kernel itself as evident in:

xinput --list-props <id of your touchpad> 

shows:

Synaptics Capabilities (277):   1, 1, 1, 0, 0 

This bug is already known (see the Known bugs below). In this case please don't file any new bugs, but add a comment in the existing bug for any relevant information that you have.

NOTE : Synaptics is not willing to disclose the protocol it uses for the multitouch support for its newer Touchpads. As soon as Synaptics discloses it's protocol, this issue will be fixed. So, this is not a bug in general, and has been classified as a wishlist.

For any other case, include the following as separate attachments in your bug report:

  1.  xinput --list-props <id> > ~/xinput 

    • In  xinput --list-props <id> , <id> is the number of your touchpad found by executing at a terminal:

      xinput --list 
  2. After reading this for help on how to enter VT and log evtest events, switch to a VT using Crtl+Alt+F2 and enter following in your terminal:

    sudo evtest /dev/input/eventX > ~/evtest 
  3. Add identifier, Scroll, tap, drag, press buttons, and create various other possible events on the Touchpad. Then, press CTRL+C to exit.
  4. Press Crtl+Alt+F7 to switch back to X.
  5. Take your pointer in the windows and hold down your two fingers on the Touchpad and raise. Also try to tap with two fingers.

     xev | grep -i button > ~/xev
  6. Attach as separate attachments to your bug report ~/xev, ~/xinput and your ~/evtest.

Before filing new bug please look in the common bugs section.

Enabling right button click for clickpads on Ubuntu 12.04 LTS

Ubuntu 12.04 LTS added support for clickpads. The buttons are pressed by pressing the surface of the trackpad itself. All known clickpads, with the exception of the Apple Magic Trackpad, have indications on the trackpad for where the left and right buttons are. Clicking in the right button area should cause a right button click action. However, right button click support was added too late in the 12.04 LTS development cycle to be enabled by default. It is enabled by default in Ubuntu 12.10 and on.

Fortunately, the right click functionality is present and working in the release. It simply needs to be enabled. The attached enable-rightbutton.sh script may be used to simplify the process. After downloading the script, execute the following:

chmod a+x enable-rightbutton.sh
./enable-rightbutton.sh <device id|device name>

Be sure to use the device id or name of your specific trackpad. You can list the devices on your computer using the "xinput" command.

General work flow for Triagers and debugging tips

If features of Touchpad like tapping and scrolling do not work at all, the user will not see the Touchpad Tab in System -> Administration -> Mouse in the Main menu. This means that Touchpad is misdetected as PS/2 mouse. Here the following workflow must be followed.

  1. Check whether the kernel has detected the Touchpad or not by executing at a terminal:

    cat /proc/bus/input/devices 

    If Touchpad is detected, then something like the following will appear:

    Name="SynPS/2 Synaptics TouchPad" 

    If Touchpad is not detected then the following will appear:

    Name="ImPS/2 Generic Wheel Mouse"
    In this case the bug must be a kernel issue.
  2. Check whether xserver has detected the Touchpad correctly by executing at a terminal:

    xinput --list 
    You will see the same name of Touchpad as above.
  3. Check whether the libinput (or synaptics for older Ubuntu) module is correctly loaded in xserver or not via executing at a terminal:

    cat /var/log/Xorg.0.log | grep -i synaptics 
  4. For problems such as scrolling area, touch area, button wrong mapping, and multitouch, try investigating with:

    evtest /dev/input/eventX
    xev 

    Look for name in:

    xinput --list 

    For example:

    ↳ TouchPad id=6 [slave  pointer  (2)] 

    Then, type:

    xinput --list-props 6 
  5. When debugging libinput, libinput debug-events would be helpful. The command is in the libinput-tools package.

  6. If the Touchpad vendor is Synaptics, try loading psmouse kernel module with synaptics_intertouch=0.

  7. If the Touchpad vendor is Elantech, try loading psmouse kernel module with elantech_smbus=0. This option only exists since Cosmic (linux v4.18 kernel).


CategoryBugSquad CategoryDebugging CategoryCleanup

DebuggingTouchpadDetection (last edited 2019-02-26 09:05:55 by anthonywong)