Зміна дозволів на послідовний порт


54

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

Це змусило IDE працювати правильно, але я втратив можливість використовувати правильний послідовний порт. У папці dev потрібний мені порт потрібний дозвіл 166. Хтось (хто вже не в цій області, щоб мені допомогти) поміняв дозволи на 666, завдяки чому все це чудово працювало.

Однак він повернувся назад, як тільки я перезапустив комп'ютер, і якщо я зараз спробую використовувати команду:

sudo chmod 666 ttyACM0

нічого не відбувається. Немає повідомлень про помилки, але жодна зміна дозволу також не змінюється.

Як я можу це змінити і як змусити його постійно змінюватись.

Прошу вибачення, якщо це питання надто спрощене або неясне, я нобу ubuntu, і я б не сприймав відгуки!


1
sudo chmod 666 / dev / ttyACM0 Це була єдина пропозиція на цій сторінці, яка працювала на моєму середовищі 14.04 бета-версія 2. Дякую!

Відповіді:


76

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

Ви можете це зробити за допомогою sudo usermod -a -G dialout $USER


Я дізнався про це, коли Arduino IDE попросив дати root, щоб додати себе до "групи Dailout". Тепер я знаю, що це таке.
Ufoguy

Я щойно придбав USB-адаптер CEC Pulse-Eight для використання з новим телевізором і виявив, що спочатку він не працював з Kodi в Ubuntu. Після перевірки журналу аварійного завершення та гуглювання повідомлення про помилку "ПОМИЛКА: CecLogMessage - помилка відкриття послідовного порту '/ dev / ttyACM0': Дозвіл відхилено", в результаті з'явилася ця сторінка. Завдяки вам (і дону Кіркбі, нижче - це теж працює), я зміг негайно усунути проблему.
Річ.Т.

Також відповідь від "user247020" дав мені ще одне рішення: Відкрийте інструмент GUI "Користувачі та групи" та зробіть себе "Адміністратором". Це додасть вас до групи "діалоту" (тобто "Використовувати модеми") серед інших.
Річ.Т.

usermod -a -G dialout pi працює нормально, після sudo chgrp dialout / dev / ttyS0 і добре працює, але коли я перезавантажую все конфігурацію втрачається. Я на малиновому пі 3
J261

Додайте будь-яку команду, яку потрібно повторити, до сценарію запуску. Отже, bash або / etc / profile або init.
Rinzwind

20

Я не зміг отримати пропозицію Rinzwind працювати, тому що він скаржився, що обліковий запис користувача вже існує. Натомість я використав цю команду, щоб додати існуючого користувача ( terrik) до наявної групи ( dialout), як описано у довідці Wiki Ubuntu .

sudo adduser terrik dialout

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

groups terrik

10

Я не міг зреагувати на відповідь Терріка , але міг би, якби змінив шлях до цього ttyACM0.

sudo chmod 666 /dev/ttyACM0

Опублікував би як коментар, але я ще не маю привілеїв на це ...


1
Здається, дозволи скидаються під час відключення та повторного підключення Arduino назад.
user1063287

не працює. :(
Фредді

це працює, а також. але вимагає правила udev для повторного дозволу на повторне підключення
pylover

Я спробував, sudo chmod 666 /dev/ttyACM0і це не спрацює при повторному запуску. Хтось має рішення?
користувач1063287

Hmm 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.


2

Спробуйте зайти в систему / користувачів та групи та встановити прапорець у вікні свого імені користувача у групі TTY.


[Errno 13] Permission denied: '/dev/ttyACM0'. Крім ttyгрупи, користувач також в dialoutгрупі. Linux Mint 17.1.
користувач1063287

1
@ user1063287 Спробуйтеsudo chmod a+rw /dev/ttyACM0
Vladimir S.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.