При загрузке кода в 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

В сочетании со всеми сообщениями, которые я прочитал, это то, что я сделал, чтобы решить эту проблему, следуя указаниям из этой темы.

В новом терминале я набрал следующее, как показано ниже.

https://ask-ubuntu.ru/images/5c39e76298639ac790d3dab9915f32a20157efc4.png

Обратите внимание, что fourplus - это мое имя пользователя.

У меня была такая же проблема, я попытался установить из Ubuntu Store 18.04 и попробовать любое решение здесь. У меня ничего не работало. Так я скачал последний

Я извлек и запустил следующую команду, чтобы установить его: $ sudo ./install.sh

После установки я запустил сценарий, входящий в последнюю версию, выполнив следующее:

$./arduino-linux-setup.sh <имя_пользователя>

Как только сценарий будет завершен, он покажет вам сообщение "Пожалуйста, перебронируйте систему". Я не перезапускал, когда пробовал решения здесь, может быть это то, что должны попробовать следующие пользователи.

Важно: при установке программного обеспечения, выполнив следующие действия, вам необходимо перейти в программное обеспечение Ubuntu и дать разрешение на "доступ к USB-оборудованию напрямую".

Ха Я новичок и сделал несколько ошибок)) Не делай так, как я.

  1. Во-первых, в моей книге было плохое изображение схемы подключения светодиода. Нашел новый и переподключил провода. Теперь они подключены правильно.
  2. Потом подключил арудино к компьютеру (это важно).
  3. Затем я выполнил следующие команды:

    • 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. Что вам нужно сделать, так это.

  1. Перейдите в IDE arduino в магазине программного обеспечения Ubuntu
  2. нажмите разрешения
  3. установить доступ к 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

У меня есть решение.

  1. Найдите свой порт, к которому подключен Arduino (например, мой был /dev/ttyUSB0). Вы можете найти это в сообщении об ошибке в Arduino IDE.

  2. Откройте терминал (Ctrl+Alt+T).

  3. В терминале запустите:

    sudo chmod 777 /dev/ttyUSB0
    

    Приведенная выше команда устанавливает необходимые разрешения.

Другие вопросы по тегам