Touchpad/Testing: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Created page with 'Touchpad calibration and testing is a complex area, not very well documented in the industry. This page collects useful information when testing and debugging touchpads. OLPC ha…')
 
No edit summary
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Touchpad calibration and testing is a complex area, not very well documented in the industry. This page collects useful information when testing and debugging touchpads.
Touchpad calibration and testing is a complex area, not very well documented in the industry. This page collects useful information when testing and debugging touchpads.


OLPC has shipped 3 touchpads
OLPC has shipped 3 touchpads:


* ALPS (in XO-1 CL1 model)
* Sentelic AVC Finger Sensing Pad (in XO-1 CL1A model, XO-1.5, XO-1.75, XO-4),
* Synaptics (in XO-1 CL1A model, XO-1.5, XO-1.75)
* Synaptics touchpad (in XO-1 CL1A model, XO-1.5, XO-1.75), and;
* Sentelic AVC (in XO-1 CL1A model, XO-1.5, XO-1.75)
* ALPS full width three panel touchpad (in XO-1 CL1 model).


= Identification =
Right after boot, use "dmesg | grep -i psmouse" to see what protocol is in use. This usually reveals the tp in use.

In [[Terminal activity]], type this:

cat /sys/bus/serio/drivers/psmouse/serio*/protocol

The value displayed is the protocol of the communication link between the computer and the touchpad. Possible values include:

* FSPPS/2 - Sentelic AVC Finger Sensing Pad,
* SynRelPS/2 - Synaptics touchpad, in relative mode, on latest kernel,
* SynPS/2 - Synaptics touchpad, in Synaptics protocol mode, on a previous kernel,
* OLPC HGPK - ALPS full width three panel touchpad.

Also, look at the boot messages, type this:

cat /sys/bus/serio/drivers/psmouse/serio*/protocol && \
dmesg | grep psmouse

Example output, 13.2.0 on XO-4 with Sentelic touchpad<!-- SHC3110016F SHC3110021C SHC31100280-->:
FSPPS/2
[ 11.001718] psmouse serio1: sentelic: Finger Sensing Pad, hw: 13.2.6, sn: 0, sw: 1.1.0-K

Example output, 13.2.0 on XO-1.75 with Sentelic touchpad<!-- SHC12900F76 -->:
FSPPS/2
[ 8.937258] psmouse serio1: ID: 10 02 64

Example output, 13.2.0 on XO-1.5 with Synaptics short touchpad<!-- SHC016013D1 -->:
SynRelPS/2
[ 15.804359] psmouse serio1: synaptics: OLPC XO detected, not enabling Synaptics protocol.
[ 19.228099] psmouse serio1: synaptics: Touchpad model: 1, fw: 6.2, id: 0x92a0b1, caps: 0xa04711/0x200000/0x0

Example output, 13.2.0 on XO-1 with Synaptics short touchpad<!-- SHC92805B50 -->:
SynRelPS/2
[ 16.447317] psmouse serio1: synaptics: OLPC XO detected, not enabling Synaptics protocol.
[ 18.583646] psmouse serio1: synaptics: Touchpad model: 1, fw: 6.2, id: 0x92a0b1, caps: 0xa04711/0x200000/0x0

Example output, 13.2.0 on XO-1 with ALPS full width three panel touchpad<!-- CSN75001153 -->:
OLPC HGPK
[ 17.001941] psmouse serio1: hgpk: ID: 67 00 50
[ 17.001963] psmouse serio1: hgpk: OLPC touchpad revision 0x50

= Variables =

These are the variables we find influence TP performance. Our tuning work aims to find a good balance that makes the TP work correctly for a wide range of cases.

Keep in mind that these variables can be pushed to points where the TP misbehaves -- make your finger wet enough, or your power source dirty enough, and no TP will work correctly regardless of vendor and tuning.

