Wpis z mikrobloga

#linux #programowanie #cpp #informatyka

Pytanie o sterownik dla Linux Debian w zasadzie czysto teoretyczne, bo raczej przekracza to moje obecne umiejętności.
Czy urządzenie podłączone do komputera musi do jego obsługi mieć sterownik? Czy można obsługiwać je czysto z poziomu programu?

Pytanie dość nieprecyzyjne chyba, więc podam przykład.

Mając urządzenie podłączone do USB programowałem je zawsze by było widoczne jako wirtualny UART. Sterownika nie robiłem, obsługę robiłem bezpośrednio z aplikacji, wysyłając instrukcje do tego UART. Czy można napisać sterownik by... No właśnie, po co?

A co sprawiło, że się zastanawiam. Mam czytnik linii papilarnych. LSUSB go pokazuje. Wydaje mi się, że skoro Linux rozpoznał po nazwie to mogłoby to działać...
Natomiast fprintd-enroll stwierdza, że brak czytników linii papilarnych (które lsusb widzi).
Tu się zastanawiam, czy jestem w stanie zrobić aplikację, która skomunikuje się bezpośrednio z czytnikiem.
  • 21
  • Odpowiedz
@defoxe: znaczy sterownik jakis byc musi - moze byc ogolny do obslugi portu dajmy na to, ale jakis musi byc. Im bardziej ogolny tym wiecej musisz zrobic po stronie programu ot i cala zagwozdka.
  • Odpowiedz
Ponieważ użyłeś UART, czytnik powinien być dostępny bez pisania żadnych sterowników w /dev/ttyACMnumer (jeżeli to jest konwerter USB-UART zgodny ze standardem USB CDC)


@jacekprim: nie, nie... Ja tutaj miałem na myśli urządzenia jakie sam do tej pory robiłem. Zawsze używałem USB CDC i faktycznie był on widoczny w /dev.

Natomiast na tą chwilę zastanawiam się nad pokonaniem tej "bariery". Takim impulsem jest właśnie czytnik który mam w laptopie.
Przedstawia mi się
  • Odpowiedz
skoro to czytnik linii papilarnych to może działa w zwykłym trybie HID


@passage: otóż właśnie tak sobie kombinuję w tym kierunku. Dlaczego by miał nie działać?
Co prawda nigdy nic nie pisałem dla HID i czytnikowi linii papilarnych zbyt nie ufam ale jak pisałem, to głównie filozoficzne rozmyślania na chwilę obecną.
  • Odpowiedz
@defoxe: sterowniki do drukarek to kilka stopni abstrakcji, a tam, gdzie brak standardu i oszczednosci to dodatkowo sterownik musi realizowac wiecej, w innych wypadkach w zasadzie przesyla plik w zrozumialym formacie.
Tak byly takie drukarki, gdzie sterowanie bylo wieksze od strony sterownika i to tez na rozne sposoby, albo kodami sterujacymi wplatanymi w plik, albo specjalnymi komendami (w zaleznosci od drukarki i portu podlaczeniowego).

Tak ujednolica sie na poziomie api
  • Odpowiedz
sterowniki do drukarek to kilka stopni abstrakcji


@Kaczus2B: może lepiej by było z klawiaturą ( ͡° ͜ʖ ͡°)

Tak ujednolica sie na poziomie api systemu sposob komunikacji ze sterownikiem (jesli
  • Odpowiedz
@defoxe: odpowiadając na twoje pytanie z wpisu: nie jesteś w stanie napisać programu do obsługi czytnika dopóki w pierwszej kolejności nie poczytasz właśnie pisaniu sterowników.
  • Odpowiedz
@MikelThief: no to mi pomogłeś kolego...

Wiesz, że nie wiesz, jak się dowiesz - będziesz wiedział

¯\_(ツ)_/¯

Jak pisałem, nie zależy mi koniecznie na czytniku, zastanawia mnie działanie sterownika np. na jego przykładzie.
  • Odpowiedz
@defoxe: jak to zalezy od urzadzenia. Dlatego wlasnie chcialem pokazac na przykladzie dysku, bo to latwiej samemu sprawdzic. Co do urzadzenia, to juz zalezy od konkretnego, czasem posylasz bajty a czasem cale sekwencje sterujace na najnizszym poziomie. i to nie tylko pod linuksem tak to dziala ale pod kazdym systemem. Po prostu sterownik jest takim tlumaczem pomiedzy api systemu a konkretnym urzadzeniem. W Twoim przypadku musisz wiedziec czego system oczekuje
  • Odpowiedz
Po prostu sterownik jest takim tlumaczem pomiedzy api systemu a konkretnym urzadzeniem.


@Kaczus2B: to rozumiem i zerkałem na źródła sterowników. Natomiast nie wiem jak odbywa się komunikacja z API. oraz w jaki sposób jest to uniwersalizowane.
  • Odpowiedz
@rethil: ja już sporo walczyłem z tym czytnikiem. Wiem, że nie tylko mnie nie działa i generalnie jest mocno niekompatybilny z Linux. ¯\_(ツ)_/¯
  • Odpowiedz
@MikelThief: bez urazy, nie jesteś na Elektrodzie. Chciałem tylko z kimś doświadczonym porozmawiać.
Jeśli nie chcesz czegoś dodać w tym temacie, przecież cię nie zmuszam, a ty widzę zaczepki szukasz. Zapytałem tylko ogólnie o sposób działania systemu a nie o wklejanie mi kodu. ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
  • Odpowiedz
@defoxe: jest tak, jak się domyślasz. System ma różne podsystemy które są bardzo ogólne(nie dotyczą sprzętu bezpośrednio - w sensie adresów i rejestrów) i to zapewnia warstwę abstrakcji sprzętowej to słynne Hardware Abstraction Layer(HAL) sam sterownik odpowiada za to żeby gadać ze sprzętem i systemem w zrozumiały dla nich sposób.

Typów i klas sprzętu jest bardzo bardzo dużo - zoba ile katalogów w linuksowych źródłach, a w tych katalogach kolejne katalogi ze sterownikami.
https://github.com/torvalds/linux/tree/master/drivers

Na czytnikach odcisków palców się nie znam. Jak jest po USB, to bardzo możliwe że rejestruje się jako urządzenie klasy HID(może jako urządzenie HID RAW) i działania na nim wykonuje się z userspace z użyciem HID RAW API, jednak to moje gdybanie. Może tu coś
  • Odpowiedz