Pierwsza konfiguracja - odmowa dostępu do portu USB - Ubuntu 14.04

18

Właśnie podłączyłem swoje arduino i lampka świeci, ale test mrugnięcia nie został przesłany. oto mój błąd:

Arduino: 1.6.7 (Linux), Płyta: „Arduino / Genuino Uno”

Szkic wykorzystuje 1030 bajtów (3%) miejsca do przechowywania programu. Maksymalnie wynosi 32 256 bajtów. Zmienne globalne używają 9 bajtów (0%) pamięci dynamicznej, pozostawiając 2,039 bajtów dla zmiennych lokalnych. Maksymalnie jest 2048 bajtów. avrdude: ser_open (): nie można otworzyć urządzenia "/ dev / ttyUSB0": Odmowa dostępu ioctl („TIOCMGET”): Niewłaściwy ioctl dla urządzenia Problem z przesyłaniem na kartę. Sugestie można znaleźć na stronie http://www.arduino.cc/en/Guide/Troublesh#upload .

Ten raport będzie zawierał więcej informacji z włączoną opcją „Pokaż pełne dane wyjściowe podczas kompilacji” w menu Plik> Preferencje.


źródło
arduino.cc/en/Guide/Linux#toc9
Ignacio Vazquez-Abrams
2
@ IgnacioVazquez-Abrams - czy możesz zamienić to w odpowiedź? Staramy się uzyskać odpowiedź na nasz procent. :) Może z odrobiną kopiowania i wklejania, więc nie jest to tylko link.
Nick Gammon
Zrobiłem wszystkie kroki i zadziałało za pierwszym razem. Teraz próbuję załadować swój drugi program i otrzymuję komunikat „avrdude: ser_open (): nie można otworzyć urządzenia” / dev / ttyUSB0 ”: Odmowa dostępu” zrobiłem to: roquet @ roquet-HP-ENVY-x360-m6 -Convertible: ~ $ sudo adduser roquet dialout The dialout użytkownika roquet' is already a member of '. roquet @ roquet-HP-ENVY-x360-m6-Convertible: ~ $ sudo chmod a + rw / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-Convertible: ~ $ ls -l / dev / ttyUSB * crw -rw-rw- 1 dialout roota 188, 0 sty 20 13:12 / dev / ttyUSB0 roquet @ roquet-HP-ENVY-x360-m6-Convertible: ~ $, ale nadal otrzymuje „odmowę zgody”
Roque Zabalet

Odpowiedzi:

26

Z dokumentacji :

Otwórz terminal i wpisz:

ls -l /dev/ttyACM*

dostaniesz coś takiego:

crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0

„0” na końcu ACM może być inną liczbą lub może zostać zwróconych wiele wpisów. Potrzebne nam dane to „dialout” (jest właścicielem grupy pliku).

Teraz musimy tylko dodać naszego użytkownika do grupy:

sudo usermod -a -G dialout $USER

następnie:

sudo chmod a+rw /dev/ttyACM0

Musisz wylogować się i zalogować ponownie, aby zmiana zaczęła obowiązywać.

Zauważ, że powyższe to stare instrukcje Ubuntu. W nowoczesnych dystrybucjach korzystających z ConsoleKit utwórz plik /etc/udev/rules.d/01-ttyusb.ruleszawierający następujące elementy, a następnie ponownie załaduj reguły udev i ponownie uruchom urządzenie Arduino:

SUBSYSTEMS=="usb-serial", TAG+="uaccess"
Ignacio Vazquez-Abrams
źródło
Świetna odpowiedź. W nowszych instalacjach nie trzeba ponownie ładować reguł udev. Udev będzie obserwował /etc/udev/rules.d pod kątem zmian. Musisz odpowiedzieć arduino.
ppareit
@parez, co liczy się jako „nowsze instalacje”? To nie działa dla mnie na Ubuntu 16.04 z przeładowaniem reguł lub bez (poprzez sudo udevadm control --reload).
Desty
1
Myślę, że to nie zadziałało, ponieważ płytka jest identyfikowana jako należąca do podsystemu „tty”, a nie „szeregowy USB”. W każdym razie utworzenie dla mnie następującej reguły udev:, SUBSYSTEM=="tty", ATTRS{idVendor}=="(vendor)", ATTRS{idProduct}=="(product)", ATTRS{serial}=="(serial)", SYMLINK+="ttyUSB.arduino", GROUP="adm"gdzie (sprzedawca) i (produkt) są pobierane, lsusba (szeregowy) jest pobierane z wyjścia udevadm info -a -n /dev/ttyACM0|grep '{serial}'|head -n1.
Desty
Przynajmniej w przypadku Ubuntu 16.04 nie widziałem tego problemu na Mint 18.1. Cieszę się, że znalazłeś rozwiązanie!
ppareit
NAILED IT !!!! UPVOTED. Mam dystrybucję 17.04 i 1. rozwiązanie nie było trwałe!
Tony Gil
3

Wszystko, co musisz zrobić, to dodać się do grupy dialout, jak opisano w odpowiedzi Ignacio Vazquez-Abramsa. Odbywa się to w terminalu, wpisując:

sudo usermod -a -G dialout $USER

Nie musisz używać chmod. Daje to dostęp do odczytu / zapisu wszystkim użytkownikom, a nie tylko członkom grupy. Zanim jednak spróbujesz się połączyć, musisz się wylogować i zalogować ponownie . Po ponownym zalogowaniu się zostaniesz rozpoznany jako członek grupy połączeń i będziesz mógł otworzyć urządzenie.

Luke Newmeyer
źródło
1

Na Ubuntu 18.04 jedynym sposobem, w jaki znalazłem instalację Arduino IDE od razu po wyjęciu z pudełka, było zastosowanie opisanych tutaj kroków dokumentacji:

https://www.arduino.cc/en/Guide/Linux/

Nie wymaga zmiany grup ani uprawnień.

Cagy79
źródło
0

Nic powyżej mi nie pomogło. Po zainstalowaniu z pliku, z oficjalnej strony, nawet się nie uruchamia. Następnie zainstalowałem Arduino IDE z „sklepu z aplikacjami dla Linuksa” i działałem, ale mam problem jak nasz znajomy z góry. Więc odinstalowałem go i zainstalowałem za pomocą terminala, sudo apt install arduinoa teraz działa. Twoje zdrowie.

misha666
źródło
-1

Lub po prostu użyj polecenia chown.

sudo chown <username> /dev/ttyACM*

To zadziałało dla mnie

Złupić
źródło
1
To pytanie zostało zadane wiele razy na tej stronie i ta sama odpowiedź została udzielona przez innego użytkownika. Cytuję Chrisa Strattona w tym podjednostce: To zły pomysł, zwłaszcza na typowym dynamicznie konfigurowanym Linuksie z udev lub podobnymi węzłami zarządzającymi / dev, które będziesz musiał robić za każdym razem, gdy podłączasz urządzenie. Zamiast tego dodaj użytkownika do odpowiedniej grupy, co jest trwałą poprawką.