WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Author Topic: Touchpad is not found  (Read 7771 times)

Offline mrjake2

  • Newbie
  • *
  • Posts: 35
Touchpad is not found
« on: March 02, 2020, 05:24:59 PM »
Now that my video is working properly, I'm trying to set up my touchpad.  I am on Core Pure 64, and I get identical behavior from both Xfbdev and Xorg. 

It appears that Tiny Core (or maybe the kernel?) simply isn't seeing my touchpad.  There is no record of it appearing in dmesg at all.  So I'm not sure what logs would be helpful to send from Tiny Core. I have tried installing both xf86-input-synaptics and xf86-input-libinput; neither one changes this.   Probably goes without saying, but my external USB mouse works just fine.

The trackpad is recognized properly under other Linux distros though (all running Xorg), so I've tried to gather information from those that might be helpful in troubleshooting.  First, lspci doesn't return any information about the trackpad either on Tiny Core or Linux Mint.  However looking through dmesg on Mint I see these two lines for the touchpad:

Code: [Select]
input: CUST0000:00 04F3:30A0 Mouse as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-5/i2c-CUST0000:00/0018:04F3:30A0.0002/input/input7

input: CUST0000:00 04F3:30A0 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-5/i2c-CUST0000:00/0018:04F3:30A0.0002/input/input9

