Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jan 2008 13:26:41 +0200 (EET)
From:      cristi@roedu.net
To:        "Eygene Ryabinkin" <rea-fbsd@codelabs.ru>
Cc:        freebsd-hackers@freebsd.org, Cristian KLEIN <cristi@roedu.net>, Giulio Ferro <auryn@zirakzigil.org>, nork@freebsd.org
Subject:   Re: Synaptics
Message-ID:  <41549.193.226.5.33.1201087601.squirrel@mail.roedu.net>
In-Reply-To: <a9614w/m/NEnSoIiPTPh4/uowc0@Bh3KkpMJSlNKovi1bWYCmMEWisk>
References:  <fa.Je1w5RRybr4qmj2ujueWGXySl20@ifi.uio.no> <fa.snnr/Fs7qMJDr7skc/SIMDKR890@ifi.uio.no> <fa.bvfj5WRYM4TkklLxmpgK9vdqM8E@ifi.uio.no> <4c65bf9e-80e5-4c0b-acef-d9914a57679f@i12g2000prf.googlegroups.com> <47728D80.5010507@zirakzigil.org> <475A8637.9020507@zirakzigil.org> <20071212155244.GJ1442@daemon.grid.kiae.ru> <4760114D.6020203@zirakzigil.org> <FZ4mJko0Sid9vm6uNWZcbCwQB48@SCyRCnsBHjFm/teUDw7ZY9jGvfs> <47950952.6040909@roedu.net> <a9614w/m/NEnSoIiPTPh4/uowc0@Bh3KkpMJSlNKovi1bWYCmMEWisk>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
> Cristian, good day.
>
> Mon, Jan 21, 2008 at 11:06:26PM +0200, Cristian KLEIN wrote:
>> Eygene Ryabinkin wrote:
>>> But what protocol is selected?  From your Xorg log I assume that
>>> it is either "event", "auto-dev" or not set at all.
>>
>> I just ran into the same problem. In xorg.conf I explicitly told the
>> synaptics driver to use "psm" and "/dev/psm0", but the error message
>> would
>> suggest that it uses "event".
>>
>> Also, I tried to change the source code of the synaptics driver
>> (synaptics.c) and hard-coded "psm" as the only driver, no matter what
>> xorg.conf says. Synaptics still would not start, but this time
>> complaining
>> that no device was specified. Please note that I had "Device" in my
>> xorg.conf, but the error suggests that the driver ignored it.
>
> Could you please provide your Xorg configuration file and the Xorg
> logs for the run when you had hardcoded psm driver.  It will also
> be good to see the modified Synaptics driver source file.
>
> And the version and platform for your FreeBSD is?

I don't know why I keep forgetting to include essential information. Sorry.

cristi:~# uname -a
FreeBSD hades 7.0-RC1 FreeBSD 7.0-RC1 #0: Mon Dec 24 10:10:07 UTC 2007    
root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
cristi:~# pkg_info | grep xorg-server
xorg-server-1.4_3,1 X.Org X server and related programs
cristi:~# pkg_info | grep synaptics
synaptics-0.14.6_2  The Synaptics touchpad X driver

Suppose I use the attached xorg.conf file, at some point,
/var/log/Xorg.0.log shows the following error:

(II) Synaptics touchpad driver version 0.14.6 (1406)
Synaptics_Touchpad no synaptics event device found (checked 10 nodes)
Synaptics_Touchpad The /dev/input/event* device nodes seem to be missing
(EE) xf86OpenSerial: No Device specified.
Synaptics driver unable to open device
(EE) PreInit failed for input device "Synaptics_Touchpad"
(II) UnloadModule: "synaptics"

As you said, it looks like synaptics is trying to use the "auto" protocol,
although the configuration file tells it to use "psm".

Now, if I put the attached patch in x11-drivers/synaptics/files, using the
same xorg.conf, synaptics will fail like this:

