# Touchpad not recognized; "Generic PS/2 Mouse" instead



## nekoexmachina (Feb 9, 2015)

Hello!
I've got a problem with my installation on a laptop.
Laptop model is Asus u32vj.
It has a Synaptics (or I think so) touchpad, that works flawlessly in other OSes, but not in FreeBSD.
I've installed driver for Synaptics from ports, but:


```
Couldn't find Synaptics properties. No Synaptics driver loaded?
```
`dmesg` & xorg.log suggest that something is wrong:

```
neko@smallap : ~
[1] % grep EE /var/log/Xorg.0.log
   (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  1229.096] Initializing built-in extension MIT-SCREEN-SAVER
[  1229.390] (EE) synaptics: Mouse0: Mouse0 Found no Synaptics, found Mouse model 0 instead
[  1229.390] (EE) synaptics: Mouse0: Unable to query/initialize Synaptics hardware.
[  1229.429] (EE) PreInit returned 11 for "Mouse0"

neko@smallap : ~
[0] % dmesg|grep psm0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model Generic PS/2 mouse, device ID 0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model Generic PS/2 mouse, device ID 0
```
What useful could be done with this?
Thanks,
Mike.


----------



## Andrew Hacking (Feb 10, 2015)

Almost identical problem to OP on an ASUS R501VZ / N56VZ which I believe has an ElanTech touchpad.

The touchpad works with multi-touch gestures on Arch Linux using ALPS Glidepoint driver and the Xorg Synaptics driver.

This is making Freebsd FreeBSD problematic to use on my laptop, almost impossible to type without brushing the touchpad, and of course no scroll support.

Enabled debug logging in /boot/loader.conf:

```
debug.psm.loglevel="2"
```


```
$ dmesg |grep psm0
psm0: current command byte:0065
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model Generic PS/2 mouse, device ID 0-00, 2 buttons
psm0: config:00000000, flags:00000008, packet size:3
psm0: syncmask:c0, syncbits:00
```

Obviously the psm(4) driver is not recognizing the touchpad as anything but a basic PS/2 mouse. Is there any way to force 'synaptics' model in the driver?


----------



## srobert (Feb 10, 2015)

Andrew Hacking said:


> The touchpad works with multi-touch gestures on Arch Linux using ALPS Glidepoint driver and the Xorg Synaptics driver.
> 
> This is making Freebsd FreeBSD problematic to use on my laptop, almost impossible to type without brushing the touchpad, and of course no scroll support.
> 
> Obviously the psm(4) driver is not recognizing the touchpad as anything but a basic PS/2 mouse. Is there any way to force 'synaptics' model in the driver?



I had a similar problem with an ACER 4730z.  I never did get it to use the synaptics driver under FreeBSD. However, I did find that while using it as a PS/2 mouse, I could eliminate the "tap to click" response that occurs when brushing the touchpad, by adding the following line to /etc/rc.conf.

```
moused_flags="-m 11=4"
```
I have no answer for scroll support.


----------



## shepper (Feb 10, 2015)

I recalled this wiki which is very dated.


> *How to use it*
> You must add the following line in /boot/loader.conf to enable the psm(4) Synaptics support.
> hw.psm.synaptics_support="1"


And in Thread 19707:


> Hello community
> 
> I've fixed the problem now, to install PCBSD wasn't necessary. The problem was, that synaptics wasn't identified correct and it was recognized as something different, so it disabled psm0. The config files were correct, with adding this lines in the /boot/device.hints file it works:
> 
> ...