Experience indicates that configuration changes that consider only a subset of these variables... are going to break some of the untested cases.
* '''Dirty power''': if the power supply is connected to a dirty/noisy power strip (ie: one with several other power supplies connected), this can cause issues with the TP input; control for this by also testing on battery power.
* '''Battery charging''': when on external power, whether the battery is charging or not may influence behaviour. Control for this by testing with a discharged battery, as well as without a battery.
* '''Approach speed''': some TPs calibrate as soon as they sense the finger on the TP -- if your finger approaches the TP very slowly, the calibration loop might catch signal of your finger ''near'', but not in contact with the TP, leading to erratic tracking; control for this with very slow approach to the TP as well as fast & firm approach to the TP.
* '''Firmness of touch''': very light contact with the TP can lead to erratic tracking; control for this using a very light touch, as well as firm contact with the TP.
* '''Hand placement''': the ideal condition for the TP is where only one finger contacts the laptop; so try
** strictly one finger
** second hand holding the unit near the antennas / speakers
** second hand holding the corner of the base assembly
** second hand under the base assembly, under the touchpad area
** second hand near (but not touching) touchpad
** thumb resting on buttons
* '''Lap vs table''': body contact /proximity with the laptop can affect TP behaviour -- test with the laptop on your lap, then on a plastic or wooden table.
* '''Humidity and temperature''': test in hot+humid, hot+dry, cold+humid, cold+dry environments; the top risk is hot+humid.
* '''Dust and humidity''': dust, specially combined with humidity, poses a hard problem for TPs, test with talcum powder in a humid environment.
* '''Sweaty/wet finger''': a drop of water or a wet finger are expected to confuse TPs. Sweaty fingers are a hard problem for TPs but should be able to operate passably.
* '''Finger size''': different finger sizes look very different to the TP software -- test with users with various finger sizes. Ensure you test with children!
* '''User variation''': Other variations in users bodies and usage patters can affect the TP. Ensure you test with a number of users.


= Tests =
= Tests =
Line 13: Line 78:
== Standing finger ==
== Standing finger ==


* Place your finger in one spot, keep it there for a long time. The pointer should not move.
* Place your finger in one spot, keep it there for at least one minute. The pointer should not move.

This test is useful to reveal very dirty power sources.


== Circles ==
== Circles ==


* Put your finger on the TP and move the pointer in circles -- for example follow the Sugar Activity icons circle/spiral loosely for at least one minute.
== Spirals ==
* Optionally, try to finish the stroke pointing to a specific icon or element on screen.

After a few seconds, a faulty TP will start tracking the circle motion erratically.


== Rolling finger ==
== Rolling finger ==

* Place your finger in one spot of the TP, in a 45 degree angle
* Without lifting the finger, roll it left and right repeatedly, for at least 1 minute

After a few seconds of finger rolling, a faulty TP will start reporting erratic position jumps.

This test exercises the small finger motions used for precise pointer movements.

== Spirals ==

* Paint spirals from the outside in, trying to avoid crossing an already-painted line.

This is a good test for precision.


== Corner to corner sweep ==
== Corner to corner sweep ==


* Move the pointer to a corner of the screen
* In one fast stroke, you should be able to reach the opposite corner of the screen.


This test controls for acceleration -- ideally the configured acceleration allows you to both have precision with slow movements, and enough accel that swift movements can cover the whole screen corner-to-corner distance.
= Variables =

= See also =


* [[Touchpad/AVC Sentelic FSP configuration]]
* '''Dirty power''' --
* '''Approach speed'''
* '''Firmness of touch'''
* '''Hand placement'''
* '''Lap vs table'''
* '''Humidity and temperature'''
* '''Wet finger'''
* '''Finger size'''
* '''Dust'''
* '''User variation'''


[[Category:Touchpad]]
[[Category:Touchpad]]

Latest revision as of 03:49, 22 November 2013

Touchpad calibration and testing is a complex area, not very well documented in the industry. This page collects useful information when testing and debugging touchpads.

OLPC has shipped 3 touchpads:

  • Sentelic AVC Finger Sensing Pad (in XO-1 CL1A model, XO-1.5, XO-1.75, XO-4),
  • Synaptics touchpad (in XO-1 CL1A model, XO-1.5, XO-1.75), and;
  • ALPS full width three panel touchpad (in XO-1 CL1 model).

Identification

In Terminal activity, type this:

cat /sys/bus/serio/drivers/psmouse/serio*/protocol

The value displayed is the protocol of the communication link between the computer and the touchpad. Possible values include:

  • FSPPS/2 - Sentelic AVC Finger Sensing Pad,
  • SynRelPS/2 - Synaptics touchpad, in relative mode, on latest kernel,
  • SynPS/2 - Synaptics touchpad, in Synaptics protocol mode, on a previous kernel,
  • OLPC HGPK - ALPS full width three panel touchpad.

Also, look at the boot messages, type this:

cat /sys/bus/serio/drivers/psmouse/serio*/protocol && \
dmesg | grep psmouse

Example output, 13.2.0 on XO-4 with Sentelic touchpad:

FSPPS/2
[   11.001718] psmouse serio1: sentelic: Finger Sensing Pad, hw: 13.2.6, sn: 0, sw: 1.1.0-K

