Linux ttyusb0 отказано в доступе
Хотя есть несколько решений, ни одно из них мне не подходит.
Я следовал этим инструкциям на сайте Arduino.
Затем я попробовал это на Arduino Stack Exchange, который должен работать в тех случаях, когда первое решение не сработало. Ответ говорит, что мы должны создать несколько правил /etc/udev/ruled.d/ дорожка.
Но никто из них не работал для меня.
Я также проверил Arduino в Windows 10, чтобы увидеть, была ли это аппаратная проблема, но она работала нормально.
У кого-нибудь есть еще идеи как решить эту проблему?
ОБНОВИТЬ:
- Мое имя пользователя, sergio, является частью обеих групп (tty и dialout);
- Я вышел из системы и вернулся, как объясняет официальный учебник Arduino;
- В Arduino IDE правильные конфигурации: Arduino UNO и ttyACM0
Это вывод ll /dev/ttyACM0 после запуска обучающих команд:
ОБНОВЛЕНИЕ 2:
4 ответа
Переустановите ваш arduino, установленный из программного центра Ubuntu:
Переустановка необходима, так как ваш which avrdude Команда согласно вашему комментарию ничего не возвращает, но должна быть /usr/bin/avrdude , Проверьте еще раз:
Запустите вашу Arduino IDE после переустановки и закройте ее.
Проверьте вашу конфигурацию arduino. открыто /home/sergio/.arduino/preferences.txt файл и проверьте там serial.port вариант. Попробуйте изменить это на /dev/ttyACM0 , Откройте этот файл:
и применить соответствующие изменения, т.е. вариант должен выглядеть
Перезагрузите компьютер после этого.
Чтобы подтвердить, что порт существует, введите следующее из корневого каталога.
Чтобы установить разрешения на чтение / запись, введите следующее
Это помогло решить проблему "невозможно открыть последовательный порт" (введите свое имя пользователя Ubuntu вместо $USER ) после загрузки Arduino из Ubuntu Software.
Ха Я новичок и сделал несколько ошибок)) Не делай так, как я.
- Во-первых, в моей книге было плохое изображение схемы подключения светодиода. Нашел новый и переподключил провода. Теперь они подключены правильно.
- Потом подключил арудино к компьютеру (это важно).
Затем я выполнил следующие команды:
- 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-оборудованию непосредственно на
Вот что сработало для меня:
- Удалите версию с Apt, она не работает должным образом ( sudo apt uninstall arduino; sudo apt autoremove )
- Установите версию с сайта Arduino
- sudo apt install avrdude так как тот, что на сайте не включает его
- sudo usermod -a -G dialout [your_username] так как тот с сайта не делает это автоматически
И теперь все снова работает!
Это установило avrdude, и я мог найти его в /usr/bin/avrdude . Следующим шагом было установить разрешение на чтение / запись для последовательного порта:
Затем я мог загрузить скетч на свой ардуино!
У меня была такая же проблема, я попытался установить из Ubuntu Store 18.04 и попробовать любое решение здесь. У меня ничего не работало. Так я скачал последний
Я извлек и запустил следующую команду, чтобы установить его: $ sudo ./install.sh
После установки я запустил сценарий, входящий в последнюю версию, выполнив следующее:
Важно: при установке программного обеспечения, выполнив следующие действия, вам необходимо перейти в программное обеспечение Ubuntu и дать разрешение на "доступ к USB-оборудованию напрямую".
Новые пользователи довольно часто сталкиваются с такой ошибкой, как ошибка отказано в доступе Linux. Если вы только что перешли с Windows, то можете еще не знать всех особенностей операционной системы Linux и почему возникает такая проблема.
В этой статье мы рассмотрим причины ошибки access denied linux, а также как ее обойти.
Ошибка отказано в доступе Linux
Наиболее часто такая ошибка встречается, в таких случаях:
- Вы пытаетесь выполнить команду в терминале;
- Вы пытаетесь примонтировать внешний носитель с помощью файлового менеджера;
- Вы пытаетесь запустить системный сервис и находите такую ошибку в логе.
В операционной системе Linux действует сложная система полномочий. Настройки доступа для каждого файла настраиваются тремя параметрами - чтение, запись и выполнение. Эти параметры устанавливаются для трех категорий - владелец файла, группа файла и все остальные пользователи.
Если вы попытаетесь получить доступ, например, открыть для чтения файл, к которому вам доступ не разрешен, то вы получите такую ошибку. А учитывая что все устройства, сокеты, и другие системные объекты - это тоже файлы, то вы будете получать такую ошибку всегда, когда попытаетесь сделать то, что вам не позволено. Самый простой способ обойти такой запрет - это выполнять нужную команду от имени суперпользователя.
Многие программы проверяют после запуска от какого пользователя они запущены и говорят, что их нужно запускать от имени суперпользователя, но так ведут себя не все. Например, команда ls вернет ошибку отказано в доступе linux если вы попытаетесь посмотреть содержимое каталога суперпользователя:
Но эта же команда нормально отработает нормально при использовании команды sudo:
Другой случай, это если вы обнаруживаете проблему в логах какого-либо системного сервиса, например, веб-сервера Apache. Казалось бы, должно было быть все верно, потому что запуск и так выполняется от имени суперпользователя.
Но нет, сервисы не только запускаются от имени суперпользователя, но потом, для увеличения безопасности они меняют пользователя на обычного, не привелигированного. Например, Apache работает от имени пользователя apache или www-data. Уже от имени этого пользователя программа пытается получить доступ к файловой системе.
Если нужная папка не доступна этому пользователю для чтения то вы получите ошибку access denied linux. Обычно, в логе программа сообщает какая папка или файл нужен когда происходит ошибка.
Вам просто нужно поменять на него права с помощью утилиты chmod или изменить владельца chown. Причем, нужно чтобы ко всем подкаталогам на пути к целевому каталогу был доступ у программы. Например, нельзя так чтобы права на чтение /home/ не было, а на /home/user/ было. Так не пройдет.
Права разрешающие чтение и запись владельцу и только чтение для группы и остальных вставляются командой:
sudo chmod 755 /путь/к/файлу
Или для смены прав для всех файлов в каталоге и самого каталога:
sudo chmod -R 755 /путь/к/каталогу
Или вы можете изменить владельца, обычно, это более безопасная и распространенная практика:
sudo chown пользователь /путь/к/файлу
$ sudo chown -R пользователь /путь/к/каталогу
Имя пользователя, от имени которого работает сервис вы можете посмотреть с помощью команды:
sudo ps aux | grep имя_сервиса
После того как вы установите правильные права, ошибка отказано в доступе linux больше не будет встречаться.
Выводы
В этой статье мы рассмотрели что делать если случается ошибка нет доступа linux, а также почему она возникает. Надеюсь, эта информация была полезной для вас. Если остались вопросы, спрашивайте в комментариях!
Читайте также: