Термінал послідовного порту> Не вдається відкрити / dev / ttyS0: Дозвіл відхилено


19

У мене на цій скриньці був Windows XP, і він не вдався. Думаючи, що це пошкоджена ОС, я спробував перевстановити, і це не вдалося. Але потім я спробував встановити Ubuntu, і я не міг запустити його з USB чи з HD.

Зробив тест пам’яті і виявив, що одна з моїх паличок 512 Мб (мала 2) не вдалася. Я видалив поганий і зміг встановити Ubuntu, але це було мляво.

Я намагався швидко налаштувати своє пакетне радіо для урагану Сенді. Завантажив послідовний портовий термінал і зміг отримати деяке використання, але система продовжувала фіксуватися. Тож встановив Xubuntu поруч із ним, плануючи закінчити наступного дня, щоб отримати оперативну пам’ять для коробки. Увімкніть Xubuntu, і я отримую таку помилку з терміналом послідовного порту .:

Cannot open /dev/ttyS0: Permission denied

Я хотів би мати можливість використовувати термінал послідовного порту або його еквівалент з Xubuntu, щоб я міг використовувати свій kpc3 пакетний термінал, підключитися до компорту на задній панелі комп'ютера.

Будь-які ідеї?

Відповіді:


39

Tty пристрої належать до групи "dialout", я підозрюю, що ви не є членом цієї групи, а значить, вам заборонено доступ до / dev / ttyS0, тому вам потрібно додати себе до цієї групи.

Спочатку перевірте, чи є ви членом цієї групи:

groups ${USER}

..це список усіх груп, до яких ви належите. Якщо ви не належите до групи діалотів, тоді додайте себе, наприклад:

sudo gpasswd --add ${USER} dialout

Потім вам потрібно вийти з системи та знову увійти в систему, щоб воно стало ефективним. Потім подивіться, чи вирішує вона вашу проблему.


Навіть перебуваючи в діалоговій групі, користувач з id 1000 не може відкрити послідовний порт для читання. Після перезавантаження. Але, коли я використовую sudo для того ж виконуваного файлу, він може відкриватися /dev/ttyS0. Яка можлива причина?
Томілов Анатолій

3
@Orient У мене була така ж проблема, і це було тому, що група dialoutне була визначена. Запуск newgrp dialoutусунув проблему.
TheGr8_Nik

@ TheGr8_Nik Дякую Ваше рішення працювало на Ubuntu 16.04. Перезавантаження не включається. За замовчуванням ця система не мала назви групи dialout; перевіряється за допомогою groupsкоманди. Навіть після додавання імені користувача до dialoutгрупи за допомогою команди sudo usermod -a username -G dialout. Після використання newgrp dialoutця команда esptool.py -p /dev/ttyUSB0 flash_idспрацювала.
Ведмідь

11

Єдине рішення, яке працює для мене, це: (кожен раз, коли я завантажую машину)

sudo chmod 666 /dev/ttys0

Це дійсно потрібно виправити під час встановлення. Я на 15.10 і спробував 16.04 LTS, все одно там же. Здається, таке просте виправлення.

Старіші версії 10.04LTS не мали цієї проблеми.


2
ця робота з малиновим пі 3, але коли я перезавантажувалась, втрачала дозволи.
J261

1
Додавання дозволу до мого імені користувача для діалоту спрацювало добре, досить просте виправлення.
DRJ101

6

Ви можете просто скористатися цією командою:

sudo adduser $USER dialout

Це додасть поточного користувача до діалогової групи. Увійдіть і вийдіть з нього, щоб набути чинності.


4

У Ubuntu 18.04 я вирішив цю проблему такими командами:

sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER

А після цього перезавантажте.

Якщо у вас все ще виникають проблеми, спробуйте налагодити:

strace -ff <COMMAND> > strace.txt 2>&1

І шукайте "відмовленого" в прожарці.


3

Подивився на різні форуми, і здається, це помилка, пов’язана з дозволами. Ось як я вирішив проблему (довга версія). Вам потрібні БУТИ cuта setserialвстановлені пакети.

