defoxe
#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.
  • Najlepsze
  • Wszystkie komentarze
T.....s
T.....s
@defoxe: kojarzę coś takiego jak libusb który działa w user-mode, więc nie trzeba pisać modułów do kernela
Kaczus2B
Kaczus2B
@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.
MikelThief
MikelThief
@defoxe: sterownik to też program, to że widzi to po prostu jest w stanie zidentyfikować go po danych które dostaje i to wszystko.
passage
@defoxe: skoro to czytnik linii papilarnych to może działa w zwykłym trybie HID? sprawdziłeś w ogóle w dokumentacji?
Kaczus2B
Kaczus2B
@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
Kaczus2B
Kaczus2B
@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
QBA__
QBA__
2
@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.
rethil
@defoxe: ktos juz tez mial problem, zaczal z nim walczyc tutaj.
W kernelu z tego co widze nie ma driverow do skanera (w kernelu androida juz sa).
Wychodzi na to ze bedziesz musial podzialac z libfprint
defoxe
defoxe Autor
0
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ę
defoxe
defoxe Autor
0
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ą.
defoxe
defoxe Autor
0
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
MikelThief
MikelThief
@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.
defoxe
defoxe Autor
0
@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.
defoxe
defoxe Autor
0
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.
defoxe
defoxe Autor
0
@rethil: ja już sporo walczyłem z tym czytnikiem. Wiem, że nie tylko mnie nie działa i generalnie jest mocno niekompatybilny z Linux. ¯\_(ツ)_/¯
MikelThief
MikelThief
@defoxe: a czego oczekiwałeś? że ktoś ci w kilku zdaniach przetłumaczy? Kierunek znasz, więc podejmij jakieś działanie.
defoxe
defoxe Autor
0
@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. ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)