Differences between revisions 24 and 25
Revision 24 as of 2010-01-15 07:38:04
Size: 7788
Editor: ?DamyanIvanov
Comment: add a note about 1.7 and udev to the hal method
Revision 25 as of 2010-01-15 08:57:28
Size: 7931
Editor: ?DamyanIvanov
Comment: Elaborate on GUI configurators
Deletions are marked like this. Additions are marked like this.
Line 202: Line 202:
The `gpointing-device-settings` program (in the package with the same name) can be used to enable tapping and scrolling graphically. The `Mouse` and `Pointing device settings` applets in the GNOME control center (the later in the `gpointing-device-settings` package) can be used to enable tapping and scrolling graphically. Beware that they can override the global X settings in `xorg.conf`, `hal` or `udev`.

Elantech Touchpad

Support in lenny

Using the mouse driver or the evdev driver

<!> This is the only option available to you if you're using an unpatched Linux kernel such as one of the Linux 2.6.26 kernel packages in lenny.

The touchpad is recognised as an Intellimouse PS/2 device. Consequently, it is not recognised by the X.org synaptics driver.

(II) Synaptics touchpad driver version 0.14.6 (1406)
Synaptics0 no synaptics event device found
(**) Option "Device" "/dev/psaux"
(**) Option "HorizEdgeScroll" "1"
Query no Synaptics: 6003C8

What works

Two-finger vertical scrolling works, as do two- and three-finger taps (for the middle and right buttons) and, strangely, drags can be started by holding one finger on the pad and tapping with another finger.

What doesn't work

It is not possible to make any specific device configuration, such as horizontal scrolling.

Using the synaptics driver

<!> This option is available to you if you use a patched Linux kernel or with 2.6.28 and later.

Practically everything supported works, except for things like finger pressure which the hardware doesn't support.

2.6.27.* and older

Asus patched the xorg synaptics driver in order to make this Elantech device work properly. However, the source code is nowhere to be found, and neither Asus nor the Xandros packager of the driver replied to emails asking for the source code.

There is a kernel patch (?see here for build instructions) which provides support for the touchpad, which will be identified as an "ETPS/2 Elantech Touchpad". This allows the synaptics driver to be used; both two-finger and circular scrolling work fine, though they are disabled by default, but the above drag method is unsupported.

With the patch, the touchpad is usable with xserver-xorg-input-synaptics in lenny.

{i} lsinput (in package input-utils) reports the following:

   bustype : BUS_I8042
   vendor  : 0x2
   product : 0xd
   version : 0
   name    : "ETPS/2 Elantech Touchpad"
   phys    : "isa0060/serio1/input0"
   bits ev : EV_SYN EV_KEY EV_REL EV_ABS

The kernel log contains:

elantech.c: Elantech version query result 0x02, 0x00, 0x30.
elantech.c: assuming hardware version 2, firmware version 2.48
elantech.c: Synaptics capabilities query ersult 0x00, 0x02, 0x64.

2.6.28-rc1 and later

The touchpad is recognised by the kernel as an Elantech device (ETPS/2) device; no patching is needed.

Whether you choose a Debian-packaged kernel or you build your own, you will need to make sure that CONFIG_MOUSE_PS2_ELANTECH is set. By default, it isn't. (?See here for build instructions.)

elantech-config-location.png

/!\ The Debian archive contains a sufficiently recent version of xserver-xorg-input-synaptics (0.99.3); however, it's only in experimental and requires X from experimental (unless you recompile it).

{*} xserver-xorg-input-synaptics 0.99.3, built for use on lenny, is available in packaged form from http://alioth.debian.org/~dsalt-guest/eee/ (you'll need to use dpkg -i to install it).

[Correct as of 2009-02-26.]

(II) Synaptics touchpad driver version 0.99.2
(--) Configured Mouse auto-dev sets device to /dev/input/event9
(**) Option "Device" "/dev/input/event9"
(II) Configured Mouse: x-axis range 8 - 1144
(II) Configured Mouse: y-axis range 8 - 760
(II) Configured Mouse: device does not report pressure, will use touch data.
(II) Configured Mouse: finger width range 0 - 0
(II) Configured Mouse: buttons: left right middle double triple
(II) Configured Mouse touchpad found

