Estou tentando me comunicar com um Arduino do Ubuntu 12.04. Ao conectar o cabo USB, a porta serial do arduino ocorre como /dev/ttyUSB0. Quando tento me conectar a ele usandomoserial, estou recebendo o erro "Não foi possível abrir o dispositivo /dev/ttyUSB0", mas não quando iniciomoserialusandosudo. O que devo configurar para tornar o dispositivo serial acessível como usuário normal não root?
Responder1
Você tem várias opções:
Atribuição automática de ACL
Você provavelmente tem systemd-logind ou ConsoleKit em execução no Ubuntu, que pode configurar automaticamente ACLs em nós de dispositivos com base em qual conta de usuário está atualmente logada no console. Essas ACLs concedem acesso adicional às permissões usuais e podem ser vistas usando getfacl
.
Para usar isso, adicione o seguinte a /etc/udev/rules.d/60-extra-acl.rules
1 :
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess"
( 1 Sim, crie o arquivo. Ele não existe por padrão; todo o diretório é para personalizações administrativas.)
Acesso baseado em grupo
Os dispositivos tty são geralmente legíveis/graváveis por um específicogrupocomo "dialout" ou "uucp". Adicione-se a esse grupo para obter acesso atodosportas seriais:
# gpasswd -a YourUsername dialout
Não se esqueça de sair e fazer login novamente para que as alterações do grupo sejam aplicadas.
Mudanças de permissão ou propriedade
Regras do udev semelhantes às acima também podem ser usadas para definir o proprietário e grupo "principal", bem como as permissões (que é como o grupo padrão foi definido em primeiro lugar). Por exemplo:
KERNEL=="ttyUSB[0-9]*", OWNER="YourUsername"
or: KERNEL=="ttyUSB[0-9]*", GROUP="users", MODE="0660"
or: KERNEL=="ttyUSB[0-9]*", MODE="0666"
Você pode atribuir parâmetros OWNER, GROUP e MODE.
Mudança manual temporária
Para fazer umum tempoalterar, basta usar chmod
e/ou chown
como faria normalmente.
# chown YourUsername /dev/ttyUSB0
or: # chmod a+rw /dev/ttyUSB0