Lastly, some may consider it hubris, but Touchpad support is pretty good in OpenBSD.  They tend to work out of the box and are easy to configure with synclient (does not appear to be a manual page entry in FreeBSD but here is OpenBSD's synclient manual).


----------



## nekoexmachina (Feb 10, 2015)

Andrew Hacking said:


> which I believe has an ElanTech touchpad.


I believe that mine is Elantech as well, cause similiar model reports having this, too.


srobert said:


> I could eliminate the "tap to click" response that occurs when brushing the touchpad, by adding the following line to /etc/rc.conf.


Thank you very much! Checking this right now.

Update:
Oh man, thank you so much.
How do I find out the -m options? _The moused(8) _man page says that


> Assign the physical button _M_ to the logical button _N_.


Are there some standard numerical codes that resemble the "physical/logical" buttons or what?



Andrew Hacking said:


> almost impossible to type without brushing the touchpad


Yes, same thing is a main problem for me. I've resolved it temporarily by using a hotkey w/ `xinput disable 8`/`xinput enable 8` script. Obviously, get your touchpad ID from xinput output.
This is a pain, but still better than nothing.


shepper said:


> Lastly, some may consider it hubris, but Touchpad support is pretty good in OpenBSD.


Actually, I think that both NetBSD and OpenBSD have support for Elantech touchpads right now, according to the google.


----------



## Andrew Hacking (Feb 11, 2015)

For future travellers adding the following to device.hints did not help with ASUS/Elantech synaptics detection:


```
hint.psm.0.flags="0x1000"
```

So it looks like digging into the OpenBSD/NetBSD driver to see how they support Elantech touchpads is required.


----------



## Andrew Hacking (Feb 11, 2015)

After looking at the code, its clear OpenBSD/NetBSD have a much nicer console infrastructure with wscons.

UPDATE: I've started porting the OpenBSD Elantech support in its pms driver to the FreeBSD psm driver, (hence my comment above).  My time is limited but I'm making steady progress. I have also identified the additions required to xf86-input-synaptics for the psmcomm.c backend so that the Elantech support can work in X on FreeBSD. Again this is handled much more cleanly in OpenBSD and Linux so mapping different mouse protocols into synaptics for FreeBSD is nowhere near as straight forward.  The whole keyboard/mouse infrastructure needs a rethink IMO.

I'll report back here when I have something working.


----------



## woodsb02 (Jun 1, 2015)

Andrew Hacking said:


> UPDATE: I've started porting the OpenBSD Elantech support in its pms driver to the FreeBSD psm driver, (hence my comment above). My time is limited but I'm making steady progress. I have also identified the additions required to xf86-input-synaptics for the psmcomm.c backend so that the Elantech support can work in X on FreeBSD. Again this is handled much more cleanly in OpenBSD and Linux so mapping different mouse protocols into synaptics for FreeBSD is nowhere near as straight forward. The whole keyboard/mouse infrastructure needs a rethink IMO.
> 
> I'll report back here when I have something working.


Hi Andrew,
Just wondering how you have progressed with porting the OpenBSD Elantech drivers to FreeBSD. Still progressing?
Thanks,
Ben


----------



## virgosun (Oct 17, 2015)

Me too. Hi Andrew. I have an Asus X and it can work with Elan driver. How is your effort?
Thanks

Son


----------



## renic (Jun 9, 2016)

Sorry to necro this thread but a few people have put effort into getting elantech support going.

bug ticket: PR 205690

working code change for FreeBSD 10.3-RELEASE-p5: https://github.com/renic/freebsd-elantech/

If you try the code, whether it works or not: please comment to the bug ticket.


----------



## abishai (Aug 15, 2016)

Sorry to respawn the old thread, but I'm former stick (sic!) user of IBM T-series. I bought a new laptop with touchpad, so can you describe a little what wrong with touchpad with generic mouse driver? Actually, I don't investigate what driver it is using, but I when I move finger, cursor moves, when I click button, it clicks. Isn't it what one can expect from generic mouse? Or touchpads have some other functions as well ?

PS. I'm thinking to disable it, it so stupid - when I type I can touch it and move cursor, however I'm just curious. I should buy laptop with the stick


----------



## shepper (Aug 15, 2016)

abishai said:


> Sorry to respawn the old thread, but I'm former stick (sic!) user of IBM T-series. I bought a new laptop with touchpad, so can you describe a little what wrong with touchpad with generic mouse driver? Actually, I don't investigate what driver it is using, but I when I move finger, cursor moves, when I click button, it clicks. Isn't it what one can expect from generic mouse? Or touchpads have some other functions as well ?
> 
> PS. I'm thinking to disable it, it so stupid - when I type I can touch it and move cursor, however I'm just curious. I should buy laptop with the stick



A fully featured touchpad provides additional options such as vertical and horizontal scrolling.  As far as cursor jumping when using the keyboard, there are two options:
1)  In OpenBSD syndaemon monitors keyboard activity and disables the touchpad during keyboard use.
2)  Most laptops have a Fn key to disable the touchpad.  Via keymapping, this feature can be implemented.


----------



## abishai (Aug 15, 2016)

I see, worth a try then. I installed OpenBSD first, however it doesn't support Skylake yet, maybe the same can be implemented with FreeBSD.


----------



## shepper (Aug 15, 2016)

In this thread srobert disabled tap-to-click with



srobert said:


> had a similar problem with an ACER 4730z. I never did get it to use the synaptics driver under FreeBSD. However, I did find that while using it as a PS/2 mouse, I could eliminate the "tap to click" response that occurs when brushing the touchpad, by adding the following line to /etc/rc.conf.
> 
> ```
> moused_flags="-m 11=4"
> ```



There were some inteldrm updates in OpenBSD 6.0 - due to be released in just over two weeks.  There is also this.


----------



## abishai (Aug 21, 2016)

