Alterando permissões na porta serial


54

Estou usando o IDE do Arduino no Ubuntu e estou tendo problemas com a porta serial. Funcionou no passado, mas por razões que podem ser desnecessárias, senti a necessidade de alterar a propriedade de alguns dos arquivos da propriedade raiz para a propriedade dos meus usuários.

Isso fez o IDE funcionar corretamente, mas perdi a capacidade de usar a porta serial correta. Na pasta dev, a porta que eu preciso está listada como permissão 166. Alguém (que não está mais na área para me ajudar) trocou as permissões para 666, o que fez tudo funcionar gloriosamente.

No entanto, ele retornou assim que reiniciei o computador e, se agora tentar usar o comando:

sudo chmod 666 ttyACM0

nada acontece. Nenhuma mensagem de erro, mas nenhuma permissão também é alterada.

Como posso mudar isso e como posso mudar permanentemente.

Peço desculpas se esta pergunta é muito simplista ou incerta, eu sou um ubuntu noob e não invejaria o feedback!


11
sudo chmod 666 / dev / ttyACM0 Esta foi a única sugestão nesta página que funcionou no meu ambiente ativo 14.04 beta2. Obrigado!

Respostas:


76

O problema com as permissões para /dev/ttyACM0pode ser resolvido permanentemente adicionando-se ao dialoutgrupo. Você precisará fazer logout e logon novamente antes que a alteração do grupo seja reconhecida.

Você pode fazer isso com sudo usermod -a -G dialout $USER


Eu aprendi sobre isso quando o Arduino IDE pediu para dar ao root para se adicionar ao "grupo Dailout". Agora eu sei o que é isso.
precisa saber é o seguinte

Acabei de comprar um adaptador CEC USB Pulse-Eight para uso com minha nova TV e descobri que ele não funcionava inicialmente com o Kodi no Ubuntu. Após verificar o log de falhas e pesquisar a mensagem de erro "ERRO: CecLogMessage - erro ao abrir a porta serial '/ dev / ttyACM0': permissão negada", esta página surgiu como resultado. Graças a você (e a Don Kirkby, abaixo - também funciona), pude corrigir o problema imediatamente.
Rich.T.

Além disso, a resposta de "user247020" me deu outra solução: Abra a ferramenta GUI "Users and Groups" e torne-se um "Administrador". Isso o adicionará ao grupo "discagem" (por exemplo, "Use Modems"), entre outros.
Rich.T.

usermod -a -G dialout pi funciona ok, depois do sudo chgrp dialout / dev / ttyS0 e funciona bem, mas quando eu reinicio toda a configuração é perdida. Estou no raspberry pi 3
J261 14/09

Adicione qualquer comando que você precise refazer em um script de inicialização. Então bash ou / etc / profile ou init.
Rinzwind 15/09/16

20

Não consegui que a sugestão de Rinzwind funcionasse, porque ela reclamava que a conta do usuário já existia. Em vez disso, usei este comando para adicionar um usuário existente ( terrik) a um grupo existente ( dialout), conforme descrito no Ubuntu Help Wiki .

sudo adduser terrik dialout

Também é útil este comando para listar seus grupos atuais, embora, como Rinzwind diga, você precise fazer logout e logon antes que a porta serial comece a permitir a entrada.

groups terrik

10

Não consegui que a resposta de Terrik funcionasse, mas poderia, se fizesse esse pequeno ajuste no caminho ttyACM0.

sudo chmod 666 /dev/ttyACM0

Postaria como um comentário, mas ainda não tenho privilégios para isso ...


11
As permissões parecem ser redefinidas ao desconectar e reconectar o Arduino.
user1063287

não funciona. :(
Freddy

funciona também. mas requer regra udev para re-autorização no repplugging
pylover

Eu tentei sudo chmod 666 /dev/ttyACM0e não funciona ao iniciar novamente. Alguém tem uma solução?
precisa saber é o seguinte

Hmm peepz isso funciona .... Adicione o comando a um script de inicialização. (/ Dev seja recriado no boot, então você precisa refazer este comando cada boot)
Rinzwind

10

Outra possibilidade é criar um arquivo de regras no /etc/udev/rules.d/diretório Eu tive um problema semelhante e criei o 50-myusb.rulesarquivo no diretório acima com este conteúdo:

KERNEL=="ttyACM[0-9]*",MODE="0666"

Observe que isso concederá a qualquer dispositivo conectado às permissões de leitura / gravação do soquete ttyACM. Se você precisar apenas de um dispositivo específico para obter permissões de leitura / gravação, verifique também idVendore idProduct. Você pode encontrá-los executando o lsusbcomando duas vezes, uma vez sem o dispositivo conectado e uma vez quando está conectado, e observe a linha adicional na saída. Lá você verá algo parecido Bus 003 Device 005: ID ffff:0005. Nesse caso idVendor = ffffe idProduct = 0005. O seu será diferente. Em seguida, modifique o arquivo de regras para:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

Agora, apenas este dispositivo obtém as permissões. Leia isso para saber mais sobre como escrever regras do udev.


2

Tente entrar em Sistema / Usuários e Grupos e marque a caixa com seu nome de usuário no Grupo TTY.


[Errno 13] Permission denied: '/dev/ttyACM0'. Assim como o ttygrupo, o usuário também está no dialoutgrupo. Linux Mint 17.1.
usar o seguinte comando

11
@ user1063287 Trysudo chmod a+rw /dev/ttyACM0
Vladimir S. #
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.