I have a new systemd service that fails to start with a "permission denied" error. I bought a Thinkpad L480. Unfortunately, there seems to be an issue with the kernel not detecting the touchpad. This is addressed here can be solved by
sudo sh -c 'echo -n "elantech" > /sys/bus/serio/devices/serio1/protocol'
As I do not want to do this on every single startup, I made a systemd service, which does not work as expected.
My touchpad_enabler.service is
[Unit] Description=FooBar [Service] Type=oneshot ExecStart=/usr/local/bin/enable_touchpad.sh [Install] WantedBy=default.target
The script file is simply
#!/bin/bash echo -n "elantech" > /sys/bus/serio/devices/serio1/protocol
But I also tried it with the
sh -c version. I adjusted the permissions via
sudo chmod 744 /usr/local/bin/enable_touchpad.sh sudo chmod 644 /etc/systemd/system/touchpad_enabler.service
so both files are owned by root. I then enabled it via
systemctl enable enable_touchpad.sh
When I manually start the service via
systemctl start touchpad_enabler.service, it works totally fine and the touchpad works as it should. However, on startup , the service fails and is listet as 'failed' in
The output of
journalctl -b -u touchpad_enabler.service is:
systemd: Starting Solves bug that Thinkpad L480 Touchpad is not correctly detected... enable_touchpad.sh: sh: /sys/bus/serio/devices/serio1/protocol: permission denied systemd: touchpad_enabler.service: Main process exited, code=exited, status=1/FAILURE systemd: touchpad_enabler.service: Failed with result 'exit-code'. systemd: Failed to start FooBar
It looks like the problem is the permission to write to the file itself. But manually starting the service works fine and to my understanding systemd should execute the command as root anyway, right?
man systemctl.service I got the idea to prepend '+' to the filepath so that it read
With no effect.
I do not really understand where this
protocol file comes from. It looks like it gets created by the kernel on startup? So I also experimented with the
After= parameter, but systemd should start the services after the kernel is fully loaded, right? The file is also owned by root so I would not expect any problems there.
I hope someone can help me. Thanks in advance.