It's odd that it can't resolve those to a manufacturer/device name.  But when I did a bit of research I found that 04F3 is the PCI ID for Elan (https://pci-ids.ucw.cz/read/PC/04f3), so I'm assuming this is an Elan touchpad.   I'm not quite sure why it is recognizing it once as a mouse and once as a touchpad - not sure if that's normal or not.   But I see that it's loading it with "i2c_designware" in the path, and see this line in the output of lspci:

Code: [Select]
00:15.0 Signal processing controller: Intel CorporationSunrise Point-LP Serial IO I2C Controller#0(rev 21)
       Subsystem: Hewlett-Packard Company Sunrise Point-LP Serial IO I2C Controller
       Kernel driver in use: intel-lpss
       Kernel modules: intel_lpss_pci

So I'm guessing LinuxMint sees it as a device attached to that Serial controller rather than as its own PCI device (I'm not an expert in this area so I'm making some guesses).

I'm not sure if this adds any additional information or not, but these are the relevant lines from my Xorg logs on Linux Mint:

Code: [Select]
(II) config/udev: Adding input device CUST0000:00 04F3: 30A0 Touchpad (/dev/input/event15)
(**) CUST0000:00 04F3:30A0 Touchpad: Applying InputClass "libinput touchpad catchall"
(II) Using input driver 'libinput' for 'CUST0000:00 04F3:30A0 Touchpad
(**) CUST0000:00 04F3:30A0 Touchpad: always reports core events
(**) Option "Device" "/dev/input/event15"
(**) Option "_source" "server/udev"
(II) event15 - CUST0000:00 04F3:30A0 Touchpad:is tagged by udev as: Touchpad
(II) event15 - CUST0000:00 04F3:30A0 Touchpad:device is a touchpad
(II) event15 - CUST0000:00 04F3:30A0 Touchpad:device removed
(**) Option"config_info" "udev:/sys/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-5/i2c-CUST0000:00/0018:04F3:30A0.0002/input/input21/event15"
(II)XINPUT: Addingextended input device "CUST0000:00 04F3:30A0 Touchpad" (type: TOUCHPAD, id 11)
(**) Option "AccelerationScheme" "none"
(**) CUST0000:00 04F3:30A0 Touchpad: (accel) selected shceme none/0
(**) CUST0000:00 04F3:30A0 Touchpad: (accel) acceleration factor: 2.000
(**) CUST0000:00 04F3:30A0 Touchpad: (accel) acceleration threshold: 4
(II) event15 - CUST0000:00 04F3:30A0 Touchpad: is tagged by udev as: Touchpad
(II) event15 - CUST0000:00 04F3:30A0 Touchpad: device is a touchpad
(II) config/udev: Adding input device CUST0000:00 04F3:30A0 Touchpad (/dev/input/mouse1)
(II) No input driver specified, ignoring this device

There are no corresponding lines in my Xorg output from Tiny Core. I'm attaching the full Xorg.0.log from Linux Mint in case there is anything else of use in there. 

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11629
Re: Touchpad is not found
« Reply #1 on: March 02, 2020, 09:28:04 PM »
Hi mrjake2
Quote
... But I see that it's loading it with "i2c_designware" in the path ...
Try installing  i2c-5.4.3-tinycore64.tcz.

Offline mrjake2

  • Newbie
  • *
  • Posts: 35
Re: Touchpad is not found
« Reply #2 on: March 02, 2020, 10:05:27 PM »
Hi mrjake2
Quote
... But I see that it's loading it with "i2c_designware" in the path ...
Try installing  i2c-5.4.3-tinycore64.tcz.

I tried that as well but it didn’t change anything.

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11629
Re: Touchpad is not found
« Reply #3 on: March 02, 2020, 10:48:12 PM »
Hi mrjake2
This is basically what I went through finding drivers for an ASUS tablet for audio, BlueTooth, camera, I2C, wireless, GPIO, .......
I finally made a script to scan the tablet and create files that showed found hardware and drivers. I then wound up using the
various device IDs to  grep  the kernel sources to figure out which options I needed to enable in the kernel. Then compiled
a custom kernel. I went through this iteration 4 or 5 times.

Download the attached script. Then copy it to it's own directory, make it executable, and run it. There are brief explanations
in the script of what each of the create files are.

Offline Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14817
Re: Touchpad is not found
« Reply #4 on: March 03, 2020, 12:21:47 AM »
In tc-10.x, Xorg-7.7 used xf86-input-evdev to detect input devices - this changed to xf86-input-libinput in tc-11.x.

You might want to check that you don't have both xf86-input-evdev and xf86-input-libinput loaded.

Offline mrjake2

  • Newbie
  • *
  • Posts: 35
Re: Touchpad is not found
« Reply #5 on: March 03, 2020, 01:53:44 AM »
In tc-10.x, Xorg-7.7 used xf86-input-evdev to detect input devices - this changed to xf86-input-libinput in tc-11.x.

You might want to check that you don't have both xf86-input-evdev and xf86-input-libinput loaded.


I think I read that in a different thread as well as a suggestion, and I've verified that I do not have xf86-input-evdev in my optional dir.  I only have xf86-input-libinput.

Offline mrjake2

  • Newbie
  • *
  • Posts: 35
Re: Touchpad is not found
« Reply #6 on: March 03, 2020, 05:32:55 PM »
Hi mrjake2
This is basically what I went through finding drivers for an ASUS tablet for audio, BlueTooth, camera, I2C, wireless, GPIO, .......
I finally made a script to scan the tablet and create files that showed found hardware and drivers. I then wound up using the
various device IDs to  grep  the kernel sources to figure out which options I needed to enable in the kernel. Then compiled
a custom kernel. I went through this iteration 4 or 5 times.

Hi Rich - thanks for the script!  I'm sure this will be useful in tracking down other hardware in my system that needs drivers as well.  However, I don't entirely understand the process here - I have a good deal of development experience but know next to nothing about how Linux handles hardware (I'm mostly on Macs). 

In this particular case, /proc/bus/input/devices doesn't show my touchpad at all.  I only know about it's PCI ID from looking at /proc/bus/input/devices under Linux Mint.  So when you say "device IDs" above, is that what you mean?  I.E. the PCI manufacturer ID for Elan (04F3)?  Or do you mean something else?  And then once I have that ID, I'm not sure what/where I'm grepping the kernel sources for.  I downloaded http://tinycorelinux.net/11.x/x86_64/release/src/kernel/linux-5.4.3-patched.txz, but is that what you mean?  Or do you mean I should be looking for configuration flags in config-5.4.3-tinycore64?  And if grep turns up a match, then what do I do with that information? 

I'm just a bit confused on the process as this is new to me (and I don't really know where to look for the touchpad specifically since it's not showing up in /proc/bus/input/devices at all).
« Last Edit: March 03, 2020, 05:35:38 PM by mrjake2 »

Offline mrjake2

  • Newbie
  • *
  • Posts: 35
Re: Touchpad is not found
« Reply #7 on: March 03, 2020, 08:21:21 PM »
Ok, I think I've made a bit of progress here thanks to Rich's script.  I couldn't find any useful information when running it on TC, but when I ran it on my working Linux Mint install I got the following from modaliasdrivers.txt:

Code: [Select]
hid:b0018g0004v000004F3p000030A0
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid-generic.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid-multitouch.ko
-e

input:b0018v04F3p30A0e0100-e0,1,3,4,k110,111,145,148,14A,14D,14E,14F,ra0,1,2F,35,36,37,39,m5,lsfw
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/macintosh/mac_hid.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/macintosh/joydev.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/macintosh/joydev.ko
-e

In the modaliasdrivers.txt generated from TC, "hid:b0018g0004v000004F3p000030A0" doesn't even show up.  The only HID entry there is a single line for "hid:b0003g0001v0000046Dp0000C051" - that's my external USB mouse - with no attached drivers (how is it even working in TC without hid.ko?).  The corresponding entry on linux mint shows the following drivers for that:
Code: [Select]
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid-generic.ko
« Last Edit: March 03, 2020, 08:38:27 PM by mrjake2 »

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11629
Re: Touchpad is not found
« Reply #8 on: March 03, 2020, 09:45:17 PM »
Hi mrjake2
Quote
So when you say "device IDs" above, is that what you mean?
I mean a number that uniquely identifies a device. The VID:PID for example:
Quote
hid:b0018g0004v000004F3p000030A0

Quote
Ok, I think I've made a bit of progress here thanks to Rich's script.  I couldn't find any useful information when running it on TC, but when I ran it on my working Linux Mint install I got the following from modaliasdrivers.txt:
That's because you were focused on what that file was telling you and ignoring what it wasn't telling you. It tells you which drivers
are assign to what hardware. However, it also tells you what hardware has no drivers assigned to it. Those are the items you need
to research to see if they need drivers. For example:
Google
Code: [Select]
linux driver 04F3:30A0
Search the kernel sources
Code: [Select]
grep -ri "04f3" Path/To/Kernel/Source/* | grep -i "30a0"
Search module.alias
Code: [Select]
grep -ri "04f3" /lib/modules/KERNEL/modules.alias | grep -i "30a0"
Quote
Code: [Select]
hid:b0018g0004v000004F3p000030A0
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid-generic.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid.ko
    insmod /lib/modules/5.0.0-32-generic/kernel/drivers/hid/hid-multitouch.ko
Here things get interesting. If you look at the current kernel config file:
http://tinycorelinux.net/11.x/x86/release/src/kernel/config-5.4.3-tinycore
you'll find:
#
# HID support
#
CONFIG_HID=y
CONFIG_HID_BATTERY_STRENGTH=y
CONFIG_HIDRAW=y
# CONFIG_UHID is not set
CONFIG_HID_GENERIC=y

----- SNIP -----

CONFIG_HID_MULTITOUCH=m


The 2 modules set to  y  are built in to the kernel and load automatically. The one set to  m  is a loadable module.

The other thing I learned is that some hardware depends upon other hardware having drivers before it becomes visible. So as
you add required drivers, you may see new items show up in modaliasdrivers.txt.

« Last Edit: March 04, 2020, 11:58:27 AM by Rich »

Offline mrjake2

  • Newbie
  • *
  • Posts: 35
Re: Touchpad is not found
« Reply #9 on: March 04, 2020, 01:19:20 AM »
Thanks Rich - this is all very helpful, and I'm learning a lot in the process.  grepping through module.alias as you suggested turns up no results (there are other Elan hid entries, but nothing for device 30A0).  I didn't find anything in kernel sources when I looked last time, but I also don't think I tried a case-insensitive grep.  I'll see if that turns up anything.

So the main issue appears to be that the hardware simply isn't showing up in /proc/bus/input/devices.  If it isn't showing up as a device, then I don't think any amount of modprobe'ing is going to produce a usable driver for it.  I think first I need to get it so it shows up in the device list (from what I've read, I think udevd is responsible for finding it?)  While googling around for this issue, I found several people saying that their Elan touchpads didn't work when they had acpi=off as a kernel parameter.  I don't have that (and in fact a lot of my acpi functions like keyboard lights, battery meter, and fan are working properly), but I do notice that a few things like screen brightness still don't work.  That probably indicates that ACPI drivers aren't fully set up, which I should be able to determine by cross-referencing the results against what I see running Scan.sh in Linux Mint.  As you pointed out that some hardware isn't visible at all until you get other hardware working, that may be the problem.

Finally, I've also read that manufacturers do a poor job of implementing Elan i2c properly and that on Linux it can be touch and go.  Several people have said that with one kernel version it worked fine, and with another they couldn't get it working at all.  So if all else fails I can try using TCE 9.x and 10.x to see if either of those work with the trackpad.

I'll be out of town the next couple days so I'll report back once I'm able to try the items above.  If you have any other bright ideas of things I might want to look into, just let me know.
« Last Edit: March 04, 2020, 01:28:15 AM by mrjake2 »

Offline Fven

  • Newbie
  • *
  • Posts: 29
Re: Touchpad is not found
« Reply #10 on: March 28, 2020, 06:19:15 AM »
Hi mrjake2 and Rich
I am very interested in this topic because I have the same problem. Unfortunately it is still too difficult for me. I tried TC10.01, TC9.0, TC8,2,1 and TC7.2 (64 bit) but it didn't work.
Then I tried Puppy Linux (bionic). The toutchpad works. Is it possible to use their kernel ?

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11629
Re: Touchpad is not found
« Reply #11 on: March 28, 2020, 08:56:57 AM »
Hi Fven
... Then I tried Puppy Linux (bionic). The toutchpad works. Is it possible to use their kernel ?
If you are talking about using Tinycore extensions with a Puppy kernel, I'm going to say no. Any extension that depends on kernel
modules will fail to load because the modules  version  won't match the Puppy kernels  release (version).

Kernel release:

tc@E310:~/BuildTCZs/GPicView$ uname -r
4.19.10-tinycore
tc@E310:~/BuildTCZs/GPicView$


Module version:

tc@E310:~/BuildTCZs/GPicView$ modinfo pcspkr
filename:       /lib/modules/4.19.10-tinycore/kernel/drivers/input/misc/pcspkr.ko.gz
author:         Vojtech Pavlik <vojtech@ucw.cz>
description:    PC Speaker beeper driver
license:        GPL
alias:          platform:pcspkr
depends:       
intree:         Y
vermagic:       4.19.10-tinycore SMP mod_unload 486
tc@E310:~/BuildTCZs/GPicView$


Offline Fven

  • Newbie
  • *
  • Posts: 29
Re: Touchpad is not found
« Reply #12 on: March 28, 2020, 09:59:21 AM »
Hi Rich,
I understand. I found this topic which describes how to convert a PET extension to a TCZ. I thought it might be possible with the kernel too.

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11629
Re: Touchpad is not found
« Reply #13 on: March 28, 2020, 10:26:00 AM »
Hi Fven
You could boot up Puppy to try to find what drivers are needed. You can try running the script I attached in reply #3 to see what
it finds. You'll need to make sure the  lspci  and  xinput  commands are present in Puppy.

Offline mocore

  • Hero Member
  • *****
  • Posts: 642
  • ~.~
Re: Touchpad is not found
« Reply #14 on: February 02, 2021, 06:43:59 AM »
You could try this:
Code: [Select]
$ sudo /usr/local/lib/libinput/libinput-list-devices
thanks ! juanito , ftr
Code: [Select]
$ sudo /usr/local/lib/libinput/libinput list-devices
i had a look and tried adding modules and re running device list
 nothing appears to change

using the script*

 *... made a few modifications , prepending a $distroID and time stamp to the output files  , id was from lsb_release strings on debian derivative and i think /etc/issue on core .


i can see some differences in loaded modules form other distro[5.4.0-58]config which has touch pad working

eg mac_hid ...

all though that seams not so relevant
https://www.kernelconfig.io/CONFIG_MAC_EMUMOUSEBTN?q=mac_hid&kernelversion=5.10.12&arch=x86

looking for a device id that is missing the below modules on core
hid
i2c-hid

i found this issues
 https://github.com/Syniurge/i2c-amd-mp2/issues/3 #  ClosedHID over i2c has not been provided an Int IRQ if pinctrl_amd is not loaded first

a link in the issues suggest

Code: [Select]
rmmod i2c_hid
 
modprobe i2c_hid

will try that next ...

although this comment
it seems that probing the HID I2C touchpad gets deferred until the GPIO chip gets probed

hints at some kind of gpio probe could be required to detect touchpad in some cases !
( all though this box is not amd!  ... but i found some similar distinction of the device id and problems with touchpad / gpio "Mhack in tosh" builds ,.. https://gitter.im/alexandred/VoodooI2C?at=5bf204cea47c6c5d3b09173f     )
 so perhaps ?? i should look for a missing gpio module ??
or method to start probe gpio =S


also read somewhere about acpi ( spesificly acpi=off ) causing problems but idk if that is related to this hw , tbh

 any other suggestions ??
 
« Last Edit: February 02, 2021, 06:58:12 AM by mocore »