Który sterownik obsługuje mój touchpad?


22

Chciałbym wiedzieć, jak ustalić, który sterownik (spośród poniższych) obsługuje mój touchpad:

appletouch.ko.gz, cyapa.ko.gz, sermouse.ko.gz, synaptics_usb.ko.gz, bcm5974.ko.gz, psmouse.ko.gz, synaptics_i2c.ko.gz, vsxxxaa.ko.gz


1
Zrób lsmodi sprawdź, który z tych sterowników jest załadowany. Możesz także przeczytać swoją /var/log/Xorg.0.log.
wingedsubmariner

te pytania były kontynuacją mojego poprzedniego . Szczerze mówiąc wygląda na to, że żaden nie jest załadowany.
banuy

Odpowiedzi:


34

Prawdopodobnie żaden z nich tego nie robi. Na przykład w moim systemie, w którym korzystam z Fedory 19 i Thinkpad 410 z touchpadem Synaptic, nie mam również sterownika jądra.

$ lsmod|grep -iE "apple|cyapa|sermouse|synap|psmouse|vsxx|bcm"

Więc co dba o to urządzenie? To właściwie ten moduł jądra:

$ lsmod|grep -iE "input"
uinput                 17672  0 

Jeśli chcesz dowiedzieć się więcej o tym module, możesz użyć modinfo uinput:

$ modinfo uinput
filename:       /lib/modules/3.13.11-100.fc19.x86_64/kernel/drivers/input/misc/uinput.ko
version:        0.3
license:        GPL
description:    User level driver support for input subsystem
author:         Aristeu Sergio Rozanski Filho
alias:          devname:uinput
alias:          char-major-10-223
...

Jak się okazuje, urządzenia wejściowe takie jak te są często traktowane na wyższym poziomie, w tym przypadku rzeczywiste sterowniki są implementowane na poziomie X11.

uinput to moduł jądra systemu Linux, który pozwala obsługiwać podsystem wejściowy z poziomu użytkownika. Można go używać do tworzenia i obsługi urządzeń wejściowych z aplikacji. Tworzy urządzenie znakowe w katalogu / dev / input. Urządzenie to interfejs wirtualny, nie należy do fizycznego urządzenia.

ŹRÓDŁO: Pierwsze kroki z uinput: podsystem wprowadzania na poziomie użytkownika

Więc gdzie są moje sterowniki touchpada?

Są w podsystemie X11. Możesz zobaczyć urządzenie za pomocą xinput --listpolecenia. Oto na przykład urządzenia na moim laptopie Thinkpad:

$ xinput --list 
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=9    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=13   [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=11   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=14   [slave  keyboard (3)]

Zauważ, że mój TouchPad pojawia się na tej liście. Możesz znaleźć dodatkowe informacje o tych urządzeniach /proc, na przykład:

$ cat /proc/bus/input/devices 
...
I: Bus=0011 Vendor=0002 Product=0007 Version=01b1
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input5
U: Uniq=
H: Handlers=mouse0 event4 
B: PROP=9
B: EV=b
B: KEY=6420 30000 0 0 0 0
B: ABS=260800011000003
...

OK, ale gdzie jest kierowca?

Kopiąc głębiej, jeśli Twój system korzysta z touchpada Synaptic (który, jak sądzę, stanowi ~ 90% wszystkich touchpadów), możesz zrobić, locate synaptics | grep xorgco powinno ujawnić następujące pliki:

$ locate synaptics | grep xorg
/usr/lib64/xorg/modules/input/synaptics_drv.so
/usr/share/X11/xorg.conf.d/50-synaptics.conf
/usr/share/doc/xorg-x11-drv-synaptics-1.7.1
/usr/share/doc/xorg-x11-drv-synaptics-1.7.1/COPYING
/usr/share/doc/xorg-x11-drv-synaptics-1.7.1/README

Pierwsze wyniki to rzeczywisty sterownik, o który pytasz. Zostaje załadowany do X.org poprzez drugi plik tutaj:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
EndSection

I ta linia:

        MatchDevicePath "/dev/input/event*"

To, co kojarzy urządzenia fizyczne z tym sterownikiem. I prawdopodobnie zadajesz sobie pytanie, jak ten facet może być taki pewien? Za pomocą tego polecenia pokazuje urządzenie związane z moim danego Synaptic TouchPad używając id=12z xinput --listwyjściem pokazałem wcześniej:

$ xinput --list-props 12 | grep "Device Node"
    Device Node (251):  "/dev/input/event4"

Bardzo interesujące! Kiedy używam sterownika mtrack xorg zamiast synaptics, znalazłem coś innego niż to, co powiedziałeś na stronie mtrack : „Obsługuje każdy gładzik, którego sterownik jądra używa protokołu szczelinowego multitouch”. Wygląda na to, że sterownik Xorg tak naprawdę nie ma bezpośredniego kontaktu ze sprzętem, ale twoja odpowiedź wydaje się być sprzeczna z tym stwierdzeniem ...
xuhdev

Myślę, że sterownik wejściowy Xorg różni się od sterownika urządzenia. Pobiegłem, journalctl -b 0a potem touchpadszukałem i mam tę linię (**) bcm5974: Applying InputClass "evdev touchpad catchall". Tak więc wiem, że bcm5974jest sterownik urządzenia
xuhdev

@xuhdev - sterownik xorg pobiera dane ruchu przez uinputmoduł jądra (sterownik). Co nie jest jasne w tym stwierdzeniu?
slm

@slm Myślę, że OP pyta o sterownik urządzenia, a nie sterownik xorg. To, co pokazałeś, to sterownik Xorg, który według mnie jest zupełnie inny niż sterownik urządzenia. uinputmoduł nie jest związany z urządzeniami sprzętowymi; podanie poprawnych informacji zależy od sterowników sprzętowych, a następnie uinput zapewnia ujednolicony interfejs wejściowy dla obszaru użytkownika. Oprogramowanie użytkownika, w tym przypadku sterownik synaptics xorg, może łączyć xorg z jądrem (i dane wejściowe użytkownika pośrednio) za pomocą uinput. Popraw mnie, jeśli się mylę, ponieważ nie jestem ekspertem w tej dziedzinie.
xuhdev

Powinieneś również dołączyć hid_multitouchdo swojej listy. Myślę, że to właśnie zarządza touchpadem w moim Dell Precision i nie mam uinputzaładowanego modułu.
Cerin,

2
$ cat /var/log/Xorg.0.log | grep "input driver"

Na moim laptopie pokazuje:

...
[     9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...

2
Nie używaj, cat | grep ponieważ możesz bezpośrednio używać grepdo plików pomijając catpolecenie.
Thomas

grep -e "input driver" /var/log/Xorg.0.log
masterwok

journalctl -u display-manager | grep "input driver"i xinput --listpomógł mi zorientować się, że muszę włączyć opcję jądra „Elantech” podczas ponownej kompilacji jądra.
user7610
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.