При загрузке кода в arduino выдается сообщение об ошибке: "avrdude: ser_open(): не удается открыть устройство"/dev/ttyACM0": разрешение запрещено"
Моя ОС - Ubuntu 18.04, и Arduino работал до сих пор.
Хотя есть несколько решений, ни одно из них мне не подходит.
Я следовал этим инструкциям на сайте Arduino.
Затем я попробовал это на Arduino Stack Exchange, который должен работать в тех случаях, когда первое решение не сработало. Ответ говорит, что мы должны создать несколько правил /etc/udev/ruled.d/
дорожка.
Но никто из них не работал для меня.
Я также проверил Arduino в Windows 10, чтобы увидеть, была ли это аппаратная проблема, но она работала нормально.
У кого-нибудь есть еще идеи как решить эту проблему?
ОБНОВИТЬ:
- Мое имя пользователя, sergio, является частью обеих групп (tty и dialout);
- Я вышел из системы и вернулся, как объясняет официальный учебник Arduino;
- В Arduino IDE правильные конфигурации: Arduino UNO и ttyACM0
Это вывод
ll /dev/ttyACM0
после запуска обучающих команд:crw-rw-rw- 1 root dialout 166, 0 Jul 15 05:41 /dev/ttyACM0
ОБНОВЛЕНИЕ 2:
Я создал скрипт для решения этой проблемы: https://github.com/sergiomafra/iniarduino
12 ответов
Переустановите ваш arduino, установленный из программного центра Ubuntu:
sudo apt install --reinstall arduino
Переустановка необходима, так как ваш which avrdude
Команда согласно вашему комментарию ничего не возвращает, но должна быть /usr/bin/avrdude
, Проверьте еще раз:
which avrdude
Запустите вашу Arduino IDE после переустановки и закройте ее.
Проверьте вашу конфигурацию arduino. открыто /home/sergio/.arduino/preferences.txt
файл и проверьте там serial.port
вариант. Попробуйте изменить это на /dev/ttyACM0
, Откройте этот файл:
sudo nano /home/sergio/.arduino/preferences.txt
и применить соответствующие изменения, т.е. вариант должен выглядеть
serial.port=/dev/ttyACM0
Перезагрузите компьютер после этого.
У меня была похожая проблема, когда я пытался загрузить эскиз в Arduino. Проблема была связана с отсутствием разрешений на чтение / запись на последовательный порт. Мне удалось исправить с помощью следующей команды:
Чтобы подтвердить, что порт существует, введите следующее из корневого каталога.
ls /dev/ttyACM0
Чтобы установить разрешения на чтение / запись, введите следующее
sudo chmod a+rw /dev/ttyACM0
Вот что сработало для меня:
- Удалите версию с Apt, она не работает должным образом (
sudo apt uninstall arduino; sudo apt autoremove
) - Установите версию с сайта Arduino
sudo apt install avrdude
так как тот, что на сайте не включает егоsudo usermod -a -G dialout [your_username]
так как тот с сайта не делает это автоматически
И теперь все снова работает!
Это помогло решить проблему "невозможно открыть последовательный порт" (введите свое имя пользователя Ubuntu вместо
$USER
) после загрузки Arduino из Ubuntu Software.
sudo usermod -a -G dialout $USER
sudo chmod a+rw /dev/ttyUSB0
В сочетании со всеми сообщениями, которые я прочитал, это то, что я сделал, чтобы решить эту проблему, следуя указаниям из этой темы.
В новом терминале я набрал следующее, как показано ниже.
Обратите внимание, что fourplus - это мое имя пользователя.
У меня была такая же проблема, я попытался установить из Ubuntu Store 18.04 и попробовать любое решение здесь. У меня ничего не работало. Так я скачал последний
Я извлек и запустил следующую команду, чтобы установить его: $ sudo ./install.sh
После установки я запустил сценарий, входящий в последнюю версию, выполнив следующее:
$./arduino-linux-setup.sh <имя_пользователя>
Как только сценарий будет завершен, он покажет вам сообщение "Пожалуйста, перебронируйте систему". Я не перезапускал, когда пробовал решения здесь, может быть это то, что должны попробовать следующие пользователи.
Важно: при установке программного обеспечения, выполнив следующие действия, вам необходимо перейти в программное обеспечение Ubuntu и дать разрешение на "доступ к USB-оборудованию напрямую".
Ха Я новичок и сделал несколько ошибок)) Не делай так, как я.
- Во-первых, в моей книге было плохое изображение схемы подключения светодиода. Нашел новый и переподключил провода. Теперь они подключены правильно.
- Потом подключил арудино к компьютеру (это важно).
Затем я выполнил следующие команды:
- ls -l /dev / ttyACM0
- sudo usermod -a -G dialout [my_username]
- sudo chmod a+rw /dev / ttyACM0
Когда я искал плату в меню программы Arduino (Инструменты -> Плата), я не нашел "Arduino/Genuino Uno", просто там была "Arduino Uno" (думаю, все в порядке)
Я вижу, что вопрос уже принят, но ни одно из решений не помогло мне, поэтому у меня есть другое решение. Я установил IDE arduino через установщик программного обеспечения Ubuntu. Что вам нужно сделать, так это.
- Перейдите в IDE arduino в магазине программного обеспечения Ubuntu
- нажмите разрешения
- установить доступ к USB-оборудованию непосредственно на
Для меня сработала смесь двух приведенных выше ответов: во-первых, я не смог найти avrdude, which avrdude
это мне ничего не дало. Итак, мне пришлось переустановить ардуино.
sudo aptinstall --reinstall arduino
Это установило avrdude, и я мог найти его в /usr/bin/avrdude
. Следующим шагом было установить разрешение на чтение / запись для последовательного порта:
sudo chmod a+rw /dev/ttyACM0
Затем я мог загрузить скетч на свой ардуино!
Обновление 2 OP для создания скрипта отлично решает проблему. Проверьте это на GitHub.
2048@machine:~/Downloads/iniarduino-master$ iniarduino
[sudo] password for vipulgupta2048:
Arduino connected!
Checking if 2048 is part of dialout and tty groups
2048 added to dialout group
2048 added to tty group
Password required to change permissions of /dev/ttyACM0
Permissions to /dev/ttyACM0 changed to a+rw
Reloading UDEV Rules
UDEV Rules reloaded without the need to restart
All Done!
Для меня любой
chmod
а также
udev
правило не сработало.
Только принуждение
avrdude
для запуска с правами root:
$ sudo chmod u+s /opt/arduino/hardware/tools/avr/bin/avrdude
У меня есть решение.
Найдите свой порт, к которому подключен Arduino (например, мой был
/dev/ttyUSB0
). Вы можете найти это в сообщении об ошибке в Arduino IDE.Откройте терминал (Ctrl+Alt+T).
В терминале запустите:
sudo chmod 777 /dev/ttyUSB0
Приведенная выше команда устанавливает необходимые разрешения.