Первая настройка - отказ в доступе к usb-порту - ubuntu 14.04

Я только что подключил свою Arduino, и индикатор горит, но тест мерцания не загружается. вот моя ошибка:

Arduino: 1.6.7 (Linux), плата: "Arduino/Genuino Uno"

Sketch использует 1030 байт (3%) места для хранения программ. Максимум 32 256 байт. Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байтов для локальных переменных. Максимум 2048 байт. avrdude: ser_open(): невозможно открыть устройство "/dev/ttyUSB0": разрешение отклонено ioctl("TIOCMGET"): недопустимый ioctl для устройства Проблема с загрузкой на плату. См. предложения по http://www.arduino.cc/en/Guide/Troubleshooting#upload.

В этом отчете будет больше информации с "Показать подробный вывод во время компиляции" активируется в меню «Файл» > «Настройки».

, 👍27

Обсуждение

https://www.arduino.cc/en/Guide/Linux#toc9, @Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams - можете ли вы превратить это в ответ? Мы пытаемся получить наш процент ответов вверх. :) Может быть, с небольшим количеством копий и вставок, так что это не только ссылка., @Nick Gammon

Я сделал все шаги, и это сработало с первого раза. Теперь я пытаюсь загрузить свою вторую программу и получаю это сообщение «avrdude: ser_open(): не удается открыть устройство «/dev/ttyUSB0»: разрешение отклонено». Я сделал это: roquet@roquet-HP-ENVY-x360-m6-Convertible:~$ sudo adduser roquet dialout Пользователь roquet' уже является членом dialout'. 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 root dialout 188, 0 20 января 13:12 /dev/ttyUSB0 roquet@roquet-HP-ENVY-x360-m6-Convertible:~$, но все равно получаю «отказ в разрешении»., @Roque Zabalet


5 ответов


41

Из документации:

Откройте Терминал и введите:

ls -l /dev/ttyACM*

вы получите что-то вроде:

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

"0" в конце ACM может быть другим числом или может быть возвращено несколько записей. Нам нужны данные "dialout" (группа-владелец файла).

Теперь нам просто нужно добавить нашего пользователя в группу:

sudo usermod -a -G dialout $USER

затем:

sudo chmod a+rw /dev/ttyACM0

Чтобы это изменение вступило в силу, вам потребуется выйти и снова войти в систему.

Обратите внимание, что это старые инструкции Ubuntu. В современных дистрибутивах, использующих ConsoleKit, создайте файл /etc/udev/rules.d/01-ttyusb.rules, содержащий следующее, а затем перезагрузите правила udev и повторно подключите устройство Arduino:

SUBSYSTEMS=="usb-serial", TAG+="uaccess"
,

Отличный ответ. В новых установках вам не нужно перезагружать правила udev. Udev будет следить за изменениями в файле /etc/udev/rules.d. Вам нужно переподключить ардуино., @ppareit

@ppareit, что считается «новыми установками»? У меня это не работает в Ubuntu 16.04 с перезагрузкой правил или без нее (через sudo udevadm control --reload)., @Desty

Я думаю, что это не сработало, потому что плата идентифицируется как принадлежащая подсистеме «tty», а не «usb-serial». В любом случае, вместо этого мне помогло создание следующего правила udev: SUBSYSTEM=="tty", ATTRS{idVendor}=="(поставщик)", ATTRS{idProduct}=="(продукт)", ATTRS{serial}=="(serial)", SYMLINK+="ttyUSB.arduino ", GROUP="adm", где (vendor) и (product) взяты из lsusb, а (serial) взяты из вывода udevadm info -a -n /dev/ttyACM0|grep '{serial} '|голова -n1., @Desty

По крайней мере, в Ubuntu 16.04 я не видел этой проблемы в Mint 18.1. Рад слышать, что вы нашли решение!, @ppareit

УСПЕШНО СПРАВИЛСЯ!!!! ПРОголосовало ЗА. У меня дистрибутив 17.04, и первое решение не было постоянным!, @tony gil

Я следовал этим инструкциям, и у меня это не работает. Единственное отличие — мое устройство находится на /dev/ttyUSB0. Я использую Ubuntu 18 и Arduino Uno., @Caio Mar

@CaioCaio: Какие инструкции? Есть два набора., @Ignacio Vazquez-Abrams

@IgnacioVazquez-Abrams, я добавил своего пользователя в группу пользователей и изменил разрешения для /dev/ttyUSB0, @Caio Mar

@CaioCaio: Вы прочитали конец ответа и комментарии?, @Ignacio Vazquez-Abrams

@IgnacioVazquez-Abrams, я это сделал, но я неправильно понял, я прочитал «продолжение», а не «предыдущее», извините... позвольте мне попробовать, @Caio Mar

@IgnacioVazquez-Абрамс, да, второй набор инструкций тоже не сработал. Моя IDE Arduino (v1.6) была установлена через менеджер программного обеспечения Ubuntu, я удалил ее, а затем установил, загрузив пакет IDE с Arduino.cc (v1.8), и теперь она работает. Спасибо за помощь!, @Caio Mar

sudo chmod ug+rw,o-rw /dev/ttyACM0' или 'sudo chmod 660 /dev/ttyACM0' предоставляет доступ на чтение и запись только пользователю/владельцу (root в выводе ls выше) и группе (дозвон в ls вывод выше), в то время как другим _явно_ запрещен доступ на чтение и запись., @rcpa0


-1

Или просто используйте команду chown.

sudo chown <username> /dev/ttyACM*

Это сработало для меня

,

6

Все, что вам нужно сделать, это добавить себя в группу дозвона, как описано в ответе Игнасио Васкес-Абрамса. Это делается в терминале, набрав:

sudo usermod -a -G dialout $USER

Вам не нужно использовать chmod. Это дает доступ для чтения/записи всем пользователям, а не только членам группы. Однако перед попыткой подключения необходимо выйти и снова войти. После повторного входа в систему вы будете признаны членом группы дозвона и сможете открыть устройство.

,

1

В Ubuntu 18.04 единственный способ, которым я обнаружил, что установка Arduino IDE работает прямо из коробки, — это использование документации, описанной здесь:

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

Никакой смены групп и разрешений не требуется.

,

0

Ничто из вышеперечисленного мне не помогло. Когда я установил из файла с официального сайта, он даже не запускается. Затем я установил Arduino IDE из «магазина приложений Linux» и работал, но у меня возникла проблема, как у нашего друга сверху. Поэтому я удалил его и установил через терминал sudo apt install arduino, и теперь он работает. Ура.

,