{i} lsinput reports the following:

   bustype : BUS_I8042
   vendor  : 0x2
   product : 0xe
   version : 0
   name    : "ETPS/2 Elantech Touchpad"
   phys    : "isa0060/serio1/input0"
   bits ev : EV_SYN EV_KEY EV_REL EV_ABS

The kernel log content is as for older, patched, kernels.

Support in squeeze

(!) Enabled in kernel 2.6.32-4, which (at the time of writing) is only in unstable.

The touchpad is recognised by the kernel as an Elantech device (ETPS/2) device. Identification is as for lenny with 2.6.28-rc1 or later.

Why the Synaptics driver?

Because. :\

It certainly simplifies configuration, and various features implemented by the driver are software features ‒ edge scrolling, for example ‒ and many of them are common across all supported hardware.

Synaptics driver configuration

xserver-xorg-input-synaptics (in squeeze) has tapping disabled by default; see /usr/share/doc/xserver-xorg-input-synaptics/NEWS.Debian.gz. The following configuration examples show how to re-enable tapping and how to configure other options.

For a list of available options, see synclient -l. Not all options are appropriate; for example, Elantech touchpads don't report pressure.

xorg.conf

Recommended where the touchpad is declared as an input device in the ServerLayout section.

Section "InputDevice"
        Identifier      "Touchpad"
        Driver          "synaptics"
        Option          "Device"                "/dev/input/mouse0"
        Option          "Protocol"              "auto-dev"
        Option          "VertTwoFingerScroll"   "1"
        Option          "HorizTwoFingerScroll"  "1"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "2"
        Option          "TapButton3"            "3"
EndSection

Section "ServerLayout"
    Identifier          "Default Layout"
    Screen              "Default Screen"
    InputDevice         "Generic Keyboard"
    InputDevice         "Touchpad"
EndSection

HAL

Recommended where X is allowed to auto-detect devices and you have xserver-xorg-core 1.6.*. ( /!\ for 1.7 see #udev)

The suggested name for this is /etc/hal/fdi/policy/touchpad.fdi.

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
 <device>
  <match key="info.capabilities" contains="input.touchpad">
   <merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
   <merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
   <merge key="input.x11_options.TapButton1" type="string">1</merge>
   <merge key="input.x11_options.TapButton2" type="string">2</merge>
   <merge key="input.x11_options.TapButton3" type="string">3</merge>
  </match>
 </device>
</deviceinfo>

udev

Recommended where X is allowed to auto-detect devices and you have xserver-xorg-core 1.7 or later.

The suggested name for this is /etc/udev/rules.d/99-elantech.rules.

ACTION!="add|change", GOTO="elantech_synaptics_end"
KERNEL!="event*", GOTO="elantech_synaptics_end"
ENV{ID_INPUT_TOUCHPAD}!="1", GOTO="elantech_synaptics_end"

ENV{x11_driver}="synaptics"

# Restricted to devices which are reported as ETPS/2

ATTR{device/name}=="*ETPS/2*", \
  ENV{x11_options.VertTwoFingerScroll}="1", \
  ENV{x11_options.HorizTwoFingerScroll}="1", \
  ENV{x11_options.TapButton1}="1", \
  ENV{x11_options.TapButton2}="2", \
  ENV{x11_options.TapButton3}="3"

LABEL="elantech_synaptics_end"

SHMConfig considered harmful

If you find that the touchpad configuration cannot be altered by using synclient, then (and only then) add a line to enable SHMConfig: either an Option or a <merge />, depending on how you choose to set the default configuration.

(Ref. this blog posting by Matthew Garrett.)

GUI aid

The Mouse and Pointing device settings applets in the GNOME control center (the later in the gpointing-device-settings package) can be used to enable tapping and scrolling graphically. Beware that they can override the global X settings in xorg.conf, hal or udev.