Terminal de porta serial> Não é possível abrir / dev / ttyS0: permissão negada


19

Eu tinha o Windows XP nesta caixa e ele falhou. Pensando que ele estava corrompido, tentei reinstalar e falhou. Mas tentei instalar o Ubuntu e não consegui executá-lo a partir do USB ou do HD.

Fiz o teste do mem e descobri que um dos meus sticks de 512 MB (tinha 2) falhou. Eu removi o ruim e pude instalar o Ubuntu, mas estava lento.

Eu estava tentando configurar rapidamente o meu pacote de rádio para o furacão Sandy. Baixou o Terminal de porta serial e conseguiu obter algum uso, mas o sistema continuou travando. Então instalei o Xubuntu ao lado dele, pensando em acabar no dia seguinte para obter RAM para a caixa. Coloque o Xubuntu e agora estou recebendo o seguinte erro no terminal da porta serial .:

Cannot open /dev/ttyS0: Permission denied

Gostaria de poder usar o terminal da porta serial ou equivalente ao Xubuntu para poder usar o meu terminal de pacotes kpc3, conectar-me à porta com na parte traseira do meu computador.

Alguma ideia?

Respostas:


39

Os dispositivos tty pertencem ao grupo "discagem", desconfio que você não é um membro desse grupo e, portanto, não tem acesso ao / dev / ttyS0, portanto, você precisa se adicionar a esse grupo.

Primeiro verifique se você é um membro desse grupo:

groups ${USER}

..isto listará todos os grupos aos quais você pertence. Se você não pertence ao grupo de discagem, adicione-se a ele, por exemplo:

sudo gpasswd --add ${USER} dialout

Você precisa sair e fazer login novamente para que seja eficaz. Então veja se isso resolve o seu problema.


Mesmo estando no grupo de discagem, o usuário com o ID 1000 não pode abrir a porta serial para ler. Após a reinicialização. Mas, quando eu uso o sudo para o mesmo executável, ele é capaz de abrir /dev/ttyS0. Qual o motivo possível?
Tomilov Anatoliy

2
@Orient Eu tive o mesmo problema e foi porque o grupo dialoutnão estava definido. A execução newgrp dialoutcorrigiu o problema.
TheGr8_Nik

@ TheGr8_Nik Obrigado. Sua solução funcionou no Ubuntu 16.04. Nenhuma reinicialização envolvida. Por padrão, este sistema não tinha o nome do grupo dialout; verificado via groupscomando. Mesmo depois de anexar o nome de usuário ao dialoutgrupo via comando sudo usermod -a username -G dialout. Após o uso newgrp dialout, este comando esptool.py -p /dev/ttyUSB0 flash_idfuncionou.
Sun Bear

11

A única solução que funciona para mim é: (toda vez que eu inicializo a máquina)

sudo chmod 666 /dev/ttys0

Ele realmente precisa ser corrigido no momento da instalação. Estou em 15.10 e tentei 16.04 LTS, ainda o mesmo lá. Parece uma solução tão simples.

As versões anteriores 10.04LTS não tinham esse problema.


2
esse trabalho com raspberry pi 3 mas quando reiniciei perdi as permissões.
perfil completo de J261

1
Adicionar permissões ao meu nome de usuário para discagem funcionou bem, correção bastante simples.
DRJ101 16/09

6

Você pode apenas usar este comando:

sudo adduser $USER dialout

Isso adicionará o usuário atual ao grupo de discagem. Faça o login e efetue o login.


4

No Ubuntu 18.04, corrigi esse problema com os seguintes comandos:

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

E depois disso, reinicie.

Se você ainda tiver problemas, tente depurar com:

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

E procure por "negado" no traço.


3

Deu uma olhada em vários fóruns e parece ser um bug relacionado a permissões. Veja como eu resolvi o problema (versão longa). Você precisará de AMBOS cue setserialpacotes instalados.

