Problems with an Elantech Touchpad

Hello,

I have an Elantech Touchpad and it doesn't work at all on FreeBSD.

First of all, I did read https://forums.freebsd.org/threads/mouse-keyboard-in-x-read-before-you-ask-questions.4614/ but it seems quite outdated: I don't see the hald service anywhere and I don't plan to use gnome.

Here's my /boot/loader.conf:
Code:
kern.geom.label.disk_ident.enable="1"
geom_label_load="YES"
kern.geom.label.gptid.enable="0"
cryptodev_load="YES"
zfs_load="YES"
linux64_load="YES"
nvidia_load="YES"

hw.usb.usbhid.enable="1"
hw.psm.elantech_support="1"
hw.psm.synaptics_support="

/usr/local/etc/X11/xorg.conf.d/mouse.conf:
Code:
#Section "InputDevice"
#    Identifier "Mouse0"
#    Driver "mouse"
#    Option "Protocol" "auto"
#    Option "Device" "/dev/sysmouse"
#EndSection

Section "InputDevice"
    Identifier "Touchpad0"
    Driver "evedv"
EndSection

Section "InputClass"
    Identifier "libinput touchpad catchall"
    Driver "libinput"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "DisableWhileTyping" "off"
    Option "Tapping" "on"
    #Option "Device" "/dev/input/event"
    #
    #Identifier "libinput pointer catchall"
    #Driver "libinput"
    #MatchDevicePath "/dev/input/event*"
    #
    #Identifier "Mouse0"
    #Driver "mouse"
    #Option "Protocol" "auto"
    #Option "Device" "/dev/sysmouse"
    #Option "TapButton2" "2"
    #Option "TapButton3" "3"
EndSection
(as you see, I tried different drivers).

/etc/rc.conf:
Code:
hostname="hyperbook"
keymap="pl.kbd"
ifconfig_ue0="DHCP"
ifconfig_ue0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"
ntpdate_enable="YES"
ntpd_enable="YES"
powerd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"
zerotier_enable="YES"

syncthing_enable="YES"

#hald_enable="YES"
#dbus_enable="YES"
kld_list="usbhid"

Here's output of xinput --list:
Code:
❯ cat xinput--list.txt
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ System mouse                                id=6    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                    id=11    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ System keyboard multiplexer                 id=7    [slave  keyboard (3)]
    ↳ Power Button                                id=8    [slave  keyboard (3)]
    ↳ Sleep Button                                id=9    [slave  keyboard (3)]
    ↳ AT keyboard                                 id=10    [slave  keyboard (3)]
and the output of xinput list-props 11 as apparently dev id 11 is assigned to the touchpad:
Code:
Device 'ETPS/2 Elantech Touchpad':
    Device Enabled (115):    1
    Coordinate Transformation Matrix (116):    1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Tapping Enabled (274):    1
    libinput Tapping Enabled Default (275):    0
    libinput Tapping Drag Enabled (276):    1
    libinput Tapping Drag Enabled Default (277):    1
    libinput Tapping Drag Lock Enabled (278):    0
    libinput Tapping Drag Lock Enabled Default (279):    0
    libinput Tapping Button Mapping Enabled (280):    1, 0
    libinput Tapping Button Mapping Default (281):    1, 0
    libinput Natural Scrolling Enabled (238):    0
    libinput Natural Scrolling Enabled Default (239):    0
    libinput Disable While Typing Enabled (282):    0
    libinput Disable While Typing Enabled Default (283):    1
    libinput Scroll Methods Available (240):    1, 1, 0
    libinput Scroll Method Enabled (241):    1, 0, 0
    libinput Scroll Method Enabled Default (242):    1, 0, 0
    libinput Click Methods Available (284):    1, 1
    libinput Click Method Enabled (285):    1, 0
    libinput Click Method Enabled Default (286):    1, 0
    libinput Middle Emulation Enabled (247):    0
    libinput Middle Emulation Enabled Default (248):    0
    libinput Accel Speed (249):    0.000000
    libinput Accel Speed Default (250):    0.000000
    libinput Accel Profiles Available (251):    1, 1
    libinput Accel Profile Enabled (252):    1, 0
    libinput Accel Profile Enabled Default (253):    1, 0
    libinput Left Handed Enabled (254):    0
    libinput Left Handed Enabled Default (255):    0
    libinput Send Events Modes Available (256):    1, 1
    libinput Send Events Mode Enabled (257):    0, 0
    libinput Send Events Mode Enabled Default (258):    0, 0
    Device Node (259):    "/dev/input/event6"
    Device Product ID (260):    2, 14
    libinput Drag Lock Buttons (261):    <no items>
    libinput Horizontal Scroll Enabled (262):    1
    libinput Scrolling Pixel Distance (263):    15
    libinput Scrolling Pixel Distance Default (264):    15

