Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: [Poradnik] Wyszukiwanie Sterowników  (Przeczytany 140 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
[Poradnik] Wyszukiwanie Sterowników
« dnia: 2024-03-26, 03:43:41 »
Większość sterowników znajduje się w kernelu.
Główne źródło kernela można znaleźć na platformie GitHub  https://github.com/torvalds/linux
Informację o sterownikach można znaleźć np. w tym pliku
https://github.com/torvalds/linux/blob/master/drivers/hid/Kconfig

Czego dotyczą sterowniki HID ?
Z wikipedii możemy wyczytać
Cytuj
Urządzenia HID są produkowane z myślą o podłączeniu ich do portu USB,
dzięki czemu są łatwo rozpoznawane i odpowiednio przez komputer numerowane.

Wracając co powyższego pliku.
W przeglądarce można użyć skrótu Ctr+F   ( przynajmniej w przeglądarce Firefox to działa )
i wyszukać swój na przykład kontroler PS4 lub inny żeby sprawdzić czy jest wspierany.

Jeśli ten sterownik jest tam na stronie, czy to znaczy że mój system także posiada ten sterownik ?
- Nie koniecznie, sprawdźmy to.

Przykład.
Załóżmy teoretycznie że posiadam kontroler PS4
i w powyższym pliku pisze że jest wspierany przez " HID_PLAYSTATION "
Więc znajdźmy go w naszym systemie.

$ find /lib/modules/$(uname -r) -type f -name '*.ko' | grep -i "playstation"
/lib/modules/5.15.0-91-generic/kernel/drivers/hid/hid-playstation.ko
To znaczy że mój kernel 5.15.0 w systemie zawiera ten moduł / sterownik,
więc kontroler PS4 powinien działać. :D

--------{
Ostrzeżenia:
- Ta nazwa posiada podkreślnik w nazwie HID_PLAYSTATION ,
natomiast nazwa  hid-playstation.ko posiada myślnik w nazwie.
Należy to uwzględnić podczas wyszukiwania plików.

- Nie mogę znaleźć uniwersalnej komendy pokazującej listę wszystkich dostępnych modułów w systemie Linux.
Dlatego w zależności od dystrybucji możliwe że powyższą komendę trzeba będzie lekko zmodyfikować.
Komenda " modprobe -l " może nie istnieć.
Można spróbować w ten sposób
modprobe -c | grep hid | grep playstation
Ale nie gwarantuję że sposób jest prawidłowy, w sensie że jeżeli plik konfiguracyjny istnieje, to sterownik także istnieje. ( Nie mam pewności )
--------}

W przypadku nie znalezienia modułu we własnym systemie,
natomiast jeśli istnieje na stronie projektu / kodu źródłowego Linux,
wtedy jest duże prawdopodobieństwo że sterownik
znajdziemy w systemie dopiero po zaktualizowaniu kernela do nowszej wersji.

Oczywiście czasami system musi wspierać więcej technologii dla danego urządzenia niż tylko USB,
np. może wymagać także działania z Bluetooth,
ale może chociaż ten poradnik także komuś się przyda.
« Ostatnia zmiana: 2024-03-26, 16:11:43 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: [Poradnik] Wyszukiwanie Sterowników
« Odpowiedź #1 dnia: 2024-03-26, 11:13:31 »
+1 za post.
Uzupełnienie z mojej strony:


* Na ogół informacja z konfiguracją jądra jest gdzieś dostępna w zainstalowanym systemie. Albo jako plik w /boot, albo jako wirtualny plik /proc/config.gz. Weryfikacja obecności pada PS wygląda tak:

> zcat /proc/config.gz| grep PLAYSTATION

CONFIG_HID_PLAYSTATION=m
CONFIG_PLAYSTATION_FF=y

Jak widać - driver jest włączony jako moduł (=m) i ma włączony force feedback.

* Jeżeli mamy komputer, w którym jakieś urządzenie działa, to możemy sprawdzić, jaki driver je obsługuje poleceniem inxi -F.

* W wielu przypadkach (zwłaszcza WiFi) - o ile sterownik jest opensource'owy, to firmware już nie, i trzeba go mniej lub bardziej ręcznie doinstalować.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Odp: [Poradnik] Wyszukiwanie Sterowników
« Odpowiedź #2 dnia: Wczoraj o 21:08:23 »
Niestety nie wszystkie urządzenia podłączane do USB są obsługiwane przez standard HID.
" Standard " HID powstał z myślą o lepszym zarządzaniu sterownikami.
Najlepiej sobie
1. Pobrać kod źródłowy linuxa / kernela ze strony https://github.com/torvalds/linux
2. Rozpakowac archiwum
3. Wyszukać urządzenie
np. mam słuchawki producenta HyperX
to w rozpakowanym katalogu archiwum otwieram terminal i wyszukuję komendą
grep -ri hyperx 
i np. otrzymuję listę urządzeń
$ grep -ri hyperx 
sound/usb/quirks.c: DEVICE_FLG(0x0951, 0x16ad, /* Kingston HyperX */
drivers/input/joystick/xpad.c: { 0x03f0, 0x038D, "HyperX Clutch", 0, XTYPE_XBOX360 }, /* wired */
drivers/input/joystick/xpad.c: { 0x03f0, 0x048D, "HyperX Clutch", 0, XTYPE_XBOX360 }, /* wireless */
drivers/input/joystick/xpad.c: { 0x03f0, 0x0495, "HyperX Clutch Gladiate", 0, XTYPE_XBOXONE },
drivers/input/joystick/xpad.c: { 0x03f0, 0x07A0, "HyperX Clutch Gladiate RGB", 0, XTYPE_XBOXONE },
drivers/input/joystick/xpad.c: { 0x03f0, 0x08B6, "HyperX Clutch Gladiate", 0, XTYPE_XBOXONE }, /* v2 */
drivers/input/joystick/xpad.c: { 0x03f0, 0x09B4, "HyperX Clutch Tanto", 0, XTYPE_XBOXONE },
drivers/input/joystick/xpad.c: XPAD_XBOX360_VENDOR(0x03f0), /* HP HyperX Xbox 360 controllers */
drivers/input/joystick/xpad.c: XPAD_XBOXONE_VENDOR(0x03f0), /* HP HyperX Xbox One controllers */

Z czego pierwszy raczej jest od dźwięku, a pozostałe od kontrolerów / gamepadów

I o ile znajdziemy xpad sterownik do kontrolera
$ find /lib/modules/$(uname -r) -type f -name '*.ko' | grep -i "xpad"
/lib/modules/5.15.0-91-generic/kernel/drivers/input/joystick/psxpad-spi.ko
/lib/modules/5.15.0-91-generic/kernel/drivers/input/joystick/xpad.ko

To niestety z tego co znalazłem w internecie to quirks nie dokońca jest sterownikiem.
Jest czymś pośredniczącym jak np. plik konfiguracyjny.

Tutaj za bardzo nie potrafię pomóc.
Jedyne co mogę napisać że jeśli urządzenie nam działa,
to komenda lsusb pokaże nazwy urządzeń

$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0000:3825   USB OPTICAL MOUSE
Bus 001 Device 002: ID 04b4:6005 Cypress Semiconductor Corp.
Bus 001 Device 005: ID 03f0:0b92 HP, Inc HyperX Virtual Surround Sound
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 i zakładając że " Bus " to " Port " , a " Device " to  " Dev "
za pomocą komendy lsusb -t
$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 1: Dev 5, If 3, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 5, If 1, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 5, If 2, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 1: Dev 5, If 0, Class=Audio, Driver=snd-usb-audio, 12M
    |__ Port 5: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 5: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 9: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
przypuszczam że są to sterowniki snd-usb-audio i usbhid

Komendą lsmod mogę sprawdzić czy są załadowane
$ lsmod | grep -i "snd_usb_audio\|usbhid"
snd_usb_audio         364544  2
snd_usbmidi_lib        45056  1 snd_usb_audio
mc                     65536  1 snd_usb_audio
snd_hwdep              16384  2 snd_usb_audio,snd_hda_codec
snd_pcm               143360  6 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd                   106496  28 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm,snd_rawmidi
usbhid                 65536  0
hid                   151552  2 usbhid,hid_generic

Wnioski
- Oba sterowniki są załadowane
- Znów trzeba uważać na myślniki i podkreślniki w nazwach
« Ostatnia zmiana: Wczoraj o 21:10:45 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.