Tiny Core Linux
Tiny Core Base => TCB Talk => Topic started by: Sashank999 on November 20, 2024, 11:27:19 AM
-
Hello.
I am a user of Lenovo Thinkpad L412. I currently use touchpad for my daily linux use as my trusty mouse broke recently. I decided to revisit TCL as I had to install a linux distro to get Clickhouse OLAP running locally. But now I found out that 2 finger scroll and double tapping (for left click) does not work.
I have set up all the necessary things as per my choices - Firefox (thanks for the getLatest TCE), Alsa, Ice WM, etc.
From some forum and Google searches, I found a boot code:
psmouse.proto=imps
from:
https://forum.tinycorelinux.net/index.php/topic,6458.msg34363.html#msg34363
https://forum.tinycorelinux.net/index.php/topic,6982.msg36850.html#msg36850
Now this enabled the double tapping for left click. But I still cannot scroll with 2 fingers, as you would normally with a touchpad.
I will be happy to provide any information regarding my device drivers, hardware information or TCL version.
Thanks in advance.
-
Hi Sashank999
I take it you are running Xorg. What does this return:
sudo libinput list-devices
-
Hi Sashank999
I take it you are running Xorg. What does this return:
sudo libinput list-devices
Thank you for looking into this.
Here is what I got:
tc@box:~$ sudo libinput list-devices
Device: Power Button
Kernel: /dev/input/event2
Group: 1
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: Video Bus
Kernel: /dev/input/event6
Group: 2
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: Sleep Button
Kernel: /dev/input/event1
Group: 3
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: AT Translated Set 2 keyboard
Kernel: /dev/input/event3
Group: 4
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: PS/2 Synaptics TouchPad
Kernel: /dev/input/event5
Group: 5
Seat: seat0, default
Capabilities: pointer
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *button
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: flat *adaptive custom
Rotation: 0.0
Edit: My laptop has both a touchpad and the "trackpoint" thing so I don't know if they are both being recognized. Mine is a Lenovo ThinkPad L412, Intel Core i3 6th Gen, 4GB RAM.
-
I think Thinkpads have some kernel mod's to get things working well.
If you try another live linux distro, and do lsmod to see what mod's installed.
-
Hi Sashank999. I'm on a ThinkPad X230 and two-finger scrolling works for me. I did not do any special configuration for it to work. It seems that if the hardware supports it, libinput can handle it.
Here's what I'm seeing:
$ sudo libinput list-devices
Device: Power Button
Kernel: /dev/input/event2
Group: 1
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: Video Bus
Kernel: /dev/input/event6
Group: 2
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: Sleep Button
Kernel: /dev/input/event0
Group: 3
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: AT Translated Set 2 keyboard
Kernel: /dev/input/event3
Group: 4
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: SynPS/2 Synaptics TouchPad
Kernel: /dev/input/event4
Group: 5
Seat: seat0, default
Size: 71x31mm
Capabilities: pointer gesture
Tap-to-click: disabled
Tap-and-drag: enabled
Tap drag lock: disabled
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *two-finger edge
Click methods: *button-areas clickfinger
Disable-w-typing: enabled
Disable-w-trackpointing: enabled
Accel profiles: flat *adaptive custom
Rotation: n/a
Device: TPPS/2 IBM TrackPoint
Kernel: /dev/input/event5
Group: 6
Seat: seat0, default
Capabilities: pointer
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *button
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: flat *adaptive custom
Rotation: n/a
I noticed your TouchPad section has this:
Scroll methods: *button
whereas mine has this:
Scroll methods: *two-finger edge
Maybe your touchpad doesn't support two-finger scrolling?
-
Hi Sashank999
I think you need to create:
/usr/local/share/X11/xorg.conf.d/50-libinput.conf
Place the following in that file:
Section "InputClass"
Identifier "libinput touchpad catchall"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "true"
Option "ScrollMethod" "twofinger"
EndSection
Backup the file, restart X, see if anything changed.
This might be of some help:
https://wiki.archlinux.org/title/Libinput#Via_xinput
Libinput configuration details (options):
https://man.archlinux.org/man/libinput.4
Manually trying settings using xinput without the need to restart X:
https://forum.tinycorelinux.net/index.php/topic,23880.msg150206.html#msg150206
-
I apologize for the late reply. Thank you all for trying to help me.
I think Thinkpads have some kernel mod's to get things working well.
If you try another live linux distro, and do lsmod to see what mod's installed.
Hi patrikg. I did not try any other live distro yet. I will try Fedora if it has something that can help.
Hi Sashank999. I'm on a ThinkPad X230 and two-finger scrolling works for me. I did not do any special configuration for it to work. It seems that if the hardware supports it, libinput can handle it.
Here's what I'm seeing:
$ sudo libinput list-devices
Device: Power Button
Kernel: /dev/input/event2
Group: 1
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: Video Bus
Kernel: /dev/input/event6
Group: 2
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: Sleep Button
Kernel: /dev/input/event0
Group: 3
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: AT Translated Set 2 keyboard
Kernel: /dev/input/event3
Group: 4
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: n/a
Rotation: 0.0
Device: SynPS/2 Synaptics TouchPad
Kernel: /dev/input/event4
Group: 5
Seat: seat0, default
Size: 71x31mm
Capabilities: pointer gesture
Tap-to-click: disabled
Tap-and-drag: enabled
Tap drag lock: disabled
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *two-finger edge
Click methods: *button-areas clickfinger
Disable-w-typing: enabled
Disable-w-trackpointing: enabled
Accel profiles: flat *adaptive custom
Rotation: n/a
Device: TPPS/2 IBM TrackPoint
Kernel: /dev/input/event5
Group: 6
Seat: seat0, default
Capabilities: pointer
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *button
Click methods: none
Disable-w-typing: n/a
Disable-w-trackpointing: n/a
Accel profiles: flat *adaptive custom
Rotation: n/a
I noticed your TouchPad section has this:
Scroll methods: *button
whereas mine has this:
Scroll methods: *two-finger edge
Maybe your touchpad doesn't support two-finger scrolling?
Hi GNUser. My touchpad supports both 2 finger scroll and 3 finger gestures on Windows without any issues. That is why I was surprised when it did not work in Tiny Core Linux. I don't think it is a hardware issue at all.
Hi Sashank999
I think you need to create:
/usr/local/share/X11/xorg.conf.d/50-libinput.conf
Place the following in that file:
Section "InputClass"
Identifier "libinput touchpad catchall"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "true"
Option "ScrollMethod" "twofinger"
EndSection
Backup the file, restart X, see if anything changed.
This might be of some help:
https://wiki.archlinux.org/title/Libinput#Via_xinput
Libinput configuration details (options):
https://man.archlinux.org/man/libinput.4
Manually trying settings using xinput without the need to restart X:
https://forum.tinycorelinux.net/index.php/topic,23880.msg150206.html#msg150206
Hi Rich. I just tried creating the file and restarting the Xserver by exiting to prompt and then using the "startx" command to start the Xserver. This did not do anything.
-
Hello Rich,
Your code did not work because my touchpad is being recognised as a "pointer" by libinput.
Hence, I modified your code to change match criteria to MatchIsPointer "true"
, added a custom identifier, changed driver to "synaptics" which lead to Xorg applying this custom rule.
I also tried with driver "libinput" but it failed with "Failed to set" message.
I attached the 2 Xorg.log files.
Some digging around showed that Synaptics driver should usually be ok with these touchpads. So I compiled xf86-synaptics-driver from https://github.com/awestendorf/xf86-input-synaptics .
But that is showing protocol error.
[ 3387.659] (II) LoadModule: "synaptics"
[ 3387.659] (II) Loading /usr/local/lib/xorg/modules/input/synaptics_drv.so
[ 3387.659] (II) Module synaptics: vendor="X.Org Foundation"
[ 3387.659] compiled for 1.21.1.9, module version = 1.6.99
[ 3387.659] Module class: X.Org XInput Driver
[ 3387.659] ABI class: X.Org XInput driver, version 24.4
[ 3387.659] (II) Using input driver 'synaptics' for 'PS/2 Synaptics TouchPad'
[ 3387.659] (**) PS/2 Synaptics TouchPad: always reports core events
[ 3387.659] (**) Option "Device" "/dev/input/event5"
[ 3387.740] (EE) synaptics: PS/2 Synaptics TouchPad: Synaptics driver unable to
detect protocol
[ 3387.740] (EE) PreInit returned 11 for "PS/2 Synaptics TouchPad"
[ 3387.740] (II) UnloadModule: "synaptics"
-
Hello.
I initially wanted to have normal tap-to-click with my touchpad on my laptop. I followed https://forum.tinycorelinux.net/index.php/topic,6982.msg36850.html#msg36850 (https://forum.tinycorelinux.net/index.php/topic,6982.msg36850.html#msg36850) and added the bootcode psmouse.proto=imps
to my grub.cfg .
I thought this was a solution, but this is the actual trouble maker. It changed something so that my touchpad was being recognized as a pointer by libinput. I removed the bootcode and then libinput recognized my touchpad as an actual touchpad. As a bonus, xinput also now also lists my trackpoint separately.
â¡ Virtual core pointer id=2 [master pointer (3)]
â â³ Virtual core XTEST pointer id=4 [slave pointer (2)]
â â³ SynPS/2 Synaptics TouchPad id=10 [slave pointer (2)]
â â³ TPPS/2 IBM TrackPoint id=11 [slave pointer (2)]
⣠Virtual core keyboard id=3 [master keyboard (2)]
â³ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
â³ Power Button id=6 [slave keyboard (3)]
â³ Video Bus id=7 [slave keyboard (3)]
â³ Sleep Button id=8 [slave keyboard (3)]
â³ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
The issue is not with libinput or my touchpad. It was with a bootcode. Remove the bootcode and properly configure libinput in /usr/local/share/X11/xorg.conf.d directory with a custom configuration file. This is the configuration I am using now:
Section "InputClass"
Identifier "libinput new touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "Tapping" "true"
Option "ScrollMethod" "twofinger"
Option "NaturalScrolling" "true"
Option "AccelSpeed" "0.4"
EndSection
I am currently using persistent home and opt directories with `tce=sda7 home=sda7 opt=sda7 norestore` boot codes. I have a command bootlocal.sh for auto connecting to my Wi-Fi AP. I added a command to create the configuration file. Here is my bootlocal.sh:
#!/bin/sh
# put other system startup commands here
/usr/local/bin/wifi.sh -a 2>&1 > /tmp/wifi.log
echo 'Section "InputClass"
Identifier "libinput new touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "Tapping" "true"
Option "ScrollMethod" "twofinger"
Option "NaturalScrolling" "true"
Option "AccelSpeed" "0.4"
EndSection' > /usr/local/share/X11/xorg.conf.d/50-custom.conf
Hope this helps other travellers that have come along my way. Sorry for wasting your time. Thank you for helping me.
-
@Sashank999, thanks for sharing your findings! it most likely will help someone in the future.
also, for future visitors to this thread, as noted in "7.2 Persistent home/opt" of Into the Core:
(http://tinycorelinux.net/book.html)Using absolute names can be unreliable if there are multiple drives
present; how fast they initialize affects their naming. So if there are
multiple internal drives, or you wish to use an external drive, it’s
recommended to use either UUID or LABEL.
Examples:
• home=sda1
• home=LABEL=mydisk
• home=UUID=fho4-3436t
-
Hi Sashank999
Glad to hear it's working. Kudos on pinpointing the boot code issue.
... I am currently using persistent home and opt directories with `tce=sda7 home=sda7 opt=sda7 norestore` boot codes. I have a command bootlocal.sh for auto connecting to my Wi-Fi AP. I added a command to create the configuration file. Here is my bootlocal.sh: ...
If you remove the norestore boot code, you can use the backup system
instead of having bootlocal.sh creating the file:
Click the ControlPanel icon (the one with the screwdriver).
Click the Backup/Restore button.
Select the Include for Backup tab.
Click the Add button.
In the file selector, navigate to /usr/local/share/X11/xorg.conf.d/
Click 50-custom.conf and click the OK button.
In the drop down box, change from Dry Run to Backup.
Click Go and your file is now backed up.
The next time you boot, your file will automatically be restored.
If you prefer the command line instead of the GUI:
echo "usr/local/share/X11/xorg.conf.d/50-custom.conf" >> /opt/.filetool.lst
filetool.sh -b
Leave out the leading slash in the path as shown.
On a related note:
When it comes to automatically starting programs, scripts, daemons, etc., the basic rules of thumb are:
1. Things that need to run before a GUI are started (like kmaps) should go into /opt/bootsync.sh.
2. Things that need to run after a GUI are started (like starting a GUI app) should go into ~/.X.d.
3. Things that are not sensitive to when they are started can go into /opt/bootlocal.sh which runs in the background.
When starting something from numbers 1 or 3, you need to specify a full path. They run before any user is logged in.
Item 2 is unique to each user.
The configuration file you are creating would fall under item 1, it needs to
be present before Xorg starts.
So if you insist on creating the file like that, do it in bootsync.sh before
it calls bootlocal.sh. Otherwise you'll have a race condition that might
intermittently cause your touchpad to not be configured when you boot.
Some things don't belong in bootlocal.sh, kmaps for example. This explains why and
describes the timing of events:
https://forum.tinycorelinux.net/index.php/topic,23698.msg148996.html#msg148996
-
Hi Rich,
Thanks for the information. I didn't know there is an order to be followed like that.
...If you remove the norestore boot code, you can use the backup system
instead of having bootlocal.sh creating the file: ...
The main reason why I chose to have TCL persistence on disk is because I have Firefox files in my /home/tc directory and taking a backup of that directory and restoring them on startup is taking too much time. That is why I chose to have those configuration commands in my bootlocal.sh file.
...So if you insist on creating the file like that, do it in bootsync.sh before
it calls bootlocal.sh. Otherwise you'll have a race condition that might
intermittently cause your touchpad to not be configured when you boot. ...
Yes, I would like to have a startup script like that. So, I made the current config:
In a new file called ~/.X.d/start-script.sh:
#!/bin/sh
# put other system startup commands here
xset b 90 200 75 &
clipit &
And in /opt/bootsync.sh:
#!/bin/sh
# put other system startup commands here, the boot process will wait until they complete.
# Use bootlocal.sh for system startup commands that can run in the background
# and therefore not slow down the boot process.
/usr/bin/sethostname box
/usr/local/bin/wifi.sh -a 2>&1 > /tmp/wifi.log &
alsactl init 2>&1 > /tmp/alsa.log &
mkdir -p /usr/local/share/X11/xorg.conf.d
sudo echo 'Section "InputClass"
Identifier "libinput new touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "Tapping" "true"
Option "ScrollMethod" "twofinger"
Option "NaturalScrolling" "true"
Option "AccelSpeed" "0.4"
EndSection' > /usr/local/share/X11/xorg.conf.d/50-custom.conf
/opt/bootlocal.sh &
This setup works properly. ClipIt starts after X server starts and the custom libevent configuration file is created before X server starts. Even alsactl start is correct.
Please validate it and let me know if there is still something that I should do.
On a side note, I am just noticing the below new error message during my boot. I don't know how to capture the text start screen but after X starts, I can see it in dmesg log. Is there anything wrong with my setup ?
tc@box:~$ dmesg | grep elogind
[ 17.226728] elogind-uaccess-command[4888]: Failed to apply ACL: Operation not supported
[ 17.227406] elogind-uaccess-command[4910]: Failed to apply ACL: Operation not supported
...another 60 times...
[ 17.248303] elogind-uaccess-command[4894]: Failed to apply ACL: Operation not supported
[ 25.390845] elogind-uaccess-command[8852]: Failed to apply ACL: Operation not supported
I do not see any bugs or missing files in the system. Everything works fine but these logs just fill the screen during the boot.
I have my persistence on a ext4 partition that I created from TCL with fdisk. I previously had a non-persistent setup on a FAT32 partition where the kernel and initrd were stored but it didn't support persistence so I created the new partition and moved my persistent home, opt and tce directories to the ext4 partition and left the kernel and initrd in the FAT32 partition.
Please let me know if I should make a new thread for these logs alone.
-
Hi Hi Sashank999
... The main reason why I chose to have TCL persistence on disk is because I have Firefox files in my /home/tc directory and taking a backup of that directory and restoring them on startup is taking too much time. That is why I chose to have those configuration commands in my bootlocal.sh file. ...
... Please validate it and let me know if there is still something that I should do. ...
--- and moved my persistent home, opt and tce directories to the ext4 partition ...
Since you have your home directory on disk, did you remember to remove it from you backup?
If not, then:
editor /opt/,filetool.lst
# Remove the line that says home
filetool.sh -b
# That purges home data from the backup so that
# stale data can't overwrite current data on the
# next restore.
Those dmesg errors sound like they might be triggered by one of the .rules files in elogind.tcz.
-
> elogind-uaccess-command[8852]: Failed to apply ACL: Operation not supported
>
I suppose it's the same like case with xattr and squashfs, i.e. if kernel (or correspondent FS module) is built without a requested feature (in this case it's ACL), there's that "not supported" error
update: https://blog.tfiu.de/-failed-to-reset-acl-with-elogind-why-.html explanation seems not the same but similar to this ACL case
-
Hi Sashank999
ACL is enabled, but only for NTFS3:
CONFIG_NTFS3_FS_POSIX_ACL=y
My understanding is ACL lets you control who can access a device.
The error message states:
Failed to apply ACL: Operation not supported
That suggests it aborted what it was attempting to do and what
you are seeing are just nuisance messages.
-
Hello.
Rich, I removed the home and opt drectories from .filetool.lst and it now takes less time.
Thanks for the replies. I will ignore those ulogind messages.