Solved Synaptics driver not loading (Elantech touchpad)

Hello!

I have been desperately trying to get two-finger scrolling working on my fresh FreeBSD installation.

Synaptics did the job for me back on GNU/Linux, so I went straight for synaptics on FreeBSD, except it does not seem to load no matter what I do and all the documentation I find on it appears to be outdated.

I have hw.psm.synaptics_support="1" in my /boot/loader.conf, but when I try to list all the options for synaptics with sysctl -a | grep psm all I get is this:

Code:
device    psm
debug.psm.pkterrthresh: 2
debug.psm.usecs: 500000
debug.psm.secs: 0
debug.psm.errusecs: 0
debug.psm.errsecs: 2
debug.psm.hz: 20
debug.psm.loglevel: 0
hw.psm.tap_timeout: 125000
hw.psm.tap_threshold: 25
hw.psm.tap_enabled: -1
dev.psm.0.%parent: atkbdc0
dev.psm.0.%pnpinfo: 
dev.psm.0.%location: 
dev.psm.0.%driver: psm
dev.psm.0.%desc: PS/2 Mouse
dev.psm.%parent: 
dev.psmcpnp.0.%parent: acpi0
dev.psmcpnp.0.%pnpinfo: _HID=ETD0500 _UID=0
dev.psmcpnp.0.%location: handle=\_SB_.PCI0.LPCB.MSE0
dev.psmcpnp.0.%driver: psmcpnp
dev.psmcpnp.0.%desc: PS/2 mouse port
dev.psmcpnp.%parent:

I have MouseD enabled in /etc/rc.conf. I tried disabling it, but that resulted in my pointer going haywire.

Here is my pciconf -lv:
Code:
─➤  pciconf -lv
hostb0@pci0:0:0:0:    class=0x060000 card=0x06471025 chip=0x01548086 rev=0x09 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '3rd Gen Core processor DRAM Controller'
    class      = bridge
    subclass   = HOST-PCI
vgapci0@pci0:0:2:0:    class=0x030000 card=0x06471025 chip=0x01668086 rev=0x09 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '3rd Gen Core processor Graphics Controller'
    class      = display
    subclass   = VGA
xhci0@pci0:0:20:0:    class=0x0c0330 card=0x06471025 chip=0x1e318086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C210 Series Chipset Family USB xHCI Host Controller'
    class      = serial bus
    subclass   = USB
none0@pci0:0:22:0:    class=0x078000 card=0x06471025 chip=0x1e3a8086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C216 Chipset Family MEI Controller'
    class      = simple comms
ehci0@pci0:0:26:0:    class=0x0c0320 card=0x06471025 chip=0x1e2d8086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C216 Chipset Family USB Enhanced Host Controller'
    class      = serial bus
    subclass   = USB
hdac0@pci0:0:27:0:    class=0x040300 card=0x06471025 chip=0x1e208086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C216 Chipset Family High Definition Audio Controller'
    class      = multimedia
    subclass   = HDA
pcib1@pci0:0:28:0:    class=0x060400 card=0x06471025 chip=0x1e108086 rev=0xc4 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '7 Series/C216 Chipset Family PCI Express Root Port 1'
    class      = bridge
    subclass   = PCI-PCI
pcib2@pci0:0:28:1:    class=0x060400 card=0x06471025 chip=0x1e128086 rev=0xc4 hdr=0x01
    vendor     = 'Intel Corporation'
    device     = '7 Series/C210 Series Chipset Family PCI Express Root Port 2'
    class      = bridge
    subclass   = PCI-PCI
ehci1@pci0:0:29:0:    class=0x0c0320 card=0x06471025 chip=0x1e268086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C216 Chipset Family USB Enhanced Host Controller'
    class      = serial bus
    subclass   = USB
isab0@pci0:0:31:0:    class=0x060100 card=0x06471025 chip=0x1e578086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'HM77 Express Chipset LPC Controller'
    class      = bridge
    subclass   = PCI-ISA
