Изменение разрешений на последовательный порт

54

Я использую Arduino IDE в Ubuntu, и у меня проблемы с последовательным портом. В прошлом это работало, но по причинам, которые могут быть излишними, я почувствовал необходимость сменить владельца некоторых файлов с корневого на владение моих пользователей.

Это заставило IDE работать правильно, но я потерял способность использовать правильный последовательный порт. В папке dev нужный мне порт указан как разрешение 166. Кто-то (кто больше не в этом районе, чтобы помочь мне) поменял разрешения на 666, и все это заработало великолепно.

Тем не менее, он вернулся обратно, как только я перезагрузил компьютер, и теперь, если я попытаюсь использовать команду:

sudo chmod 666 ttyACM0

Ничего не произошло. Нет сообщений об ошибках, но нет изменения разрешения.

Как я могу изменить это, и как я могу заставить это измениться навсегда.

Я прошу прощения, если этот вопрос слишком упрощен или неясен, я нуб Ubuntu, и я не буду жалеть обратную связь!

Террик
источник
1
sudo chmod 666 / dev / ttyACM0 Это было единственное предложение на этой странице, которое работало в моей рабочей среде бета-версии 14.04. Спасибо!

Ответы:

76

Проблема с разрешениями /dev/ttyACM0может быть навсегда решена путем добавления себя в dialoutгруппу. Вам придется выйти из системы, а затем снова войти в нее, прежде чем изменение группы будет распознано.

Вы можете сделать это с sudo usermod -a -G dialout $USER

Rinzwind
источник
Я узнал об этом, когда Arduino IDE попросил дать root, чтобы добавить себя в «Dailout group». Теперь я знаю, что это такое.
Уфогуй
Я только что купил USB-CEC-адаптер Pulse-Eight для использования с моим новым телевизором и обнаружил, что он изначально не работал с Kodi в Ubuntu. После проверки журнала сбоев и поиска в Google сообщения об ошибке «ОШИБКА: CecLogMessage - ошибка при открытии последовательного порта / dev / ttyACM0: разрешение запрещено», в результате появилась эта страница. Благодаря вам (и Дону Киркби, ниже - это тоже работает) я смог немедленно решить проблему.
Rich.T.
Кроме того, ответ от «user247020» дал мне другое решение: откройте инструмент GUI «Пользователи и группы» и сделайте себя «администратором». Это добавит вас в группу «dialout» (т. Е. «Use Modems»), среди других.
Rich.T.
usermod -a -G dialout pi работает нормально, после sudo chgrp dialout / dev / ttyS0 и работает хорошо, но при перезагрузке все настройки теряются. Я на
Raspberry
Добавьте любую команду, которую нужно повторить, в сценарий запуска. Так что bash или / etc / profile или init.
Rinzwind
20

Я не смог получить предложение Ринзвинда , потому что он жаловался, что учетная запись пользователя уже существует. Вместо этого я использовал эту команду, чтобы добавить существующего пользователя ( terrik) в существующую группу ( dialout), как описано в справочной вики Ubuntu .

sudo adduser terrik dialout

Также полезна эта команда для вывода списка ваших текущих групп, хотя, как говорит Ринзвинд, вы должны выйти из системы и войти в систему, прежде чем последовательный порт начнет вас впускать.

groups terrik
Дон Киркби
источник
10

Я не мог получить рабочий ответ Террика , но смог бы, если бы сделал эту небольшую корректировку для пути ttyACM0.

sudo chmod 666 /dev/ttyACM0

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

gbmhunter
источник
1
Кажется, что разрешения сбрасываются при отключении и повторном подключении Arduino обратно.
user1063287
не работает. :(
Фредди
это работает, также хорошо. но требует, чтобы правило udev повторно разрешало повторное включение
пиеловер
Я пытался, sudo chmod 666 /dev/ttyACM0и это не работает при запуске снова. у кого-нибудь есть решение?
user1063287
Хм, peepz это работает .... Добавьте команду в скрипт запуска. (/ Dev воссоздается при загрузке, поэтому вам нужно повторять эту команду при каждой загрузке)
Rinzwind
10

Другая возможность - создать файл правил в /etc/udev/rules.d/каталоге. У меня была похожая проблема, и я создал 50-myusb.rulesфайл в указанном выше каталоге с таким содержанием:

KERNEL=="ttyACM[0-9]*",MODE="0666"

Обратите внимание, что это даст любому устройству, подключенному к сокету ttyACM права на чтение / запись. Если вам нужно только определенное устройство для получения разрешений на чтение / запись, вы также должны проверить idVendorи idProduct. Вы можете найти их, выполнив lsusbкоманду дважды: один раз, когда ваше устройство не подключено, и один раз, когда оно подключено, а затем просмотрите дополнительную строку на выходе. Там вы увидите нечто подобное Bus 003 Device 005: ID ffff:0005. В этом случае idVendor = ffffи idProduct = 0005. Твой будет другим. Чем вы изменяете файл правил:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

Теперь только это устройство получает разрешения. Прочтите это, чтобы узнать больше о написании правил udev.

NonStandardModel
источник
2

Попробуйте зайти в раздел «Система / Пользователи» и «Группы» и установить флажок для своего имени пользователя в группе TTY.

user247020
источник
[Errno 13] Permission denied: '/dev/ttyACM0', Как и ttyгруппа, пользователь также находится в dialoutгруппе. Linux Mint 17.1.
user1063287
1
@ user1063287 Попробуйтеsudo chmod a+rw /dev/ttyACM0
Владимир С.