SYNA3602 touchpad not working at all

Hi! The driver workaround has loaded but it doesn’t work. But rmmod / modprobe on the terminal after login does work. Weird…

I wonder if I could create a bash script that would run rmmod / modprobe at the login screen. Where should I place that script so that it runs at login? I’ve seen numerous possibilities but none of them seemed to work.

Another thing is that the touchpad configuration is always lost after rmmod. Would you know if there is a command line that I can add to a shell script that would set the two basic configuration options below?

  • natural/inverted scrolling
  • pointer speed

Thanks a lot.

Can you check something for me?

ls /sys/bus/i2c/devices/ | grep i2c

$ ls /sys/bus/i2c/devices/ | grep i2c
i2c-0
i2c-1
i2c-10
i2c-2
i2c-3
i2c-4
i2c-5
i2c-6
i2c-7
i2c-8
i2c-9
i2c-SYNA3602:00

Mk. It does exist.

Anywho … lets change up the service … please edit /usr/lib/systemd/system/syna3602-driver-workaround.service

[Unit]
Description=Restart Touchpad
After=basic.target suspend.target hibernate.target

[Service]
Type=oneshot
Environment=DISPLAY=:0
ExecStart=/usr/bin/bash -c '\
  /usr/bin/echo "on" > /sys/bus/i2c/devices/i2c-SYNA3602\:00/power/control; \
  /usr/bin/rmmod i2c-hid; \
  /usr/bin/modprobe i2c-hid'

[Install]
WantedBy=basic.target suspend.target hibernate.target

Then, you know, reload/reboot, let me know.

Thanks. I’ll try that.
As an additional info, usually when I reboot, the touchpad works if I had already manually rmmod/modprobe at the previous session. If however I turn it off and let some minutes pass, then when I restart the touchpad will be dead… It is as if there is some kind of short memory effect to it.

nope…didn’t work. Turned off. Waited a few moments for “memory effect” to cool off. Turned on. Touchpad dead… worked after manual rmmod/modprobe. Very puzzlying

Hi. Would you know if there is a command to set touchpad inverted/natural scrolling and pointer speed? I am about to give up fixing this touchpad automatically and will just run the commands on a script after each login…

Thanks a lot for your help!

I just realized this error message when running

dmesg | grep -i syna

´´´´
[ 3.817720] systemd[1]: /usr/lib/systemd/system/syna3602-driver-workaround.service:11: Ignoring unknown escape sequences: " /usr/bin/echo “on” > /sys/bus/i2c/devices/i2c-SYNA3602:00/p
ower/control; /usr/bin/rmmod i2c-hid; /usr/bin/modprobe i2c-hid"
[ 4.890873] i2c_hid i2c-SYNA3602:00: i2c-SYNA3602:00 supply vdd not found, using dummy regulator
[ 4.890883] i2c_hid i2c-SYNA3602:00: i2c-SYNA3602:00 supply vddl not found, using dummy regulator
[ 5.944984] i2c_hid i2c-SYNA3602:00: i2c-SYNA3602:00 supply vdd not found, using dummy regulator
[ 5.945005] i2c_hid i2c-SYNA3602:00: i2c-SYNA3602:00 supply vddl not found, using dummy regulator
[ 6.075098] hid-generic 0018:0911:5288.0006: hidraw2: I2C HID v1.00 Device [SYNA3602:00 0911:5288] on i2c-SYNA3602:00
[ 46.604412] i2c_hid i2c-SYNA3602:00: i2c-SYNA3602:00 supply vdd not found, using dummy regulator
[ 46.604434] i2c_hid i2c-SYNA3602:00: i2c-SYNA3602:00 supply vddl not found, using dummy regulator
[ 46.728548] input: SYNA3602:00 0911:5288 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA3602:00/0018:0911:5288.0007/input/input30
[ 46.728712] input: SYNA3602:00 0911:5288 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA3602:00/0018:0911:5288.0007/input/input31
[ 46.728803] hid-generic 0018:0911:5288.0007: input,hidraw2: I2C HID v1.00 Mouse [SYNA3602:00 0911:5288] on i2c-SYNA3602:00
[ 46.866113] input: SYNA3602:00 0911:5288 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA3602:00/0018:0911:5288.0007/input/input32
[ 46.866562] input: SYNA3602:00 0911:5288 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-SYNA3602:00/0018:0911:5288.0007/input/input33
[ 46.866844] hid-multitouch 0018:0911:5288.0007: input,hidraw2: I2C HID v1.00 Mouse [SYNA3602:00 0911:5288] on i2c-SYNA3602:00
´´´´

Could “Ignoring unknown escape sequences:” be some kind of sintax error, maybe?

This looks like it could indicate an incorrect copy … notice the quotes around on … they do not match what we normally use "

But also, you could get rid of that whole echo line as it seems unneeded and strip the exec down to just

/usr/bin/bash -c '/usr/bin/rmmod i2c-hid && /usr/bin/modprobe i2c-hid'

So now syna3602-driver-workaround.service looks like this:

