Zmiana uprawnień do portu szeregowego

54

Korzystam z Arduino IDE w Ubuntu i mam problemy z portem szeregowym. Działało to w przeszłości, ale z powodów, które mogą być niepotrzebne, czułem potrzebę zmiany własności niektórych plików z własności root na własność moich użytkowników.

To sprawiło, że IDE działało poprawnie, ale straciłem możliwość używania poprawnego portu szeregowego. W folderze deweloperskim wymagany port jest wymieniony jako pozwolenie 166. Ktoś (kto nie jest już w okolicy, aby mi pomóc) zamienił uprawnienia na 666, co sprawiło, że wszystko działało wspaniale.

Jednak przywrócono go z powrotem, gdy tylko zrestartowałem komputer i jeśli teraz spróbuję użyć polecenia:

sudo chmod 666 ttyACM0

nic się nie dzieje. Brak komunikatów o błędach, ale także brak zmiany uprawnień.

Jak mogę to zmienić i jak mogę to zmienić na stałe?

Przepraszam, jeśli to pytanie jest zbyt uproszczone lub niejasne, jestem ubuntu noob i nie żałuję opinii!

Terrik
źródło
1
sudo chmod 666 / dev / ttyACM0 To była jedyna sugestia na tej stronie, która działała w moim środowisku live 14.04 beta2. Dzięki!

Odpowiedzi:

76

Problem z uprawnieniami do /dev/ttyACM0można rozwiązać na stałe, dodając się do dialoutgrupy. Musisz się wylogować, a następnie zalogować ponownie, zanim zmiana grupy zostanie rozpoznana.

Możesz to zrobić za pomocą sudo usermod -a -G dialout $USER

Rinzwind
źródło
Dowiedziałem się o tym, gdy Arduino IDE poprosiło o rootowanie, aby dodać się do „grupy Dailout”. Teraz wiem co to jest.
Ufoguy,
Właśnie kupiłem adapter Pulse-Eight USB - CEC do użytku z moim nowym telewizorem i stwierdziłem, że początkowo nie działał z Kodi w Ubuntu. Po sprawdzeniu dziennika awarii i przejrzeniu google pojawia się komunikat o błędzie „BŁĄD: CecLogMessage - błąd podczas otwierania portu szeregowego„ / dev / ttyACM0 ”: Odmowa dostępu”. Dzięki tobie (i Donowi Kirkby'emu poniżej - to też działa) byłem w stanie natychmiast rozwiązać problem.
Rich.T.
Ponadto odpowiedź z „user247020” dała mi inne rozwiązanie: otwórz narzędzie GUI „Użytkownicy i grupy” i stań się „Administratorem”. Spowoduje to dodanie Cię do grupy „dialout” (tj. „Użyj modemów”), między innymi.
Rich.T.
usermod -a -G dialout pi działa ok, po sudo chgrp dialout / dev / ttyS0 i działa dobrze, ale po ponownym uruchomieniu cała konfiguracja zostanie utracona. Jestem na Raspberry Pi 3
J261
Dodaj dowolne polecenie, które musisz powtórzyć, do skryptu uruchamiania. Więc bash lub / etc / profile lub init.
Rinzwind
20

Nie mogłem uzyskać sugestii Rinzwind do działania, ponieważ narzekałem, że konto użytkownika już istnieje. Zamiast tego użyłem tego polecenia, aby dodać istniejącego użytkownika ( terrik) do istniejącej grupy ( dialout), jak opisano na Wiki Pomocy Ubuntu .

sudo adduser terrik dialout

Przydatne jest także to polecenie do wyświetlania twoich bieżących grup, chociaż jak mówi Rinzwind, musisz się wylogować i zalogować, zanim port szeregowy zacznie Cię wpuszczać.

groups terrik
Don Kirkby
źródło
10

Nie mogłem sprawić , by odpowiedź Terrika zadziałała , ale mógłbym, gdyby dokonałem tego drobnego dostosowania ścieżki ttyACM0.

sudo chmod 666 /dev/ttyACM0

Zamieściłbym jako komentarz, ale nie mam jeszcze do tego przywilejów ...

gbmhunter
źródło
1
Wydaje się, że uprawnienia resetują się po ponownym podłączeniu i ponownym podłączeniu Arduino.
user1063287
nie działa. :(
Freddy,
to też działa. ale wymaga reguły udev, aby ponownie zezwolić na ponowne podłączenie
pylover
Próbowałem sudo chmod 666 /dev/ttyACM0i nie działa przy ponownym uruchomieniu. Czy ktoś ma rozwiązanie?
user1063287
Hmm peepz to działa .... Dodaj polecenie do skryptu uruchamiania. (/ Dev jest odtwarzany przy starcie, więc musisz powtórzyć to polecenie przy każdym starcie)
Rinzwind 15.09.16
10

Inną możliwością jest utworzenie pliku reguł w /etc/udev/rules.d/katalogu. Miałem podobny problem i utworzyłem 50-myusb.rulesplik w powyższym katalogu z tą zawartością:

KERNEL=="ttyACM[0-9]*",MODE="0666"

Zauważ, że da to każdemu urządzeniu podłączonemu do gniazda ttyACM uprawnienia do odczytu / zapisu. Jeśli potrzebujesz tylko określonego urządzenia, aby uzyskać uprawnienia do odczytu / zapisu, musisz również sprawdzić idVendori idProduct. Możesz je znaleźć, uruchamiając lsusbpolecenie dwa razy, raz bez podłączonego urządzenia i raz, gdy jest podłączone, a następnie obserwuj dodatkowy wiersz na wyjściu. Tam zobaczysz coś takiego Bus 003 Device 005: ID ffff:0005. W tym przypadku idVendor = ffffi idProduct = 0005. Twój będzie inny. Następnie zmodyfikuj plik reguł, aby:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

Teraz tylko to urządzenie otrzymuje uprawnienia. Przeczytaj to, aby dowiedzieć się więcej o pisaniu reguł udev.

NonStandardModel
źródło
2

Spróbuj wejść do System / Users and Groups i zaznaczyć pole swojej nazwy użytkownika w grupie TTY.

użytkownik247020
źródło
[Errno 13] Permission denied: '/dev/ttyACM0'. Oprócz ttygrupy użytkownik jest również w dialoutgrupie. Linux Mint 17.1.
user1063287,
1
@ user1063287 Trysudo chmod a+rw /dev/ttyACM0
Vladimir S.