Example output, 13.2.0 on XO-1.75 with Sentelic touchpad:

FSPPS/2
[    8.937258] psmouse serio1: ID: 10 02 64

Example output, 13.2.0 on XO-1.5 with Synaptics short touchpad:

SynRelPS/2
[   15.804359] psmouse serio1: synaptics: OLPC XO detected, not enabling Synaptics protocol.
[   19.228099] psmouse serio1: synaptics: Touchpad model: 1, fw: 6.2, id: 0x92a0b1, caps: 0xa04711/0x200000/0x0

Example output, 13.2.0 on XO-1 with Synaptics short touchpad:

SynRelPS/2
[   16.447317] psmouse serio1: synaptics: OLPC XO detected, not enabling Synaptics protocol.
[   18.583646] psmouse serio1: synaptics: Touchpad model: 1, fw: 6.2, id: 0x92a0b1, caps: 0xa04711/0x200000/0x0

Example output, 13.2.0 on XO-1 with ALPS full width three panel touchpad:

OLPC HGPK
[   17.001941] psmouse serio1: hgpk: ID: 67 00 50
[   17.001963] psmouse serio1: hgpk: OLPC touchpad revision 0x50

Variables

These are the variables we find influence TP performance. Our tuning work aims to find a good balance that makes the TP work correctly for a wide range of cases.

Keep in mind that these variables can be pushed to points where the TP misbehaves -- make your finger wet enough, or your power source dirty enough, and no TP will work correctly regardless of vendor and tuning.

Experience indicates that configuration changes that consider only a subset of these variables... are going to break some of the untested cases.

  • Dirty power: if the power supply is connected to a dirty/noisy power strip (ie: one with several other power supplies connected), this can cause issues with the TP input; control for this by also testing on battery power.
  • Battery charging: when on external power, whether the battery is charging or not may influence behaviour. Control for this by testing with a discharged battery, as well as without a battery.
  • Approach speed: some TPs calibrate as soon as they sense the finger on the TP -- if your finger approaches the TP very slowly, the calibration loop might catch signal of your finger near, but not in contact with the TP, leading to erratic tracking; control for this with very slow approach to the TP as well as fast & firm approach to the TP.
  • Firmness of touch: very light contact with the TP can lead to erratic tracking; control for this using a very light touch, as well as firm contact with the TP.
  • Hand placement: the ideal condition for the TP is where only one finger contacts the laptop; so try
    • strictly one finger
    • second hand holding the unit near the antennas / speakers
    • second hand holding the corner of the base assembly
    • second hand under the base assembly, under the touchpad area
    • second hand near (but not touching) touchpad
    • thumb resting on buttons
  • Lap vs table: body contact /proximity with the laptop can affect TP behaviour -- test with the laptop on your lap, then on a plastic or wooden table.
  • Humidity and temperature: test in hot+humid, hot+dry, cold+humid, cold+dry environments; the top risk is hot+humid.
  • Dust and humidity: dust, specially combined with humidity, poses a hard problem for TPs, test with talcum powder in a humid environment.
  • Sweaty/wet finger: a drop of water or a wet finger are expected to confuse TPs. Sweaty fingers are a hard problem for TPs but should be able to operate passably.
  • Finger size: different finger sizes look very different to the TP software -- test with users with various finger sizes. Ensure you test with children!
  • User variation: Other variations in users bodies and usage patters can affect the TP. Ensure you test with a number of users.

Tests

Standing finger

  • Place your finger in one spot, keep it there for at least one minute. The pointer should not move.

This test is useful to reveal very dirty power sources.

Circles

  • Put your finger on the TP and move the pointer in circles -- for example follow the Sugar Activity icons circle/spiral loosely for at least one minute.
  • Optionally, try to finish the stroke pointing to a specific icon or element on screen.

After a few seconds, a faulty TP will start tracking the circle motion erratically.

Rolling finger

  • Place your finger in one spot of the TP, in a 45 degree angle
  • Without lifting the finger, roll it left and right repeatedly, for at least 1 minute

After a few seconds of finger rolling, a faulty TP will start reporting erratic position jumps.

This test exercises the small finger motions used for precise pointer movements.

Spirals

  • Paint spirals from the outside in, trying to avoid crossing an already-painted line.

This is a good test for precision.

Corner to corner sweep

  • Move the pointer to a corner of the screen
  • In one fast stroke, you should be able to reach the opposite corner of the screen.

This test controls for acceleration -- ideally the configured acceleration allows you to both have precision with slow movements, and enough accel that swift movements can cover the whole screen corner-to-corner distance.

See also