Kłopot z USB pod Linuksem
- Szczegóły
- Odsłony: 52689
Gdy pod Linux'em np. Ubuntu zechcesz skorzystać z nietypowych urządzeń wykorzystujących port USB (własnej konstrukcji programator czy analizator NWT) reakcja systemu może nieco zaskoczyć.
A tych "co pierwszy raz" - zniechęcić...
Przywykliśmy do tego, że "pod Windą" podłączamy urządzenie, system je wykrywa, instalujemy (automatycznie lub nie) sterowniki. I jest OK.
Albo i nie. I wtedy też trzeba troszkę pomajdrować....
Również pod Linuksem w wielu przypadkach system niezauważalnie dla użytkownika wykrywa i uaktywnia urządzenie. Dowodem tego jest wynik podania w oknie terminala komendy lsusb (po podłączeniu do portu USB urządzenia, w którym wykorzystano układ FT232RL):
user@XYZ:~$ lsusb
...(ewentualna lista innych urządzeń USB)
Bus 007 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC,
...(ewentualna lista innych urządzeń USB)
user@XYZ:~$
Mało tego po podaniu również w oknie terminala komendy: ll /dev/sttyUSB* (na początku dwie małe literki l, jak lampa):
user@XYZ:~$ ll /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 cze 1 09:16 /dev/ttyUSB0
user@XYZ:~$
jej wynik potwierdza aktywność urządzenia o identyfikatorze ttyUSB0. Ponieważ powyższe komendy odwołują się do konkretnego urządzenia to nie jest tu istotne czy uruchomiliśmy czy też nie oprogramowanie z niego korzystające.
Ale zdarza się, że gdy uruchomimy oprogramowanie czeka nas przykra niespodzianka. Program nie wykrywa portu USB lub nie może z niego skorzystać.
Zwykłe putty przy próbie odwołania się do sesji z wykorzystaniem portu ttyUSB0 zgłasza błąd niemożności jego otwarcia:
Przyczyną nie jest uszkodzenie urządzenia czy też jego zła konfiguracja, a nasze uprawnienia (tj. ich brak) jako użytkownika. Urządzenia USB (o nierozpoznanej sygnaturze) korzystające ze standardowych sterowników przynależą do grupy o nazwie "dialout" (co było widoczne w listingu własności urządzenia ttyUSB0). Podając w terminalu komendę (pokaż zawartość pliku /etc/group zawierające frazę "dialout"):
user@XYZ:~$ cat /etc/group | grep dialout
dialout:x:45:
user@XYZ:~$
Widać, że użytkownik user nie jest członkiem grupy dialout. Fakt, że problem "leży" w uprawnieniach potwierdza to, że gdy użyjemy danego programu z uprawnieniami administratora - sudo, gksu, itp.) problemu nie ma. Możnaby spróbować zmienić "ręcznie" uprawnienia, ale przecież nie o to chodzi.
Prostsze jest dopisanie użytkownika user do grupy dialout. A można to zrobić na kilka sposobów.
Jednym z nich jest wydanie (w oknie terminala) poniższej komendy (druga sprawdza, czy osiągnęliśmy efekt):
sudo usermod -a -G dialout $USER
[sudo] password for user: ********
user@XYZ:~$ cat /etc/group | grep dialout
dialout:x:45:user
user@XYZ:~$
Widać, że użytkownik user stał się członkiem grupy "dialout". Szerszy opis pozycji w pliku group można uzyskać wydając komende: man 5 group.
Czy to już koniec? Niestety nie. W wielu przypadkach dokonana zmiana zadziała dopiero po przeładowaniu (restarcie) systemu. Dokonaj wyboru odpowiedniej pozycji z menu lub komendę w oknie terminala:
user@XYZ:~$ sudo reboot
A po restarcie możemy już cieszyć się pełną funkcjonalnością aplikacji korzystających z portów USB.
I tak oto konieczność korzystania z oprogramowania MS staje się mniej oczywista.
Pozdrawiam.