[SOLVED] Touchpad Issues under Pop!_OS

I recently got a neat little HP 14" notebook with an AMD 3700u/Vega 10 and am really happy with it apart from one issue:

When using the preinstalled libinput driver for the ELAN0708 touchpad, the cursor has a weird delay and doesn’t do slow/precise movements very well. Gestures and palm detection are fine. Changing to the older synaptic driver, movement is much improved, but palm detection is completely broken. In both cases, it greatly degrades usability of this machine for me.

I’ve been researching and trying different configurations, but I’m by no means a linux power user and feel kind of out of my depth and like I’m about to break something with the number of installs, removes, and purges I’ve done trying to solve this issue.

Is this just how things are right now with linux on notebooks, or is it just this machine? Is there anything I can do? I read that the mtrack driver has some of the same issues regarding cursor accuracy, but haven’t tested it yet.

I finally have good touchpad/cursor behavior and ok palm detection. It was a bit of work. Here’s what I did:

  1. Download the latest/last synaptics package from the Ubuntu Launchpad

  2. Dowloand this 5 year old palm detection patch by silverhammermba as a zip file

  3. Unpack both archives

  4. Locate debug_palm.diff inside the unpacked archive of the palm detection patch

  5. Google what *.diff files are for and how they are used, and then understand what they are used for, but not how to use them.

  6. Open debug_palm.diff and xf86-input-synaptics-1.9.1/src/synaptics.c in an editor that does text highlighting for C.

  7. find the “palm detection” section in synaptics.c and compare it to the content of debug_palm.diff

  8. In synaptics.c, remove the lines that are marked with a minus (highlighted red) in debug_palm.diff, copy and add the lines that are marked with a plus sign (highlighted green), and just leave what ever is not marked or highlighted as is. Double check that everything was removed and added in the right place and order. Save synaptics.c

  9. Start a terminal and enter your xf86-input-synaptics-1.9.1/ directory

  10. sudo ./configure

  11. spend some time analyzing all the complaints the ./configure script throws, install all the libraries that the script wants.

  12. sudo ./configure, sudo make, make installcheck, sudo make install, then reboot

  13. Google the ubuntu manual for the synaptics package to learn about all the different parameters that one can manually adjust with the synaptics driver

  14. Use the terminal command “xinput list” to find the id of your Touchpad

  15. Use “xinput list-props id” to find out the current parameters of your synaptics driver configuration

  16. Figure out that the /usr/share/X11/xorg.conf.d is NOT the place for custom config files for the synaptics driver.

  17. Create a new xorg.conf.d directory at /etc/X11/

  18. Copy the XX-synaptics.conf file from /usr/share/X11/xorg.conf.d to xorg.conf.d directory to /etc/X11/xorg.config.d

  19. Open XX-synaptics.conf (XX is a number, e.g. 70-synaptics.conf) file in your editor of choice, and delete its contents, then create:

Section “InputClass”
Identifier “Touchpad”
MatchDriver “synaptics”
Option “PalmDetect” “1”
Option “PalmMinWidth” “5”
EndSection

  1. Save file, reboot and hopefully enjoy improved palm detection.

If you want to further improve issues with cursor accuracy, acceleration etc. you can change all driver option values by using the relevant moniker from the synaptics manual ( such as VelocityScale, MinSpeed, MaxSpeed etc.) and adding it to the XX-synaptics.conf, e.g. Option “VelocityScale” “10”

The changes should take effect after reboot.

If you don’t want to reboot to check every change, you can temporarily force the changes in real time like so:

  1. Use “xinput list” in your terminal and copy the exact device name of your touchpad, and memorize its ID number. In my case device name was “ELAN0708:00 04F3:30A0 Touchpad” and ID was 10.

  2. Use “xinput list-props id” to get a list of all the parameters you can change for the synaptics driver.

  3. Use “sudo xinput set-prop “Device Name” “Synaptics Driver Parameter” Value” to change parameter on the spot. Use the Driver Parameter descriptions from the xinput list-props command, not the ones from the XX-synaptics.conf file.

Example:
sudo xinput set-prop “ELAN0708:00 04F3:30A0 Touchpad” “Synaptics Palm Detection” 1

Refer to the synaptics manual and just experiment until your touchpad feels right for you.

Anyway, like I said, I’m not very experienced, and there probably is a much smarter way of doing this, but if it exists, it’s not documented in a way that I could find or understand.

1 Like