Vorrei sapere come determinare quale driver (tra quelli di seguito) gestisce il mio 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
Vorrei sapere come determinare quale driver (tra quelli di seguito) gestisce il mio 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
Risposte:
È probabile che nessuno di loro lo stia facendo. Nel mio sistema, ad esempio, dove sto usando Fedora 19 e un Thinkpad 410 con un touchpad Synaptic, non ho anche un driver Kernel.
$ lsmod|grep -iE "apple|cyapa|sermouse|synap|psmouse|vsxx|bcm"
Allora, cosa si prende cura di questo dispositivo? Bene, in realtà è questo modulo del kernel:
$ lsmod|grep -iE "input"
uinput 17672 0
Se vuoi vedere di più su questo modulo puoi usare 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
...
A quanto pare, dispositivi di input come questi sono spesso gestiti a un livello superiore, in questo caso i driver effettivi sono implementati a livello X11.
uinput è un modulo del kernel linux che consente di gestire il sottosistema di input dalla terra dell'utente. Può essere utilizzato per creare e gestire dispositivi di input da un'applicazione. Crea un dispositivo a caratteri nella directory / dev / input. Il dispositivo è un'interfaccia virtuale, non appartiene a un dispositivo fisico.
FONTE: Introduzione a uinput: sottosistema di input a livello di utente
Sono nel sottosistema X11. Puoi vedere il dispositivo usando il xinput --list
comando. Ad esempio, ecco i dispositivi sul mio laptop 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)]
Si noti che il mio TouchPad appare in questo elenco. Puoi trovare ulteriori informazioni su questi dispositivi tramite /proc
, ad esempio:
$ 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
...
Scavando più a fondo se il tuo sistema utilizza un touchpad Synaptic (che a mio avviso rappresenta circa il 90% di tutti i touchpad), puoi fare uno locate synaptics | grep xorg
che dovrebbe rivelare i seguenti file:
$ 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
I primi risultati sono il vero driver di cui stai chiedendo. Viene caricato in X.org tramite il secondo file qui:
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
EndSection
E questa linea:
MatchDevicePath "/dev/input/event*"
È ciò che associa i dispositivi fisici a questo driver. E probabilmente ti stai chiedendo, come può questo ragazzo essere così sicuro? Utilizzando questo comando mostra il dispositivo associato con la mia data Synaptic TouchPad utilizzando id=12
dalla xinput --list
uscita ho mostrato in precedenza:
$ xinput --list-props 12 | grep "Device Node"
Device Node (251): "/dev/input/event4"
journalctl -b 0
e poi cercato touchpad
, e ho questa linea (**) bcm5974: Applying InputClass "evdev touchpad catchall"
. Quindi so che bcm5974
è il driver del dispositivo
uinput
modulo del kernel (driver). Cosa non è chiaro su questa affermazione?
uinput
il modulo non è diretto in relazione ai dispositivi hardware; dipende dai driver hardware per fornire informazioni corrette, quindi uinput fornisce un'interfaccia di input unificata per l'utente. Il software userland, in questo caso il driver synaptics xorg, può connettere xorg con il kernel (e l'input dell'utente indirettamente) usando uinput. Per favore, correggimi se sbaglio, perché non sono un esperto in questo campo ..
hid_multitouch
nell'elenco. Penso che sia quello che gestisce il touchpad sul mio Dell Precision e non ho il uinput
modulo caricato.
$ cat /var/log/Xorg.0.log | grep "input driver"
Sul mio laptop mostra:
...
[ 9.054] (II) Using input driver 'synaptics' for 'Elan Touchpad'
...
cat | grep
quanto è possibile utilizzare direttamente grep
sui file ignorando il cat
comando.
grep -e "input driver" /var/log/Xorg.0.log
journalctl -u display-manager | grep "input driver"
e xinput --list
mi ha aiutato a capire che ho bisogno di abilitare l'opzione del kernel "Elantech" durante la ricompilazione del kernel.
lsmod
e vedere quale di questi driver è caricato. Potresti anche voler leggere il tuo/var/log/Xorg.0.log
.