ahci0@pci0:0:31:2:    class=0x010601 card=0x06471025 chip=0x1e038086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series Chipset Family 6-port SATA Controller [AHCI mode]'
    class      = mass storage
    subclass   = SATA
none1@pci0:0:31:3:    class=0x0c0500 card=0x06471025 chip=0x1e228086 rev=0x04 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '7 Series/C216 Chipset Family SMBus Controller'
    class      = serial bus
    subclass   = SMBus
bge0@pci0:2:0:0:    class=0x020000 card=0x06471025 chip=0x16b514e4 rev=0x10 hdr=0x00
    vendor     = 'Broadcom Limited'
    device     = 'NetLink BCM57785 Gigabit Ethernet PCIe'
    class      = network
    subclass   = ethernet
sdhci_pci0@pci0:2:0:1:    class=0x080501 card=0x06471025 chip=0x16bc14e4 rev=0x10 hdr=0x00
    vendor     = 'Broadcom Limited'
    device     = 'BCM57765/57785 SDXC/MMC Card Reader'
    class      = base peripheral
    subclass   = SD host controller
none2@pci0:2:0:2:    class=0x088000 card=0x06471025 chip=0x16be14e4 rev=0x10 hdr=0x00
    vendor     = 'Broadcom Limited'
    device     = 'BCM57765/57785 MS Card Reader'
    class      = base peripheral
none3@pci0:2:0:3:    class=0x088000 card=0x06471025 chip=0x16bf14e4 rev=0x10 hdr=0x00
    vendor     = 'Broadcom Limited'
    device     = 'BCM57765/57785 xD-Picture Card Reader'
    class      = base peripheral
ath0@pci0:3:0:0:    class=0x028000 card=0x303f103c chip=0x002b168c rev=0x01 hdr=0x00
    vendor     = 'Qualcomm Atheros'
    device     = 'AR9285 Wireless Network Adapter (PCI-Express)'
    class      = network

Uname is:
Code:
FreeBSD 11.0-RELEASE-p2 FreeBSD 11.0-RELEASE-p2 #0: Mon Oct 24 06:55:27 UTC 2016     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

Not sure what else to provide.

Cheers.
 
aragats,

Thank you for replying!

However, your configuration lists synaptic tunables in /etc/sysctl.conf and I get unknown oid errors trying to set those.
It's like there synaptics doesn't exist on the machine even though it's installed.

I tried both the port and the binary package. Oh, and here is a snipped I used to use on my GNU/Linux machine. Didn't make a change.

70-synaptics.conf:
Code:
Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
        Option "VertTwoFingerScroll" "on"
        Option "CoastingSpeed" "0"
EndSection
 
I have
hw.psm.synaptics_support="1"
enabled, as mentioned in my original post.

I get oid errors on absolutely anything in regards to synaptics.
 
That is really strange, I'm using that configuration for 1.5 year.
Maybe your hardware is completely different? I'm on ThinkPad T430.
In this thread there is a reasonable question: "...if you have a Synaptics or Elantech or ALPS touchpad" and the corresponding discussion.
 
The hardware might be totally different, I am on an Acer Aspire V3-571.
I used Synaptics without a problem on my previous GNU/Linux installation, so I don't think it's ALPS.

But the thread you linked did give me some insight, looks like my touchpad gets recognized as a generic PS/2 mouse and uses the X11 "mouse" driver even though it used synaptics in GNU/Linux. OpenBSD recognized it as synaptics also.

/dev/psm0 does get created, but Xorg uses /dev/sysmouse instead.

I tried tricking X into using /dev/psm0 with a xorg.conf.d file, but without results, X just completely ignores my added InputClass and proceeds to loading the generic "mouse" driver.

EDIT:
I got it to attempt loading synaptics, but it gave me
Code:
Mouse0 Found no Synaptics, found Mouse model 0 instead
Looks like people from https://forums.freebsd.org/threads/50318/ are having the same exact issue.
Going to see if there isn't a way I can do scrolling with moused.
 
I solved the issue. Turns out I have an Elantech touchpad.