Ok, now I'm fighting with touchpad. How you use synaptic driver at all ? xorg's autodetection is not loading synaptic driver.
`74.002] (II) Using input driver 'mouse' for 'sysmouse'
[  74.002] (**) sysmouse: always reports core events
[  74.002] (**) Option "Device" "/dev/sysmouse"
[  74.002] (==) sysmouse: Protocol: "Auto"
[  74.002] (**) sysmouse: always reports core events
[  74.003] (==) sysmouse: Emulate3Buttons, Emulate3Timeout: 50
[  74.003] (**) sysmouse: ZAxisMapping: buttons 4 and 5
[  74.003] (**) sysmouse: Buttons: 5
[  74.003] (**) Option "config_info" "devd:sysmouse"
[  74.003] (II) XINPUT: Adding extended input device "sysmouse" (type: MOUSE, id 7)
[  74.003] (**) sysmouse: (accel) keeping acceleration scheme 1
[  74.003] (**) sysmouse: (accel) acceleration profile 0
[  74.003] (**) sysmouse: (accel) acceleration factor: 2.000
[  74.003] (**) sysmouse: (accel) acceleration threshold: 4
[  74.003] (II) sysmouse: SetupAuto: hw.iftype is 4, hw.model is 0
[  74.003] (II) sysmouse: SetupAuto: protocol is SysMouse
[  74.003] (II) config/devd: device /dev/ums0 already opened
[  74.088] (II) config/devd: adding input device Mouse (/dev/psm0)
[  74.088] (II) Using input driver 'mouse' for 'Mouse'
[  74.088] (**) Mouse: always reports core events
[  74.088] (**) Option "Device" "/dev/psm0"
[  74.088] (==) Mouse: Protocol: "Auto"
[  74.088] (**) Mouse: always reports core events
[  74.170] (==) Mouse: Emulate3Buttons, Emulate3Timeout: 50
[  74.170] (**) Mouse: ZAxisMapping: buttons 4 and 5
[  74.170] (**) Mouse: Buttons: 5
[  74.170] (**) Option "config_info" "devd:psm0"
[  74.170] (II) XINPUT: Adding extended input device "Mouse" (type: MOUSE, id 8)
[  74.170] (**) Mouse: (accel) keeping acceleration scheme 1
[  74.171] (**) Mouse: (accel) acceleration profile 0
[  74.171] (**) Mouse: (accel) acceleration factor: 2.000
[  74.171] (**) Mouse: (accel) acceleration threshold: 4
[  74.243] (II) Mouse: SetupAuto: hw.iftype is 3, hw.model is 13
[  74.243] (II) Mouse: SetupAuto: protocol is PS/2
[  74.786] (II) Mouse: ps2EnableDataReporting: succeeded`

```
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model Synaptics Touchpad, device ID 3
```
psm0 is touchpad, ums0 is usb mouse

```
ums0: <Logitech USB Receiver, class 0/0, rev 2.00/12.01, addr 1> on usbus0
ums0: 16 buttons and [XYZT] coordinates ID=2
```
Not sure what is /dev/sysmouse - moused is not enabled.


----------



## shepper (Aug 21, 2016)

In FreeBSD, the synaptics driver has to specifically be loaded in /boot/loader.conf.  See this forum Thread 54872 for more.


----------



## abishai (Aug 22, 2016)

Disabling AutoAddDevices is not an option. After I read xorg man, I found InputClass section. So, it is possible to keep AutoAddDevices and just hint xorg what driver to use:

```
Section "InputClass"
   Identifier   "Touchpad0"
   MatchDevicePath   "/dev/psm0"
   Driver   "synaptics"
   Option   "Protocol"   "psm"
   Option   "SendCoreEvent"   "on"
   Option   "VertTwoFingerScroll"   "1"
   Option   "EmulateTwoFingerMinZ"   "7"
   Option   "EmulateTwoFingerMinW"   "7"
   Option   "VertScrollDelta"   "-111"
   Option   "TapButton2"   "0"
EndSection
```

Looks like it works:

