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

Before filing a bug please check the list of known bugs at the end of this document. 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-synaptics. Please ensure you have xdiagnose installed, and you click Yes in order to include the necessary debugging information. 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-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. Check by connecting an external mouse to see if that works or not.

  1. If no, then you should file the bug against HAL and follow these steps:

    • 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
    • . Add identifier, 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.o.log.

  2. If yes, execute at a terminal:

    cat /proc/bus/input/devices

    One should see:

    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.

    2. Provide the general information.

    3. Enter the following commands in a terminal:

      dmesg > ~/dmesg
      cat /proc/bus/input/devices > ~/devices
    4. Attach as separate attachments to your bug report ~/dmesg, ~/devices, and your /var/log/Xorg.0.log.

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, etc.). Now connect an external mouse to see if it works or not.

  1. If no, then you should file the bug against HAL and follow these steps:

    • 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 
    • Add identifier, Scroll, tap, drag, press buttons, and create various other possible events on the Touchpad. Then, press CTRL+C to exit.

      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.o.log.

  2. Execute at a terminal:

    cat /proc/bus/input/devices 

    One should see something like this:

    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 a Touchpad in you /proc/bus/inpus/devices, the bug is in the kernel itself and you should follow these steps:
    1. Provide the general information.

    2. 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 
    3. Wait until your touchpad stops working.
    4. Open a Virtual Terminal by pressing Ctrl-Alt-F1.
    5. Enter the following commands:

      LANG=C
      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 as separate attachments to your bug report ~/devices, ~/dmesg_boot, ~/dmesg_diff, ~/Xorg.0.log and ~/Xorg.0.log_diff.

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

Common symptom is absence of the 'Touchpad' tab in System -> Preferences -> Mouse.

This may be a wrong detection by xserver or the kernel itself. 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. For more on this, please see here.

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 this case, please don't report the bug against the kernel, rather report it against HAL. For more information on reporting bugs against HAL, refer DebuggingHal

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 

IMPORTANT: Please do not file bug against the linux package unless you know it should. If you are unsure, file it against xserver-xorg-input-synaptics, and somebody will change it to linux if applicable.

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
    • Add identifier, Scroll, tap, drag, press buttons, and create various other possible events 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.

Some general work flow for Triagers

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 synaptics 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 


CategoryBugSquad CategoryDebugging CategoryCleanup

DebuggingTouchpadDetection (last edited 2014-01-28 19:38:19 by penalvch)