У трьох термінальних вкладок, моніторинг висновок , # tail -f /var/log/messages що це , як ми знаємо , якщо у нас є /dev/ttyUSB0чи ні.

На другій вкладці просто ls -lзапустіть цикл для цього пристрою, щоб побачити його дозволи, і його ідентифікатор групи "діалот". ЦЕ є критичним бітом. Чомусь ваш користувач ПОВИНЕН використовувати цей GID, щоб зробити це cu, тому ...

На третій вкладці, як root, зробив # newgrp dialout(щоб відповідати GID діалоту). Перевірений з # touch /tmp/anything... ls -lу цьому файлі показує, що він створений корінцем із діалоговою групою, тому ми готові ... # cu -l /dev/ttyUSB0 У моєму випадку мені потрібно було знову повернутися, щоб побачити очікуване підказку, в інших випадках може знадобитися швидкість уточнити.


Це була фактична частина , яка допомогла мені: З якої - то причини, ваш користувач повинен використовувати цю GID , щоб зробити куб, так що ... . Завдяки мільйонів.
ΤΖΩΤΖΙΟΥ

1

Ось рішення:

Я щойно оновив свою операційну систему до Ubuntu 18. Зазвичай я встановив би ардуїно IDE через веб-приціл Arduino, тому що той, який надається через портал програмного забезпечення Ubuntu, завжди був старшою версією, і я хотів новітні функції та підтримку плати. Однак, оскільки я тільки що встановив новітню операційну систему, я зрозумів, що в офіційному центрі програмного забезпечення від ubuntu буде найновіша версія переліченої IDE, і це було.

Тепер до соковитої частини! І мій ноутбук, і мій робочий стіл мали однакові проблеми з доступом до послідовних портів. Я зробив частину make user частиною групи, що набирається, і встановив дозволи для послідовного порту, але завжди повинен був увійти, потім знову, робити це все знову, коли я перезавантажуюсь! НЕ СМІШНО!.

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

Я вирішив видалити Arduino IDE з програмного центру та встановити його з веб-зору, так що я і зробив. Цього разу я прочитав файли встановлення, просто щоб побачити, чи згадується він дозволів на послідовний порт чи ні, ***** звичайно, це було! ****** всі порти встановлені з дозволом повного доступу, користувачем доступ через дошку. Виявляється, це була відповідь. після запуску файлу arduino-linux-setup.sh, наданого arduino, всі проблеми послідовного порту були вирішені. далі - уривок із arduino-linux-setup.shфайлу;

echo ""
echo "******* Add User to dialout,tty, uucp, plugdev groups *******"
echo ""

sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo groupadd plugdev
sudo usermod -a -G plugdev $1


acmrules () {

    echo ""
    echo "# Setting serial port rules"
    echo ""

    cat <<EOF
    "KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   "KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   EOF

}

тож ви бачите, що навіть КЕРНЕЛ здійснився. Моя пропозиція:

встановити з веб-сайту arduino ide. в цей час ігноруйте програмний центр, поки його не відновлять. Так, ЦЕНТР ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ не дозволяє отримати дозвіл на послідовний порт під час встановлення та назавжди після нього.

Проблема вирішена!


0

У моєму випадку проблема все ще існує, навіть коли я додаю свого користувача до групи, використовуючи:

Тож коли я використовую:

sudo gpasswd --add ${USER} dialout

і коли я набираю: groupsя отримав такий результат:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Але коли я id -Gn ilyahooнабираю путпут, це:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Я знаю, що є проблема, що я не знаю, що це чесно.

Щоб отримати рішення, я просто набрав

newgrp ilyahoo

і проблема була виправлена.


Ласкаво просимо ilyahoo до askubuntu! Будь ласка, спробуйте відформатувати публікацію відповідно до нашої інструкції. Спробуйте відформатувати результат більш читабельним чином. Спасибі
abu_bua

1
@abu_bua, будь ласка, використовуйте форматування коду для виведення команд, а не форматування цитат.
муру

0

Відповідь проста. Потрібно додати свого користувача до двох груп, щоб мати доступ до портів usb. Ці групи є dialoutі tty:

sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>

Замініть <user>фактичним ім'ям користувача в цих командах.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.