Em três guias de terminal, saída monitorada de # tail -f /var/log/messages É assim que sabemos se temos /dev/ttyUSB0ou não.

Na segunda guia, basta executar um loop ls -lneste dispositivo para ver suas permissões e seu ID de grupo é 'discagem'. Este é o bit crítico. Por alguma razão, seu usuário DEVE usar esse GID para fazer cuisso, então ...

Na terceira guia, como root, fez # newgrp dialout(para corresponder ao GID da discagem). Testado com # touch /tmp/anything... fazer ls -lneste arquivo mostra que ele é criado pela raiz com um grupo de discagem, por isso estamos prontos para ... # cu -l /dev/ttyUSB0 No meu caso, eu precisava pressionar return novamente para ver o prompt esperado; em outros casos, a velocidade pode precisar a definir.


Esta foi a peça real que me ajudou: Por alguma razão, o usuário deve utilizar este GID para fazer o cu, então ... . Graças um milhão.
ΤΖΩΤΖΙΟΥ

1

Aqui está a solução:

Acabei de atualizar meu sistema operacional para o Ubuntu 18. normalmente instalava o arduino IDE através da visão da web do Arduino, porque o fornecido pelo portal Ubuntu Software era sempre uma versão mais antiga e queria os mais novos recursos e suporte à placa. No entanto, desde que eu instalei o sistema operacional mais novo, achei que o centro oficial de software do ubuntu teria a versão mais recente do IDE listada, e ele fez.

Agora para a parte suculenta! Tanto meu laptop quanto minha área de trabalho tiveram os mesmos problemas ao acessar as portas seriais. eu tinha feito o usuário fazer parte do grupo dial-up e definido as permissões para a porta serial, mas sempre tive que sair e fazer logon novamente, fazê-lo novamente toda vez que reiniciava! NÃO TEM GRAÇA!.

Desta vez, não funcionou. Mesmo no centro de software, a opção de permissões para o software mostra a porta serial "desconectada". nenhuma opção para permitir permissão à porta, mesmo após todas as permissões terem sido concedidas manualmente através da janela do terminal usando o sudo.

Decidi desinstalar o Arduino IDE do centro de software e instalá-lo a partir da visão da web, então fiz. Desta vez, li os arquivos de instalação, apenas para ver se ele menciona permissões para a porta serial ou não, ***** é claro que sim! ****** todas as portas são definidas com permissões de acesso total, acesso do usuário em geral. Acontece que esta foi a resposta. depois de executar o arquivo arduino-linux-setup.sh fornecido pelo arduino, todos os problemas da porta serial foram resolvidos. O seguinte é um trecho do arduino-linux-setup.sharquivo;

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

}

assim você vê até o KERNEL é efetuado. Minha sugestão:

instalar a partir do site do arduino ide. ignore o centro de software neste momento, até que seja reparado. Sim, o SOFTWARE CENTER não está permitindo permissões para a porta serial durante a instalação e para sempre.

Problema resolvido!


0

No meu caso, o problema ainda existe, mesmo quando adiciono meu usuário ao grupo usando:

Então, quando eu uso:

sudo gpasswd --add ${USER} dialout

e quando digito: groupsobtive este resultado:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Mas quando digito, id -Gn ilyahooa putput é:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Eu sei que há um problema que eu não sei o que é honestamente.

Para obter uma solução, digitei

newgrp ilyahoo

e o problema foi resolvido.


Bem-vindo ilyahoo ao askubuntu! Tente formatar a postagem de acordo com nossa linha de guia. Tente formatar a saída de maneira mais legível. Graças
abu_bua

1
@abu_bua, use a formatação de código para a saída do comando, não a formatação de aspas.
Muru

0

A resposta é simples. Você precisa adicionar seu usuário a dois grupos para ter acesso às portas usb. Esses grupos são dialoute tty:

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

Substitua <user>pelo nome de usuário real nesses comandos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.