Я пытаюсь связаться с Arduino из Ubuntu 12.04. При подключении кабеля USB последовательный порт arduino отображается как /dev/ttyUSB0. Когда я пытаюсь подключиться к нему с помощьюmoserial, я получаю сообщение об ошибке «Не удалось открыть устройство /dev/ttyUSB0», но не при запускеmoserialс использованиемсудо. Что мне нужно настроить, чтобы сделать последовательное устройство доступным для обычного пользователя без прав root?
решение1
У вас есть несколько вариантов:
Автоматическое назначение ACL
Скорее всего, у вас в Ubuntu запущены systemd-logind или ConsoleKit, которые могут автоматически настраивать ACL на узлах устройств на основе того, какая учетная запись пользователя в данный момент вошла в консоль. Эти ACL предоставляют доступ в дополнение к обычным разрешениям и могут быть просмотрены с помощью getfacl
.
Чтобы использовать это, добавьте следующее к /etc/udev/rules.d/60-extra-acl.rules
1 :
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess"
( 1 Да, создайте файл. По умолчанию он не существует; весь каталог предназначен для настроек администратора.)
Групповой доступ
Устройства tty обычно доступны для чтения/записи определеннымгруппанапример "dialout" или "uucp". Добавьте себя в эту группу, чтобы получить доступ квсепоследовательные порты:
# gpasswd -a YourUsername dialout
Не забудьте выйти из системы и войти снова, чтобы изменения в группе вступили в силу.
Изменения разрешения или права собственности
Правила udev, аналогичные приведенным выше, также можно использовать для установки "главного" владельца и группы, а также разрешений (именно так изначально была установлена группа по умолчанию). Например:
KERNEL=="ttyUSB[0-9]*", OWNER="YourUsername"
or: KERNEL=="ttyUSB[0-9]*", GROUP="users", MODE="0660"
or: KERNEL=="ttyUSB[0-9]*", MODE="0666"
Вы можете назначить параметры OWNER, GROUP и MODE.
Временное ручное изменение
Чтобы сделатьодин разизмените, просто используйте chmod
и/или chown
как обычно.
# chown YourUsername /dev/ttyUSB0
or: # chmod a+rw /dev/ttyUSB0