[Nix-dev] synaptics touchpad configuration question

Kirill Elagin kirelagin at gmail.com
Tue Mar 17 08:14:01 CET 2015


If I’m reading the log correctly, your touchpad is being detected as two
devices (`/dev/input/event10` and `/dev/input/mouse1`) and everything goes
well for the first device, while there is an error for the second one
(also, it looks like you omitted a few interesting lines from the
beginning, so it might be helpful to post complete logs next time, but
that’s not a big deal right now).
So the error is irrelevant here because, at least, the first instance is
correctly detected and configured.
I can’t tell for sure if it is expected that protocol detection for the
`dev/input/mouse*` instance fails, becuase, normally, the device should be
ignored completely, and not ignoring it seems to be a NixOS issue. Here, on
Gentoo, there there is an `Input` section explicitly saying to ignore all
the `/dev/input/mouse*` touchpads in the config drop-in installed by the
synaptics driver. So, again, I’m not sure if the protocol detection is
expected to fail, because it shouldn’t be performed at all in the first
place. I’m attaching the relevant part of my X log in case you might want
to see how this stuff works.

Now, as I said, `synclient` is old and bad, and there are things you can’t
do with it. One notable such thing is that in case you have two touchpads,
you have no way to control which one it will be configuring (and it seems
to pick kinda randomly, i.e. the last detected or something). In your case,
since detection of the second device failed it is probably not the case
that you are configuring the failed device instead, but I still suggest
trying to do this using `xinput` to be sure.
Here is how you do it:

1. Run `xinput`, take note of the id of your touchpad.
2. Run `xinput list-props $id`, take note of the property id for “Synaptics
Tap Action” (I used `man synaptics` to figure out the name of the
property). Also take note of current values, the order is RT, RB, LT, LB,
F1, F2, F3 (also from the man). In my case it was `0, 0, 0, 0, 1, 3, 2`.
The F’s seem to be just buttons for ordinary (not corner) 1-, 2- and
3-finger taps respectively.
3. Run `xinput set-prop $id $propid $a $b $c $d $e $f $g` substituting the
values you want (you probably want to set the second one to `3` and keep
the other ones).


On Tue, Mar 17, 2015 at 5:06 AM Brandon Barker <brandon.barker at cornell.edu>
wrote:

> Thanks for the helpful tips. synctl could change the relevant variable but
> to no effect; the X log seems to indicate why (see the line (EE) synaptics:
> ETPS/2 Elantech Touchpad: Synaptics driver unable to detect protocol). My
> first reference at the end seems to indicate it may be a driver issue, that
> I've so far been unable to resolve by playing with the xserver config, but
> maybe I am missing something.
>
> Original log:
>
> [    36.061] (II) Module synaptics: vendor="X.Org Foundation"
> [    36.061]    compiled for 1.16.4, module version = 1.8.1
> [    36.061]    Module class: X.Org XInput Driver
> [    36.061]    ABI class: X.Org XInput driver, version 21.0
> [    36.061] (II) Using input driver 'synaptics' for 'ETPS/2 Elantech
> Touchpad'
> [    36.061] (**) ETPS/2 Elantech Touchpad: always reports core events
> [    36.061] (**) Option "Device" "/dev/input/event10"
> [    36.105] (II) synaptics: ETPS/2 Elantech Touchpad: found clickpad
> property
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: x-axis range 0 -
> 3260 (res 33)
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: y-axis range 0 -
> 2119 (res 33)
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: pressure range 0 -
> 255
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: finger width range
> 0 - 15
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: buttons: left
> double triple
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: Vendor 0x2 Product
> 0xe
> [    36.105] (**) Option "MaxTapTime" "180"
> [    36.105] (**) Option "MaxTapMove" "220"
> [    36.105] (**) Option "VertEdgeScroll" "1"
> [    36.105] (**) Option "VertTwoFingerScroll" "0"
> [    36.105] (**) Option "HorizTwoFingerScroll" "0"
> [    36.105] (**) Option "RBCornerButton" "3"
> [    36.105] (**) Option "TapButton1" "1"
> [    36.105] (**) Option "TapButton2" "2"
> [    36.105] (**) Option "TapButton3" "3"
> [    36.105] (**) Option "ClickFinger1" "1"
> [    36.105] (**) Option "ClickFinger2" "2"
> [    36.105] (**) Option "ClickFinger3" "3"
> [    36.105] (**) Option "MinSpeed" "0.6"
> [    36.105] (**) Option "MaxSpeed" "1.0"
> [    36.105] (**) Option "AccelFactor" "0.001"
> [    36.105] (--) synaptics: ETPS/2 Elantech Touchpad: touchpad found
> [    36.105] (**) ETPS/2 Elantech Touchpad: always reports core events
> [    36.105] (**) ETPS/2 Elantech Touchpad: always reports core events
> [    36.121] (**) Option "config_info"
> "udev:/sys/devices/platform/i8042/serio1/input/input10/event10"
> [    36.121] (II) XINPUT: Adding extended input device "ETPS/2 Elantech
> Touchpad" (type: TOUCHPAD, id 14)
> [    36.121] (**) synaptics: ETPS/2 Elantech Touchpad: (accel) MinSpeed is
> now constant deceleration 1.7
> [    36.121] (**) synaptics: ETPS/2 Elantech Touchpad: (accel) MaxSpeed is
> now 1.67
> [    36.121] (**) synaptics: ETPS/2 Elantech Touchpad: (accel) AccelFactor
> is now 0.001
> [    36.121] (**) ETPS/2 Elantech Touchpad: (accel) keeping acceleration
> scheme 1
> [    36.121] (**) ETPS/2 Elantech Touchpad: (accel) acceleration profile 1
> [    36.121] (**) ETPS/2 Elantech Touchpad: (accel) acceleration factor:
> 2.000
> [    36.121] (**) ETPS/2 Elantech Touchpad: (accel) acceleration
> threshold: 4
> [    36.122] (--) synaptics: ETPS/2 Elantech Touchpad: touchpad found
> [    36.122] (II) config/udev: Adding input device ETPS/2 Elantech
> Touchpad (/dev/input/mouse1)
> [    36.122] (**) ETPS/2 Elantech Touchpad: Applying InputClass "synaptics
> touchpad catchall"
> [    36.122] (II) Using input driver 'synaptics' for 'ETPS/2 Elantech
> Touchpad'
> [    36.122] (**) ETPS/2 Elantech Touchpad: always reports core events
> [    36.122] (**) Option "Device" "/dev/input/mouse1"
> [    36.141] (EE) synaptics: ETPS/2 Elantech Touchpad: Synaptics driver
> unable to detect protocol
> [    36.141] (EE) PreInit returned 11 for "ETPS/2 Elantech Touchpad"
> [    36.141] (II) UnloadModule: "synaptics"
>
>
>
> Updated config:
>
>
>   services.xserver = {
>     enable = true;
>     layout = "us";
>     videoDrivers = [ "nvidia" ];
>     config = ''
>       Section "ServerLayout"
>           Identifier     "Layout0"
>           InputDevice    "ETPS/2 Elantech Touchpad" "CorePointer"
>
>           # Reference the Screen sections for each driver.  This will
>           # cause the X server to try each in turn.
>           Screen "Screen-nvidia[0]"
>
>       EndSection
>
>       Section "InputDevice"
>           Identifier     "ETPS/2 Elantech Touchpad"
>           Driver         "synaptics"
>           Option         "SendCoreEvents"   "true"
>           Option         "Device" "/dev/input/event10"
>           #Option        "Protocol" "auto" # Causes problems in recent X
>       EndSection
>     '';
>     synaptics = {
>       enable = true;
>       additionalOptions =
>       ''
>         Option "RBCornerButton" "3"
>       '';
>     };
>     desktopManager.xfce.enable = true;
>   };
>
>
>
> The config still results in the same protocol issue. Starting to look like
> I may take this upstream...?
>
>
> More references:
>
> * https://bugs.freedesktop.org/show_bug.cgi?id=77480
>
> http://forums.linuxmint.com/viewtopic.php?f=49&t=146115
>
> http://support.lenovo.com/us/en/products/laptops-and-netbooks/ideapad-y-series-laptops/ideapad-y500-notebook/?tabName=Downloads
> http://positon.org/lenovo-thinkpad-bios-update-with-linux-and-usb
> https://nixos.org/wiki/Xserver
>
>
> On Mon, Mar 16, 2015 at 8:05 AM, Kirill Elagin <kirelagin at gmail.com>
> wrote:
>
>> Well, the next thing to check is the X log. When X detects an input
>> device, it lists all the options it is going to apply, so check that
>> RBCornerButton is actually applied.
>> Also, does the option work if you set it manually (I mean, not in X
>> config, but by actually calling `synclient` from the terminal)?
>>
>> P.S. As a side note I’d like to mention that `synclient` is an old tool
>> (it basically just emulates the old interface on top of the new one for
>> compatibility). XInput2 is the new interface and the command is `xinput`
>> (check `man synaptics` for the mapping between xinput properties and X
>> server config options). Not that it is important in this particular case,
>> but it is just good to know that there are some things you can’t do in
>> synclient.
>>
>>
>> On Mon, Mar 16, 2015 at 3:35 AM Brandon Barker <
>> brandon.barker at cornell.edu> wrote:
>>
>>> Thanks for the tip; interestingly (and possibly unfortunately) the Xorg
>>> config matches configuration.nix:
>>>
>>> cat /nix/store/i1r98qyqppn3yzs1k927hp6z3351rc6n-xserver.conf | grep RB
>>>   Option "RBCornerButton" "3"
>>>
>>>
>>> # Automatically enable the synaptics driver for all touchpads.
>>> Section "InputClass"
>>>   Identifier "synaptics touchpad catchall"
>>>   MatchIsTouchpad "on"
>>>
>>>   Driver "synaptics"
>>>   Option "MinSpeed" "0.6"
>>>   Option "MaxSpeed" "1.0"
>>>   Option "AccelFactor" "0.001"
>>>   Option "MaxTapTime" "180"
>>> Option "MaxTapMove" "220"
>>> Option "TapButton1" "1"
>>> Option "TapButton2" "2"
>>> Option "TapButton3" "3"
>>>
>>>   Option "ClickFinger1" "1"
>>>   Option "ClickFinger2" "2"
>>>   Option "ClickFinger3" "3"
>>>   Option "VertTwoFingerScroll" "0"
>>>   Option "HorizTwoFingerScroll" "0"
>>>   Option "VertEdgeScroll" "1"
>>>
>>>
>>>   Option "RBCornerButton" "3"
>>>
>>> EndSection
>>>
>>>
>>>
>>> On Sun, Mar 15, 2015 at 9:36 PM, Luca Bruno <lethalman88 at gmail.com>
>>> wrote:
>>>
>>>> You can check the contents of xorg.conf, look at ps ax there should be
>>>> the X process running with a particular configuration. Look there if
>>>> there's any culprit with the config first.
>>>>
>>>> On Sat, Mar 14, 2015 at 5:11 PM, Brandon Barker <
>>>> brandon.barker at cornell.edu> wrote:
>>>>
>>>>> I have the following in my configuration.nix:
>>>>>
>>>>>   # Enable the X11 windowing system.
>>>>>   services.xserver = {
>>>>>     enable = true;
>>>>>     layout = "us";
>>>>>     videoDrivers = [ "nvidia" ];
>>>>>     synaptics = {
>>>>>       enable = true;
>>>>>       additionalOptions =
>>>>>       ''
>>>>>         *Option "RBCornerButton" "3"*
>>>>>       '';
>>>>>     };
>>>>>     desktopManager.xfce.enable = true;
>>>>>   };
>>>>>
>>>>>
>>>>> But when I `nixos-rebuild switch` and `reboot`, then check my current
>>>>> configuration with `synclient -l` I see the following:
>>>>>
>>>>>     RBCornerButton          = 0
>>>>>
>>>>> And indeed I still can't right-click.
>>>>>
>>>>> Any tips would be greatly appreciated; this is really the last hurdle
>>>>> (not that there were any others really) in getting nixos working on my
>>>>> ideapad, which up until now has been very resistant to any linux installers
>>>>> over the last few years, partly because nouveau is often the default
>>>>> driver, which doesn't work at all for me. Luckily it is very easy to
>>>>> install nixos from the command line with the help of a few docs. I think
>>>>> this is the first time I've had a ZFS root drive in Linux, maybe in any OS
>>>>> (still not an option in the Ubuntu installer btw).
>>>>>
>>>>> --
>>>>> Brandon E. Barker
>>>>> http://www.cac.cornell.edu/barker/
>>>>>
>>>>> _______________________________________________
>>>>> nix-dev mailing list
>>>>> nix-dev at lists.science.uu.nl
>>>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> NixOS Linux <http://nixos.org>
>>>>
>>>
>>>
>>>
>>> --
>>> Brandon E. Barker
>>> http://www.cac.cornell.edu/barker/
>>>  _______________________________________________
>>> nix-dev mailing list
>>> nix-dev at lists.science.uu.nl
>>> http://lists.science.uu.nl/mailman/listinfo/nix-dev
>>>
>>
>
>
> --
> Brandon E. Barker
> http://www.cac.cornell.edu/barker/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.science.uu.nl/pipermail/nix-dev/attachments/20150317/ca98ac7c/attachment-0001.html 
-------------- next part --------------
[    43.964] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/event6)
[    43.964] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"
[    43.965] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "joystick-all"
[    43.965] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"
[    43.965] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "Default clickpad buttons"
[    43.965] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"
[    43.965] (II) LoadModule: "synaptics"
[    43.965] (II) Loading /usr/lib64/xorg/modules/input/synaptics_drv.so
[    43.975] (II) Module synaptics: vendor="X.Org Foundation"
[    43.975] 	compiled for 1.16.2.901, module version = 1.8.1
[    43.975] 	Module class: X.Org XInput Driver
[    43.975] 	ABI class: X.Org XInput driver, version 21.0
[    43.975] (II) Using input driver 'synaptics' for 'SynPS/2 Synaptics TouchPad'
[    43.975] (**) SynPS/2 Synaptics TouchPad: always reports core events
[    43.975] (**) Option "Device" "/dev/input/event6"
[    44.009] (II) synaptics: SynPS/2 Synaptics TouchPad: ignoring touch events for semi-multitouch device
[    44.009] (--) synaptics: SynPS/2 Synaptics TouchPad: x-axis range 1472 - 5660 (res 64)
[    44.009] (--) synaptics: SynPS/2 Synaptics TouchPad: y-axis range 1408 - 4800 (res 100)
[    44.009] (--) synaptics: SynPS/2 Synaptics TouchPad: pressure range 0 - 255
[    44.009] (--) synaptics: SynPS/2 Synaptics TouchPad: finger width range 0 - 15
[    44.009] (--) synaptics: SynPS/2 Synaptics TouchPad: buttons: left right double triple
[    44.009] (--) synaptics: SynPS/2 Synaptics TouchPad: Vendor 0x2 Product 0x7
[    44.010] (**) Option "VertScrollDelta" "-107"
[    44.010] (**) Option "HorizScrollDelta" "-107"
[    44.010] (**) Option "VertEdgeScroll" "0"
[    44.010] (**) Option "HorizEdgeScroll" "0"
[    44.010] (**) Option "VertTwoFingerScroll" "1"
[    44.010] (**) Option "HorizTwoFingerScroll" "1"
[    44.010] (**) Option "TapButton1" "1"
[    44.010] (**) Option "TapButton2" "3"
[    44.010] (**) Option "TapButton3" "2"
[    44.010] (**) Option "PalmDetect" "1"
[    44.010] (--) synaptics: SynPS/2 Synaptics TouchPad: touchpad found
[    44.010] (**) SynPS/2 Synaptics TouchPad: always reports core events
[    44.031] (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input7/event6"
[    44.031] (II) XINPUT: Adding extended input device "SynPS/2 Synaptics TouchPad" (type: TOUCHPAD, id 13)
[    44.031] (**) synaptics: SynPS/2 Synaptics TouchPad: (accel) MinSpeed is now constant deceleration 2.5
[    44.031] (**) synaptics: SynPS/2 Synaptics TouchPad: (accel) MaxSpeed is now 1.75
[    44.031] (**) synaptics: SynPS/2 Synaptics TouchPad: (accel) AccelFactor is now 0.037
[    44.032] (**) SynPS/2 Synaptics TouchPad: (accel) keeping acceleration scheme 1
[    44.032] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration profile 1
[    44.032] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration factor: 2.000
[    44.032] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration threshold: 4
[    44.032] (--) synaptics: SynPS/2 Synaptics TouchPad: touchpad found
[    44.033] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/mouse0)
[    44.033] (**) SynPS/2 Synaptics TouchPad: Ignoring device from InputClass "touchpad ignore duplicates"


More information about the nix-dev mailing list