Also, I can't see any error in the /var/logXorg.0.log file:
Code:
[   221.793]
X.Org X Server 1.20.14
X Protocol Version 11, Revision 0
[   221.793] Build Operating System: FreeBSD 13.1-RELEASE-p2 amd64
[   221.793] Current Operating System: FreeBSD hyperbook 13.1-RELEASE FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC amd64
[   221.793] Build Date: 04 September 2022  10:47:59AM
[   221.793]
[   221.793] Current version of pixman: 0.40.0
[   221.793]     Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
[   221.793] Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[   221.793] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Sep 20 07:46:22 2022
[   221.797] (==) Using config directory: "/usr/local/etc/X11/xorg.conf.d"
[   221.797] (==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
[   221.799] (==) No Layout section.  Using the first Screen section.
[   221.799] (==) No screen section available. Using defaults.
[   221.799] (**) |-->Screen "Default Screen Section" (0)
[   221.799] (**) |   |-->Monitor "<default monitor>"
[   221.800] (==) No device specified for screen "Default Screen Section".
    Using the first device section listed.
[   221.800] (**) |   |-->Device "Card0"
[   221.800] (==) No monitor specified for screen "Default Screen Section".
    Using a default monitor configuration.
[   221.800] (==) Automatically adding devices
[   221.800] (==) Automatically enabling devices
[   221.800] (==) Not automatically adding GPU devices
[   221.803] (==) Max clients allowed: 256, resource mask: 0x1fffff
[   221.816] (==) FontPath set to:
    /usr/local/share/fonts/misc/,
    /usr/local/share/fonts/TTF/,
    /usr/local/share/fonts/OTF/,
    /usr/local/share/fonts/Type1/,
    /usr/local/share/fonts/100dpi/,
    /usr/local/share/fonts/75dpi/,
    catalogue:/usr/local/etc/X11/fontpath.d
[   221.816] (==) ModulePath set to "/usr/local/lib/xorg/modules"
[   221.816] (II) The server relies on udev to provide the list of input devices.
    If no devices become available, reconfigure udev or disable AutoAddDevices.
[   221.816] (II) Loader magic: 0x433270
[   221.816] (II) Module ABI versions:
[   221.816]     X.Org ANSI C Emulation: 0.4
[   221.816]     X.Org Video Driver: 24.1
[   221.816]     X.Org XInput driver : 24.1
[   221.816]     X.Org Server Extension : 10.0
[   221.816] (--) PCI:*(4@0:0:0) 1002:1636:1558:a500 rev 194, Mem @ 0xfce0000000/268435456, 0xfcf0000000/2097152, 0xd0400000/524288, I/O @ 0x00001000/256, BIOS @ 0x????????/65536
[   221.816] (II) LoadModule: "glx"
[   221.820] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so
[   221.849] (II) Module glx: vendor="X.Org Foundation"
[   221.849]     compiled for 1.20.14, module version = 1.0.0
[   221.849]     ABI class: X.Org Server Extension, version 10.0
[   221.849] (II) LoadModule: "scfb"
[   221.850] (II) Loading /usr/local/lib/xorg/modules/drivers/scfb_drv.so
[   221.850] (II) Module scfb: vendor="X.Org Foundation"
[   221.850]     compiled for 1.20.14, module version = 0.0.5
[   221.851]     ABI class: X.Org Video Driver, version 24.1
[   221.851] (II) scfb: driver for wsdisplay framebuffer: scfb
[   221.851] (--) Using syscons driver with X support (version 2.0)
[   221.851] (--) using VT number 9

[   221.851] (WW) Falling back to old probe method for scfb
[   221.851] scfb trace: probe start
[   221.851] (II) scfb(0): using default device
[   221.851] scfb trace: probe done
[   221.851] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[   221.851] scfb: PreInit 0
[   221.851] (II) scfb(0): Using: depth (32),    width (1920),    height (1080)
[   221.851] (II) scfb(0): Creating default Display subsection in Screen section
    "Default Screen Section" for depth/fbbpp 24/32
[   221.851] (==) scfb(0): Depth 24, (==) framebuffer bpp 32
[   221.851] (==) scfb(0): RGB weight 888
[   221.852] (==) scfb(0): Default visual is TrueColor
[   221.852] (==) scfb(0): Using gamma correction (1.0, 1.0, 1.0)
[   221.852] (II) scfb(0): Vidmem: 8100k
[   221.852] (==) scfb(0): DPI set to (96, 96)
[   221.852] (**) scfb(0): Using "Shadow Framebuffer"
[   221.852] (II) Loading sub module "shadow"
[   221.852] (II) LoadModule: "shadow"
[   221.852] (II) Loading /usr/local/lib/xorg/modules/libshadow.so
[   221.853] (II) Module shadow: vendor="X.Org Foundation"
[   221.853]     compiled for 1.20.14, module version = 1.1.0
[   221.853]     ABI class: X.Org ANSI C Emulation, version 0.4
[   221.853] (II) Loading sub module "fb"
[   221.853] (II) LoadModule: "fb"
[   221.853] (II) Loading /usr/local/lib/xorg/modules/libfb.so
[   221.856] (II) Module fb: vendor="X.Org Foundation"
[   221.856]     compiled for 1.20.14, module version = 1.0.0
[   221.856]     ABI class: X.Org ANSI C Emulation, version 0.4
[   221.856] scfb: PreInit done
[   221.856] scfb: ScfbScreenInit 0
[   221.856]     bitsPerPixel=32, depth=24, defaultVisual=TrueColor
    mask: ff0000,ff00,ff, offset: 16,8,0
[   221.857] mmap returns: addr 0x801c00000 len 0x7e9000, fd 11, off 0
[   221.857] scfb: ScfbSave 0
[   221.857] scfb: ScfbSave done
[   221.870] (==) scfb(0): Backing store enabled
[   221.870] scfb: ScfbScreenInit done
[   221.870] (II) Initializing extension Generic Event Extension
[   221.874] (II) Initializing extension SHAPE
[   221.875] (II) Initializing extension MIT-SHM
[   221.875] (II) Initializing extension XInputExtension
[   221.879] (II) Initializing extension XTEST
[   221.880] (II) Initializing extension BIG-REQUESTS
[   221.880] (II) Initializing extension SYNC
[   221.880] (II) Initializing extension XKEYBOARD
[   221.881] (II) Initializing extension XC-MISC
[   221.881] (II) Initializing extension SECURITY
[   221.882] (II) Initializing extension XFIXES
[   221.882] (II) Initializing extension RENDER
[   221.882] (II) Initializing extension RANDR
[   221.883] (II) Initializing extension COMPOSITE
[   221.883] (II) Initializing extension DAMAGE
[   221.884] (II) Initializing extension MIT-SCREEN-SAVER
[   221.884] (II) Initializing extension DOUBLE-BUFFER
[   221.885] (II) Initializing extension RECORD
[   221.885] (II) Initializing extension DPMS
[   221.885] (II) Initializing extension Present
[   221.885] (II) Initializing extension DRI3
[   221.885] (II) Initializing extension X-Resource
[   221.886] (II) Initializing extension XVideo
[   221.886] (II) Initializing extension XVideo-MotionCompensation
[   221.886] (II) Initializing extension GLX
[   221.887] (II) AIGLX: Screen 0 is not DRI2 capable
[   223.211] (II) IGLX: Loaded and initialized swrast
[   223.211] (II) GLX: Initialized DRISWRAST GL provider for screen 0
[   223.211] (II) Initializing extension XFree86-VidModeExtension
[   223.212] (II) Initializing extension XFree86-DGA
[   223.212] (II) Initializing extension XFree86-DRI
[   223.212] (II) Initializing extension DRI2
[   223.406] (II) config/udev: Adding input device System mouse (/dev/input/event0)
[   223.406] (**) System mouse: Applying InputClass "libinput pointer catchall"
[   223.406] (II) LoadModule: "libinput"
[   223.406] (II) Loading /usr/local/lib/xorg/modules/input/libinput_drv.so
[   223.474] (II) Module libinput: vendor="X.Org Foundation"
[   223.475]     compiled for 1.20.14, module version = 1.2.0
[   223.475]     Module class: X.Org XInput Driver
[   223.475]     ABI class: X.Org XInput driver, version 24.1
[   223.475] (II) Using input driver 'libinput' for 'System mouse'
[   223.475] (**) System mouse: always reports core events
[   223.475] (**) Option "Device" "/dev/input/event0"
[   223.478] (**) Option "_source" "server/udev"
[   223.506] (II) event0  - System mouse: is tagged by udev as: Mouse
[   223.508] (II) event0  - System mouse: device is a pointer
[   223.509] (II) event0  - System mouse: device removed
[   223.509] (**) Option "config_info" "udev:/dev/input/event0"
[   223.509] (II) XINPUT: Adding extended input device "System mouse" (type: MOUSE, id 6)
[   223.509] (**) Option "AccelerationScheme" "none"
[   223.509] (**) System mouse: (accel) selected scheme none/0
[   223.509] (**) System mouse: (accel) acceleration factor: 2.000
[   223.509] (**) System mouse: (accel) acceleration threshold: 4
[   223.511] (II) event0  - System mouse: is tagged by udev as: Mouse
[   223.512] (II) event0  - System mouse: device is a pointer
[   223.514] (II) config/udev: Adding input device System keyboard multiplexer (/dev/input/event1)
[   223.514] (**) System keyboard multiplexer: Applying InputClass "Evdev keyboard"
[   223.514] (**) System keyboard multiplexer: Applying InputClass "libinput keyboard catchall"
[   223.514] (II) Using input driver 'libinput' for 'System keyboard multiplexer'
[   223.514] (**) System keyboard multiplexer: always reports core events
[   223.514] (**) Option "Device" "/dev/input/event1"
[   223.514] (**) Option "_source" "server/udev"
[   223.516] (II) event1  - System keyboard multiplexer: is tagged by udev as: Keyboard
[   223.516] (II) event1  - System keyboard multiplexer: device is a keyboard
[   223.518] (II) event1  - System keyboard multiplexer: device removed
[   223.518] (**) Option "config_info" "udev:/dev/input/event1"
[   223.518] (II) XINPUT: Adding extended input device "System keyboard multiplexer" (type: KEYBOARD, id 7)
[   223.518] (**) Option "xkb_rules" "evdev"
[   223.579] (II) event1  - System keyboard multiplexer: is tagged by udev as: Keyboard
[   223.580] (II) event1  - System keyboard multiplexer: device is a keyboard
[   223.582] (II) config/udev: Adding input device Power Button (/dev/input/event2)
[   223.582] (**) Power Button: Applying InputClass "Evdev keyboard"
[   223.582] (**) Power Button: Applying InputClass "libinput keyboard catchall"
[   223.582] (II) Using input driver 'libinput' for 'Power Button'
[   223.582] (**) Power Button: always reports core events
[   223.582] (**) Option "Device" "/dev/input/event2"
[   223.582] (**) Option "_source" "server/udev"
[   223.584] (II) event2  - Power Button: is tagged by udev as: Keyboard
[   223.584] (II) event2  - Power Button: device is a keyboard
[   223.585] (II) event2  - Power Button: device removed
[   223.585] (**) Option "config_info" "udev:/dev/input/event2"
[   223.586] (II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD, id 8)
[   223.586] (**) Option "xkb_rules" "evdev"
[   223.588] (II) event2  - Power Button: is tagged by udev as: Keyboard
[   223.588] (II) event2  - Power Button: device is a keyboard
[   223.589] (II) config/udev: Adding input device Sleep Button (/dev/input/event3)
[   223.589] (**) Sleep Button: Applying InputClass "Evdev keyboard"
[   223.589] (**) Sleep Button: Applying InputClass "libinput keyboard catchall"
[   223.589] (II) Using input driver 'libinput' for 'Sleep Button'
[   223.590] (**) Sleep Button: always reports core events
[   223.590] (**) Option "Device" "/dev/input/event3"
[   223.590] (**) Option "_source" "server/udev"
[   223.591] (II) event3  - Sleep Button: is tagged by udev as: Keyboard
[   223.592] (II) event3  - Sleep Button: device is a keyboard
[   223.593] (II) event3  - Sleep Button: device removed
[   223.593] (**) Option "config_info" "udev:/dev/input/event3"
[   223.593] (II) XINPUT: Adding extended input device "Sleep Button" (type: KEYBOARD, id 9)
[   223.593] (**) Option "xkb_rules" "evdev"
[   223.595] (II) event3  - Sleep Button: is tagged by udev as: Keyboard
[   223.596] (II) event3  - Sleep Button: device is a keyboard
[   223.597] (II) config/udev: Adding input device Control Method Lid Switch (/dev/input/event4)
[   223.597] (II) No input driver specified, ignoring this device.
[   223.597] (II) This device may have been added with another device file.
[   223.597] (II) config/udev: Adding input device AT keyboard (/dev/input/event5)
[   223.597] (**) AT keyboard: Applying InputClass "Evdev keyboard"
[   223.597] (**) AT keyboard: Applying InputClass "libinput keyboard catchall"
[   223.597] (II) Using input driver 'libinput' for 'AT keyboard'
[   223.597] (**) AT keyboard: always reports core events
[   223.597] (**) Option "Device" "/dev/input/event5"
[   223.597] (**) Option "_source" "server/udev"
[   223.599] (II) event5  - AT keyboard: is tagged by udev as: Keyboard
[   223.600] (II) event5  - AT keyboard: device is a keyboard
[   223.604] (II) event5  - AT keyboard: device removed
[   223.604] (**) Option "config_info" "udev:/dev/input/event5"
[   223.604] (II) XINPUT: Adding extended input device "AT keyboard" (type: KEYBOARD, id 10)
[   223.604] (**) Option "xkb_rules" "evdev"
[   223.606] (II) event5  - AT keyboard: is tagged by udev as: Keyboard
[   223.607] (II) event5  - AT keyboard: device is a keyboard
[   223.611] (II) config/udev: Adding input device ETPS/2 Elantech Touchpad (/dev/input/event6)
[   223.611] (**) ETPS/2 Elantech Touchpad: Applying InputClass "libinput pointer catchall"
[   223.611] (**) ETPS/2 Elantech Touchpad: Applying InputClass "libinput touchpad catchall"
[   223.611] (**) ETPS/2 Elantech Touchpad: Applying InputClass "touchpad catchall"
[   223.611] (**) ETPS/2 Elantech Touchpad: Applying InputClass "Default clickpad buttons"
[   223.611] (**) ETPS/2 Elantech Touchpad: Applying InputClass "libinput touchpad catchall"
[   223.611] (II) Using input driver 'libinput' for 'ETPS/2 Elantech Touchpad'
[   223.611] (**) ETPS/2 Elantech Touchpad: always reports core events
[   223.611] (**) Option "Device" "/dev/input/event6"
[   223.611] (**) Option "_source" "server/udev"
[   223.629] (II) event6  - ETPS/2 Elantech Touchpad: is tagged by udev as: Mouse Touchpad
[   223.641] (II) event6  - ETPS/2 Elantech Touchpad: device is a touchpad
[   223.641] (II) event6  - ETPS/2 Elantech Touchpad: device removed
[   223.679] (**) Option "Tapping" "on"
[   223.681] (**) Option "DisableWhileTyping" "off"
[   223.681] (**) Option "config_info" "udev:/dev/input/event6"
[   223.681] (II) XINPUT: Adding extended input device "ETPS/2 Elantech Touchpad" (type: TOUCHPAD, id 11)
[   223.690] (**) Option "AccelerationScheme" "none"
[   223.690] (**) ETPS/2 Elantech Touchpad: (accel) selected scheme none/0
[   223.690] (**) ETPS/2 Elantech Touchpad: (accel) acceleration factor: 2.000
[   223.690] (**) ETPS/2 Elantech Touchpad: (accel) acceleration threshold: 4
[   223.712] (II) event6  - ETPS/2 Elantech Touchpad: is tagged by udev as: Mouse Touchpad
[   223.723] (II) event6  - ETPS/2 Elantech Touchpad: device is a touchpad
[   223.726] scfb: SaveScreen 0
[   223.726] scfb: SaveScreen done

I don't have any other files in /usr/local/etx/X11/xorg.conf.d except one with
Code:
Driver "scfb"
for a graphics card.

Any help appreciated.

EDIT: Here's some links of things that I tried:
 
Not related to your issue but:
Code:
linux64_load="YES"
Remove it. And add linux_enable="YES" in rc.conf instead. Or not load it at all if you don't plan on using Linux binaries (no, the NVidia driver doesn't need it to function).