Support for it was added fully in -STABLE, so I switched over and added
Code:
hw.psm.synaptics_support="1"
to my /boot/loader.conf

Manually patching -RELEASE didn't go quite as well, sometimes psm wouldn't pick up Elantech, so -STABLE is recommended, unless support for Elantech reaches -RELEASE.

Two-finger scrolling support is somewhat poor and very noisy, so I switched to edge scrolling. The following works very well, leave the defaults for everything else:
Code:
hw.psm.elantech.min_pressure=22
hw.psm.elantech.two_finger_scroll=0
hw.psm.elantech.vscroll_ver_area=-600

If somebody can figure out good settings for two-finger scrolling, please tell me.

Cheers!
 
Last edited:
I realize this thread is six months old, but if the OP still hasn't figured it out, and for anyone who may get here looking for a solution, /boot/loader.conf should contain the following for elantech touchpads:
Code:
hw.psm.elantech_support="1"
This will enable two-finger scroll, tap to click, etc.
Also be sure that x11/libsynaptics and x11-drivers/xf86-input-synaptics are both installed
 
Last edited:
Hi all,
This is an update three years later ... :)
I have had problems trying to configure the touchpad, because I thought it was a Synaptic Touchpad, until I found this post ;)

laptop specs
Code:
root@freebsd:~ # inxi -Fx
System:    Host: freebsd Kernel: FreeBSD 12.1-RELEASE-p6 amd64 bits: 64 compiler: clang v: 8.0.1 Console: tty 1
           OS: FreeBSD 12.1-RELEASE-p6
Machine:   Type: Notebook System: TOSHIBA product: SATELLITE L50-C v: PSKXEE-01200NEN serial: 9F157840C
           Mobo: FF50 model: 06F5 serial: QC030RBF3700988 BIOS: INSYDE v: 5.10 rev: 5.10 date: 07/30/2015
Battery:   ID-1: BAT0 charge: N/A condition: N/A/0.0 Wh model: Intel SR 1 SR Real Battery status: N/A
CPU:       Topology: Quad Core model: Intel Pentium N3700 bits: 64 type: MCP arch: N/A L2 cache: N/A
           features: lm nx pae sse sse2 sse3 ssse3 vmx
           Speed: 1600 MHz min/max: 480/1601 MHz Core speeds (MHz): No speed data found for 4 cores.
Graphics:  Device-1: Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics driver: vgapci
           bus ID: 0:0:2.0
           Display: server: X.Org 1.20.8 driver: intel resolution: 1366x768~60Hz
           Message: Unable to show advanced data. Required tool glxinfo missing.
Audio:     Device-1: Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio driver: hdac
           bus ID: 0:0:27.0
Network:   Device-1: Intel Wireless 3160 driver: iwm bus ID: 0:1:0.0
           Device-2: Realtek RTL810xE PCI Express Fast Ethernet driver: re port: N/A bus ID: 0:2:0.0
           IF: re0 state: active speed: 100baseTX duplex: full-duplex mac: 2c:60:0c:de:d4:40
Drives:    Local Storage: total: 454.85 GiB used: 37.50 GiB (8.2%)
           ID-1: /dev/ada0 vendor: Samsung model: SSD 860 EVO 500GB RVT04B6Q size: 454.85 GiB
Partition: ID-1: / size: 447.49 GiB used: 37.50 GiB (8.4%) fs: ufs dev: /dev/ada0p2
Swap:      ID-1: swap-1 type: partition size: 3.76 GiB used: 0 KiB (0.0%) dev: /dev/ada0p3
Info:      Processes: 101 Uptime: 10m Memory: 7.88 GiB used: 2.45 GiB (31.0%) Init: init (BSD) Compilers: gcc: N/A
           clang: 8.0.1 Shell: csh v: 6.20.00 inxi: 3.1.03
Solution
Code:
1) pkg install libsynaptics xf86-input-synaptics
2) Add this line in /boot/loader.conf

    hw.psm.elantech_support="1"
3) reboot
Thanks a lot,
Diego
 
Back
Top