Терминал последовательного порта> Невозможно открыть /dev/ttyS0: В доступе отказано
У меня была Windows XP на этой коробке, и она не удалась. Думая, что это поврежденная ОС, я попытался переустановить ее, но она не удалась. Но потом я попытался установить Ubuntu и не смог запустить его с USB или с HD.
Сделал тест mem и обнаружил, что один из моих 512 МБ стиков (имел 2) не удался. Я удалил плохую и смог установить Ubuntu, но она была вялой.
Я пытался быстро настроить пакетное радио на ураган "Сэнди". Загрузил терминал последовательного порта и смог его использовать, но система продолжала блокироваться. Поэтому установил Xubuntu рядом с ним, планируя на следующий день закончиться, чтобы получить оперативную память для коробки. Включите Xubuntu, и теперь я получаю следующую ошибку с терминалом последовательного порта:
Cannot open /dev/ttyS0: Permission denied
Я хотел бы иметь возможность использовать терминал последовательного порта или эквивалент с Xubuntu, чтобы я мог использовать свой пакетный терминал kpc3 и подключиться к com-порту на задней панели моего компьютера.
Есть идеи?
11 ответов
The tty devices belong to the "dialout" group, I suspect you are not a member of this group and hence are denied access to /dev/ttyS0, so you need to add yourself to that group.
First check if you are a member of that group:
groups ${USER}
..это будет список всех групп, к которым вы принадлежите. Если вы не принадлежите к группе dialout, добавьте себя, например:
sudo gpasswd --add ${USER} dialout
Затем вам нужно выйти из системы и снова войти в нее, чтобы она была эффективной. Тогда посмотрите, решит ли это вашу проблему.
Единственное решение, которое работает для меня, это: (каждый раз, когда я загружаю машину)
sudo chmod 666 /dev/ttys0
Это действительно необходимо исправить во время установки. Я на 15.10 и попробовал 16.04 LTS, все еще там. Похоже, такое простое исправление.
Более старые версии 10.04LTS не имели этой проблемы.
В Ubuntu 18.04 я исправил эту проблему с помощью следующих команд:
sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER
И после этого перезагрузите компьютер.
Если у вас все еще есть проблемы, попробуйте отладить с помощью:
strace -ff <COMMAND> > strace.txt 2>&1
И искать "отказано" в страсе.
Вы можете просто использовать эту команду:
sudo adduser $USER dialout
Это добавит текущего пользователя в группу дозвона. Войти и выйти, чтобы вступить в силу.
Ответ прост. Вам нужно добавить своего пользователя в две группы, чтобы иметь доступ к USB-портам. Эти группы dialout
а также tty
:
sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>
замещать <user>
с фактическим именем пользователя в этих командах.
Посмотрел различные форумы и, похоже, это ошибка, связанная с разрешениями. Вот как я обошёл проблему (длинная версия). Вам понадобится ОБА 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
В моем случае мне нужно было снова нажать клавишу возврата, чтобы увидеть ожидаемое приглашение, в других случаях может потребоваться указать скорость.
Вот решение:
Я только что обновил свою операционную систему до 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. игнорируйте центр программного обеспечения в это время, пока он не будет восстановлен. Да, ПРОГРАММНЫЙ ЦЕНТР не допускает разрешения на последовательный порт во время установки и навсегда после.
Задача решена!
У меня была такая же проблема, и я попробовал все советы отсюда. Единственное, что у меня сработало, - это удаление среды IDE, которую я загрузил из программного обеспечения Ubuntu, и повторная установка программного обеспечения с сайта Arduino.
Для моего конкретного устройства(/dev/ttyTHS1
, что привело меня сюда после поиска), мне пришлось как добавить пользователя в группу, так и изменить группу, чтобы она имела доступ на чтение и запись (ранее у нее был только доступ на запись).
Команды, которые я запускал, были
» ls -l /dev/ttyTHS1
crw--w---- 1 root tty 238, 1 Nov 27 2023 /dev/ttyTHS1
» sudo usermod -a -G tty $USER
» sudo chmod g+rw /dev/ttyTHS1
» ls -l /dev/ttyTHS1
crw-rw---- 1 root tty 238, 1 Nov 27 2023 /dev/ttyTHS1
В моем случае проблема все еще существует, даже когда я добавляю своего пользователя в группу, используя:
Поэтому, когда я использую:
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
и проблема была исправлена.
И если все вышеперечисленное не решает проблему, следует:
sudo chown $USER: /dev/ttyS0
или же
sudo chown :dialout /dev/ttyS0