(II) Synaptics touchpad driver version 0.14.6 (1406)
(EE) xf86OpenSerial: No Device specified.
Synaptics driver unable to open device
(EE) PreInit failed for input device "Synaptics_Touchpad"
(II) UnloadModule: "synaptics"

It almost looks as if I have to hardcode the device too, because synaptics
certainly ignores my options.

Any ideas?

[-- Attachment #2 --]
# File generated by xorgconfig.

#
# Copyright 2004 The X.Org Foundation
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# The X.Org Foundation BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# 
# Except as contained in this notice, the name of The X.Org Foundation shall
# not be used in advertising or otherwise to promote the sale, use or other
# dealings in this Software without prior written authorization from
# The X.Org Foundation.
#

# **********************************************************************
# Refer to the xorg.conf(5) man page for details about the format of 
# this file.
# **********************************************************************

# **********************************************************************
# Module section -- this  section  is used to specify
# which dynamically loadable modules to load.
# **********************************************************************
#
Section "Module"

# This loads the DBE extension module.

    Load        "dbe"  	# Double buffer extension

# This loads the miscellaneous extensions module, and disables
# initialisation of the XFree86-DGA extension within that module.
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection

# This loads the font modules
#    Load        "type1"
    Load        "freetype"
#    Load        "xtt"

# This loads the GLX module
#    Load       "glx"
# This loads the DRI module
#    Load       "dri"

EndSection

# **********************************************************************
# Files section.  This allows default font and rgb paths to be set
# **********************************************************************

Section "Files"

# The location of the RGB database.  Note, this is the name of the
# file minus the extension (like ".txt" or ".db").  There is normally
# no need to change the default.

#    RgbPath	"/usr/local/share/X11/rgb"

# Multiple FontPath entries are allowed (which are concatenated together),
# as well as specifying multiple comma-separated entries in one FontPath
# command (or a combination of both methods)
# 
# 

    FontPath   "/usr/local/lib/X11/fonts/misc/"
    FontPath   "/usr/local/lib/X11/fonts/TTF/"
    FontPath   "/usr/local/lib/X11/fonts/OTF"
#    FontPath   "/usr/local/lib/X11/fonts/Type1/"
    FontPath   "/usr/local/lib/X11/fonts/100dpi/"
    FontPath   "/usr/local/lib/X11/fonts/75dpi/"
    FontPath   "/usr/local/lib/X11/fonts/local/"
#    FontPath   "/usr/local/lib/X11/fonts/Speedo/"
#    FontPath   "/usr/local/lib/X11/fonts/TrueType/"
#    FontPath   "/usr/local/lib/X11/fonts/freefont/"

# The module search path.  The default path is shown here.

#    ModulePath "/usr/local/lib/modules"

EndSection

# **********************************************************************
# Server flags section.
# **********************************************************************

Section "ServerFlags"

# Uncomment this to cause a core dump at the spot where a signal is 
# received.  This may leave the console in an unusable state, but may
# provide a better stack trace in the core dump to aid in debugging

#    Option "NoTrapSignals"

# Uncomment this to disable the <Ctrl><Alt><Fn> VT switch sequence
# (where n is 1 through 12).  This allows clients to receive these key
# events.

#    Option "DontVTSwitch"

# Uncomment this to disable the <Ctrl><Alt><BS> server abort sequence
# This allows clients to receive this key event.

#    Option "DontZap"

# Uncomment this to disable the <Ctrl><Alt><KP_+>/<KP_-> mode switching
# sequences.  This allows clients to receive these key events.

#    Option "Dont Zoom"

# Uncomment this to disable tuning with the xvidtune client. With
# it the client can still run and fetch card and monitor attributes,
# but it will not be allowed to change them. If it tries it will
# receive a protocol error.

#    Option "DisableVidModeExtension"

# Uncomment this to enable the use of a non-local xvidtune client. 

#    Option "AllowNonLocalXvidtune"

# Uncomment this to disable dynamically modifying the input device
# (mouse and keyboard) settings. 

#    Option "DisableModInDev"

# Uncomment this to enable the use of a non-local client to
# change the keyboard or mouse settings (currently only xset).

#    Option "AllowNonLocalModInDev"

EndSection

# **********************************************************************
# Input devices
# **********************************************************************

# **********************************************************************
# Core keyboard's InputDevice section
# **********************************************************************

Section "InputDevice"

    Identifier	"Keyboard1"
    Driver	"kbd"

    Option "AutoRepeat" "500 30"

# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
#    Option	"Xleds"      "1 2 3"

#    Option "LeftAlt"     "Meta"
#    Option "RightAlt"    "ModeShift"

# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults).  For example, for a non-U.S.
# keyboard, you will probably want to use:
#    Option "XkbModel"    "pc105"
# If you have a US Microsoft Natural keyboard, you can use:
#    Option "XkbModel"    "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
#    Option "XkbLayout"   "de"
# or:
#    Option "XkbLayout"   "de"
#    Option "XkbVariant"  "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
#    Option "XkbOptions"  "ctrl:swapcaps"

# These are the default XKB settings for Xorg
#    Option "XkbRules"    "xorg"
#    Option "XkbModel"    "pc105"
#    Option "XkbLayout"   "us"
#    Option "XkbVariant"  ""
#    Option "XkbOptions"  ""

#    Option "XkbDisable"

    Option "XkbRules"	"xorg"
    Option "XkbModel"	"pc105"
    Option "XkbLayout"	"us"
    Option "XkbOptions"	"compose:caps"

EndSection


# **********************************************************************
# Core Pointer's InputDevice section
# **********************************************************************

# Dummy device
Section "InputDevice"
    Identifier	"dummy"
    Driver "void"
EndSection

# Real Synaptics Driver
Section "InputDevice"

    Identifier	"Synaptics_Touchpad"
    Driver	"synaptics"
    
    Option	"Device"	"/dev/psm0"
    Option	"Protocol"	"psm"
    
EndSection

# **********************************************************************
# Other input device sections 
# this is optional and is required only if you
# are using extended input devices.  This is for example only.  Refer
# to the xorg.conf man page for a description of the options.
# **********************************************************************
#
# Section "InputDevice" 
#    Identifier  "Mouse2"
#    Driver      "mouse"
#    Option      "Protocol"      "MouseMan"
#    Option      "Device"        "/dev/mouse2"
# EndSection
#
# Section "InputDevice"
#    Identifier "spaceball"
#    Driver     "magellan"
#    Option     "Device"        "/dev/cua0"
# EndSection
#
# Section "InputDevice"
#    Identifier "spaceball2"
#    Driver     "spaceorb"
#    Option     "Device"        "/dev/cua0"
# EndSection
#
# Section "InputDevice"
#    Identifier "touchscreen0"
#    Driver     "microtouch"
#    Option     "Device"        "/dev/ttyS0"
#    Option     "MinX"          "1412"
#    Option     "MaxX"          "15184"
#    Option     "MinY"          "15372"
#    Option     "MaxY"          "1230"
#    Option     "ScreenNumber"  "0"
#    Option     "ReportingMode" "Scaled"
#    Option     "ButtonNumber"  "1"
#    Option     "SendCoreEvents"
# EndSection
#
# Section "InputDevice"
#    Identifier "touchscreen1"
#    Driver     "elo2300"
#    Option     "Device"        "/dev/ttyS0"
#    Option     "MinX"          "231"
#    Option     "MaxX"          "3868"
#    Option     "MinY"          "3858"
#    Option     "MaxY"          "272"
#    Option     "ScreenNumber"  "0"
#    Option     "ReportingMode" "Scaled"
#    Option     "ButtonThreshold"       "17"
#    Option     "ButtonNumber"  "1"
#    Option     "SendCoreEvents"
# EndSection

# **********************************************************************
# Monitor section
# **********************************************************************

# Any number of monitor sections may be present

Section "Monitor"

    Identifier  "LCD"

# HorizSync is in kHz unless units are specified.
# HorizSync may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY.  REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.

    HorizSync   31.5 - 82.0

#    HorizSync	30-64         # multisync
#    HorizSync	31.5, 35.2    # multiple fixed sync frequencies
#    HorizSync	15-25, 30-50  # multiple ranges of sync frequencies

# VertRefresh is in Hz unless units are specified.
# VertRefresh may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY.  REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.

    VertRefresh 50-90

EndSection


# **********************************************************************
# Graphics device section
# **********************************************************************

# Any number of graphics device sections may be present

# Standard VGA Device:

Section "Device"
    Identifier	"Standard VGA"
    VendorName	"Unknown"
    BoardName	"Unknown"

# The chipset line is optional in most cases.  It can be used to override
# the driver's chipset detection, and should not normally be specified.

#    Chipset	"generic"

# The Driver line must be present.  When using run-time loadable driver
# modules, this line instructs the server to load the specified driver
# module.  Even when not using loadable driver modules, this line
# indicates which driver should interpret the information in this section.

    Driver     "vga"
# The BusID line is used to specify which of possibly multiple devices
# this section is intended for.  When this line isn't present, a device
# section can only match up with the primary video device.  For PCI
# devices a line like the following could be used.  This line should not
# normally be included unless there is more than one video device
# intalled.

#    BusID      "PCI:0:10:0"

#    VideoRam	256

#    Clocks	25.2 28.3

EndSection

# Device configured by xorgconfig:

Section "Device"
    Identifier  "ATI Radeon HD2400"
    Driver      "radeonhd"
    #VideoRam    131072
    # Insert Clocks lines here if appropriate
EndSection


# **********************************************************************
# Screen sections
# **********************************************************************

# Any number of screen sections may be present.  Each describes
# the configuration of a single screen.  A single specific screen section
# may be specified from the X server command line with the "-screen"
# option.
Section "Screen"
    Identifier  "Screen 1"
    Device      "ATI Radeon HD2400"
    Monitor     "LCD"
    DefaultDepth 24

    Subsection "Display"
        Depth       8
        Modes       "1280x1024" "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "1280x1024" "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "1152x864"
        ViewPort    0 0
    EndSubsection
EndSection

# **********************************************************************
# ServerLayout sections.
# **********************************************************************

# Any number of ServerLayout sections may be present.  Each describes
# the way multiple screens are organised.  A specific ServerLayout
# section may be specified from the X server command line with the
# "-layout" option.  In the absence of this, the first section is used.
# When now ServerLayout section is present, the first Screen section
# is used alone.

Section "ServerLayout"

# The Identifier line must be present
    Identifier  "Simple Layout"

# Each Screen line specifies a Screen section name, and optionally
# the relative position of other screens.  The four names after
# primary screen name are the screens to the top, bottom, left and right
# of the primary screen.  In this example, screen 2 is located to the
# right of screen 1.

    Screen "Screen 1"

# Each InputDevice line specifies an InputDevice section name and
# optionally some options to specify the way the device is to be
# used.  Those options include "CorePointer", "CoreKeyboard" and
# "SendCoreEvents".

    InputDevice "dummy" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice	"Synaptics_Touchpad"	"SendCoreEvents"

EndSection

# Section "DRI"
#    Mode 0666
# EndSection


[-- Attachment #3 --]
--- synaptics.c.orig	2008-01-23 13:10:17.000000000 +0200
+++ synaptics.c	2008-01-23 13:11:33.000000000 +0200
@@ -188,9 +188,8 @@
 	proto = SYN_PROTO_PSM;
     } else if (str_par && !strcmp(str_par, "alps")) {
 	proto = SYN_PROTO_ALPS;
-    } else { /* default to auto-dev */
-	if (event_proto_operations.AutoDevProbe(local))
-	    proto = SYN_PROTO_EVENT;
+    } else { /* default to psm */
+	proto = SYN_PROTO_PSM;
     }
     switch (proto) {
     case SYN_PROTO_PSAUX:

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41549.193.226.5.33.1201087601.squirrel>