```
[  2050.092] (**) Mouse: Applying InputClass "Touchpad0"
[  2050.092] (II) LoadModule: "synaptics"
[  2050.092] (II) Loading /usr/local/lib/xorg/modules/input/synaptics_drv.so
[  2050.092] (II) Module synaptics: vendor="X.Org Foundation"
[  2050.092]  compiled for 1.17.4, module version = 1.8.2
[  2050.092]  Module class: X.Org XInput Driver
[  2050.092]  ABI class: X.Org XInput driver, version 21.0
[  2050.092] (II) Using input driver 'synaptics' for 'Mouse'
[  2050.092] (**) Mouse: always reports core events
[  2050.092] (**) Option "Protocol" "psm"
[  2050.092] (**) Option "Device" "/dev/psm0"
[  2050.142] (--) synaptics: Mouse: invalid x-axis range.  defaulting to 1615 - 5685
[  2050.142] (--) synaptics: Mouse: invalid y-axis range.  defaulting to 1729 - 4171
[  2050.142] (--) synaptics: Mouse: invalid pressure range.  defaulting to 0 - 255
[  2050.142] (--) synaptics: Mouse: invalid finger width range.  defaulting to 0 - 15
[  2050.142] (**) Option "EmulateTwoFingerMinZ" "7"
[  2050.142] (**) Option "EmulateTwoFingerMinW" "7"
[  2050.142] (**) Option "VertScrollDelta" "-111"
[  2050.142] (**) Option "VertTwoFingerScroll" "1"
[  2050.142] (**) Option "TapButton2" "0"
[  2050.169] (--) synaptics: Mouse: synaptics touchpad found
[  2050.169] (--) synaptics: Mouse:  Synaptics Touchpad, model: 0
[  2050.169] (--) synaptics: Mouse:  Firmware: 8.2
[  2050.169] (--) synaptics: Mouse:  Sensor: 1
[  2050.169] (--) synaptics: Mouse:  new absolute packet format
[  2050.169] (--) synaptics: Mouse:  Touchpad has extended capability bits
[  2050.169] (--) synaptics: Mouse:  -> multifinger detection
[  2050.169] (--) synaptics: Mouse:  -> palm detection
[  2050.169] (**) Mouse: always reports core events
[  2050.204] (**) Option "config_info" "devd:psm0"
[  2050.204] (II) XINPUT: Adding extended input device "Mouse" (type: TOUCHPAD, id 8)
[  2050.204] (**) synaptics: Mouse: (accel) MinSpeed is now constant deceleration 2.5
[  2050.204] (**) synaptics: Mouse: (accel) MaxSpeed is now 1.75
[  2050.204] (**) synaptics: Mouse: (accel) AccelFactor is now 0.042
[  2050.204] (**) Mouse: (accel) keeping acceleration scheme 1
[  2050.204] (**) Mouse: (accel) acceleration profile 1
[  2050.204] (**) Mouse: (accel) acceleration factor: 2.000
[  2050.204] (**) Mouse: (accel) acceleration threshold: 4
[  2050.278] (--) synaptics: Mouse: synaptics touchpad found
[  2050.278] (--) synaptics: Mouse:  Synaptics Touchpad, model: 0
[  2050.278] (--) synaptics: Mouse:  Firmware: 8.2
[  2050.278] (--) synaptics: Mouse:  Sensor: 1
[  2050.278] (--) synaptics: Mouse:  new absolute packet format
[  2050.278] (--) synaptics: Mouse:  Touchpad has extended capability bits
[  2050.278] (--) synaptics: Mouse:  -> multifinger detection
[  2050.278] (--) synaptics: Mouse:  -> palm detection
```
Not sure why driver listed twice.


----------



## abishai (Aug 22, 2016)

Looks like I opened Pandora's box with that touchpad.
This code works,

```
Section "InputClass"
  Identifier  "Touchpad0"
  Driver  "synaptics"
  MatchDevicePath "/dev/psm0"
  Option  "Protocol"  "psm"
  Option  "SendCoreEvent" "on"
  Option  "VertTwoFingerScroll"  "1"
  Option  "EmulateTwoFingerMinZ"  "7"
  Option  "EmulateTwoFingerMinW"  "7"
  Option  "VertScrollDelta"  "-111"
  Option  "TapButton2"  "0"
EndSection
```
but until reboot. (Reboot, not xOrg restart). After reboot, touchpad completely broken. Every touch spawns

```
[  147.812] (--) synaptics: Mouse: synaptics touchpad found
[  147.812] (--) synaptics: Mouse:  Synaptics Touchpad, model: 0
[  147.812] (--) synaptics: Mouse:  Firmware: 8.2
[  147.812] (--) synaptics: Mouse:  Sensor: 1
[  147.812] (--) synaptics: Mouse:  new absolute packet format
[  147.812] (--) synaptics: Mouse:  Touchpad has extended capability bits
[  147.812] (--) synaptics: Mouse:  -> multifinger detection
[  147.812] (--) synaptics: Mouse:  -> palm detection
```
block and pointer moves at random and clicks random buttons. I see no special errors in the logs.
To fix the issue I must turn off synaptic driver in xorg conf, restart xorg to allow generic driver attach to it. After than I can put synaptic driver back and enjoy touchpad until reboot.

Power off is not fixing the issue. touchpad works until reboot only if generic driver was attached on previous run.

So, to get touchpad working:
1. Disable synaptic
2. Restart xorg
3. Enable synaptic
4. Restart xorg

5. Restart xorg
6. touchpad still here
7. Reboot/Power off
8. Touchpad broken, proceed to 1.
9. Power off
10. Still broken, proceed to 1.


----------