Code:
nvidia_load="YES"
Why are you loading the NVidia driver but have X configured for scfb(4)? Either way, remove it. If you want to load the NVidia driver use kld_list="nvidia-modeset" in rc.conf and use Driver "nvidia" instead of Driver "scfb".

Code:
#dbus_enable="YES"
You really want to enable this. There are many applications that depend on a working DBus.

Code:
ntpdate_enable="YES"
Deprecated. Use ntpd_sync_on_start="YES" instead.
 
OK thanks for that. Yes the `linux64` stuff was for nvidia. I wanted to focus on nvidia next, but then it turned out the touchpad doesn't work so I started to dig this first :)

Code:
ntpdate_enable="YES"

Funny, this was added by 13.1 install, I didn't change it.
 
Lucky You - I don't get that far - mine insists on being a mouse:
Code:
[  1262.904] (II) config/udev: Adding input device ELAN0D07:00 04F3:3078 Mouse (/dev/input/event5)
[  1262.904] (**) ELAN0D07:00 04F3:3078 Mouse: Applying InputClass "libinput pointer catchall"
[  1262.904] (II) Using input driver 'libinput' for 'ELAN0D07:00 04F3:3078 Mouse'
[  1262.904] (**) ELAN0D07:00 04F3:3078 Mouse: always reports core event
[  1262.904] (**) Option "Device" "/dev/input/event5"
[  1262.904] (**) Option "_source" "server/udev"
[  1262.909] (II) event5  - ELAN0D07:00 04F3:3078 Mouse: is tagged by udev as: Mouse
[  1262.914] (II) event5  - ELAN0D07:00 04F3:3078 Mouse: device is a pointer
 
Yes, indeed. But it doesn't help anyways :)
you ever get any movement on this? i've read pretty much everything you've listed here and maybe more and still get no two finger actions. touchpad works and seems to have tap-to-click set no matter what options i set but any multi-finger actions do nothing. xev doesn't even register the events.
i'm a long time linux guy looking to make the switch to bsd. really hate something as simple as scrolling being a show stopper
 
Back
Top