Терминал последовательного порта> Невозможно открыть / dev / ttyS0: В доступе отказано


19

У меня была Windows XP на этой коробке, и она не удалась. Думая, что это поврежденная ОС, я попытался переустановить ее, но она не удалась. Но потом я попытался установить Ubuntu и не смог запустить его с USB или с HD.

Сделал тест mem и обнаружил, что один из моих 512 МБ стиков (имел 2) не удался. Я удалил плохую и смог установить Ubuntu, но она была вялой.

Я пытался быстро настроить пакетное радио на ураган «Сэнди». Загрузил терминал последовательного порта и смог его использовать, но система продолжала блокироваться. Поэтому установил Xubuntu рядом с ним, планируя на следующий день закончиться, чтобы получить оперативную память для коробки. Включите Xubuntu, и теперь я получаю следующую ошибку с терминалом последовательного порта:

Cannot open /dev/ttyS0: Permission denied

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

Есть идеи?

Ответы:


39

Устройства tty принадлежат к группе «dialout», я подозреваю, что вы не являетесь участником этой группы и, следовательно, вам запрещен доступ к / dev / ttyS0, поэтому вам необходимо добавить себя в эту группу.

Сначала проверьте, являетесь ли вы членом этой группы:

groups ${USER}

..это будет список всех групп, к которым вы принадлежите. Если вы не принадлежите к группе dialout, добавьте себя, например:

sudo gpasswd --add ${USER} dialout

Затем вам нужно выйти из системы и снова войти в нее, чтобы она была эффективной. Тогда посмотрите, решит ли это вашу проблему.


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

2
@ Ориент У меня была такая же проблема, потому что группа 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
эта работа с Raspberry Pi 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этого устройства, чтобы увидеть его разрешения и идентификатор группы «dialout». Это критический бит. По какой-то причине ваш пользователь ДОЛЖЕН использовать этот GID cu, чтобы ...

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


Это была фактическая часть , которая помогла мне: По какой - то причине, ваш пользователь должен использовать эту GID , чтобы сделать куб, так что ... . Бесконечно благодарен.
ΤΖΩΤΖΙΟΥ

1

Вот решение:

Я только что обновил свою операционную систему до Ubuntu 18. Обычно я устанавливал IDE arduino через веб-сайт Arduino, потому что тот, что был предоставлен через портал Ubuntu Software, всегда был более старой версией, и мне требовались новейшие функции и поддержка платы. Однако, поскольку я только что установил новейшую операционную систему, я подумал, что в официальном центре программного обеспечения от 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

и проблема была исправлена.


Добро пожаловать Ильяхо в 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.