[Unit]
Description=Restart Touchpad
After=basic.target suspend.target hibernate.target

[Service]
Type=oneshot
Environment=DISPLAY=:0
ExecStart=/usr/bin/bash -c '/usr/bin/rmmod i2c_hid && /usr/bin/modprobe i2c_hid'

[Install]
WantedBy=basic.target suspend.target hibernate.target

(Note I replaced i2c-hid for i2c_hid – underscore vs dash)

Reboot. Nothing. Then I ran the following:

systemctl enable --now syna3602-driver-workaround.service 
Created symlink /etc/systemd/system/basic.target.wants/syna3602-driver-workaround.service → /usr/lib/systemd/system/syna3602-driver-workaround.service.
Created symlink /etc/systemd/system/suspend.target.wants/syna3602-driver-workaround.service → /usr/lib/systemd/system/syna3602-driver-workaround.service.
Created symlink /etc/systemd/system/hibernate.target.wants/syna3602-driver-workaround.service → /usr/lib/systemd/system/syna3602-driver-workaround.service.
Job for syna3602-driver-workaround.service failed because the control process exited with error code.
See "systemctl status syna3602-driver-workaround.service" and "journalctl -xe" for details.

systemctl status syna3602-driver-workaround.service               
● syna3602-driver-workaround.service - Restart Touchpad
     Loaded: loaded (/usr/lib/systemd/system/syna3602-driver-workaround.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Wed 2020-08-19 23:45:19 -03; 25s ago
    Process: 3677 ExecStart=/usr/bin/bash -c /usr/bin/rmmod i2c_hid && /usr/bin/modprobe i2c_hid (code=exited, status=1/FAILURE)
   Main PID: 3677 (code=exited, status=1/FAILURE)

Aug 19 23:45:19 VaioFE14 systemd[1]: Starting Restart Touchpad...
Aug 19 23:45:19 VaioFE14 bash[3678]: rmmod: ERROR: Module i2c_hid is not currently loaded
Aug 19 23:45:19 VaioFE14 systemd[1]: syna3602-driver-workaround.service: Main process exited, code=exited, status=1/FAILURE
Aug 19 23:45:19 VaioFE14 systemd[1]: syna3602-driver-workaround.service: Failed with result 'exit-code'.
Aug 19 23:45:19 VaioFE14 systemd[1]: Failed to start Restart Touchpad.

All fail… but manually doing rmmod/modprobe, works…

huh.
Maybe its starting too fast? I guess we could get picky about the Wants and After lines … but you could also maybe put a sleep in there to pause for a few seconds:

/usr/bin/bash -c '/usr/bin/sleep 6 && /usr/bin/rmmod i2c_hid && /usr/bin/modprobe i2c_hid'

THAT WORKED!!!

Tried many reboots, making sure to rmmod before each one, and the touchpad came out alive right at the login screen.

THANKS A LOT!

As a side benefit, touchpad configuration seems to be remembered now. Interesting. Thanks a lot again!

By the way, just bought you a coffee! :coffee:

Cheers. Glad it works. Obviously, you can fiddle with the timer there and use something other than 6 seconds… find the sweet spot where it works but you arent waiting around for it.
Also … if it ever somehow does start too soon you can still run it again

systemctl start syna3602-driver-workaround

Of course since we know it works … you could fine-tune the service as well … maybe better After lines or similar, or config it to retry X times, etc.

Aw thanks :slight_smile:

Yes … on second though … maybe try implementing the Conflicts,After,WantedBy params from phils here:

(and it might work without needing the sleep)

Yes I’ll try shorter wait times. Now if only the physical buttons on the touchpad would work as well, that would make it fully functional.

I used to get it working out of the box on kernel 5.3. I have a hunch it is some kind of timing issue as well, as even on other kernels it sometimes work (like 1 in 100 boots).

I would say another thought is looking through modules

lsmod

for anything odd/unused/blocking
(and then blacklisting them)

Philm’s version didn’t work for me, even when I add the 6s delay… But your version works pretty well.

Hey Gustavo, I have a VAIO FE14 with the SYNA3602 touchpad too, and I found a way to make the touchpad works fine, except for the click of the left button. I am looking for this funcionality. I don’t know if you still with the laptop but I am contacting anyway.
EDIT: I managed a way to do it but the touchpad is double-clicking when pressed on the touch area. Maybe you understand how to fix this problem.

Hi guys yesterday I bought a VAIO Fe14 and it came with that touch I copied the system and they have a touchpad fix I’m going to share to see if it works sorry for my English

#!/bin/bash

#/usr/bin/xmodmap -e “keycode 93 = XF86TouchpadToggle”

while true ;do

if ! grep -q "SYNA3602:00" /proc/bus/input/devices ; then
sudo modprobe -r i2c_hid 
sudo  modprobe hid_generic
sudo  modprobe i2c_hid
sudo  modprobe hid_multitouch

break

fi
grep -q “SYNA3602:00” /proc/bus/input/devices && exit
done