No root ttyUSB


Por vezes uso um adaptador USB -> COM para me ligar a equipamentos que tem portas RS232 como interface de configuração (routers, switchs, etc). Para me ligar aos equipamentos posso usar o Putty ou o Minicom. Mas para aceder ao equipamento tenho que usar os programas como Root. Ou não? 🙂
Posso contornar a situação e adicionar o meu user ao grupo que tem privilégios nas portas virtuais. Como?

1 – Inserir o adaptador numa porta USB

2 – Descobrir qual a porta que o nosso adaptador está a usar:
papi@pc:~$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 2.603832] fbcon: Remapping primary device, fb1, to tty 1-63
[10482.525933] usb 1-1: pl2303 converter now attached to ttyUSB0

3 – Descobrir qual o grupo que tem privilégios:
stat /dev/ttyUSB0

papi@pc:~$ stat /dev/ttyUSB0
File: /dev/ttyUSB0
Size: 0 Blocks: 0 IO Block: 4096 ficheiro especial de caracteres
Device: 6h/6d Inode: 609 Links: 1 Device type: bc,0
Access: (0660/crw-rw—-) Uid: ( 0/ root) Gid: ( 20/ dialout)
Access: 2018-06-16 15:07:50.845137048 +0100
Modify: 2018-06-16 15:07:52.845137048 +0100
Change: 2018-06-16 15:07:50.845137048 +0100
Birth: –

Então, o grupo com privilégios é o grupo dialout

4 – Adicionar o nosso user ao grupo:
sudo usermod -a -G dialout papi

5 – Fazer logout e já podemos usar o Putty ou o Minicom sem “sudo”

Screen

Há uns tempos falei do putty para aceder por cabo série aos nossos equipamentos. No entanto podemos usar o terminal do nosso Ubuntu e variantes com um programa de seu nome Screen.
Screen é um gestor de sessões virtuais e que permite (entre outras coisas) aceder a um equipamento (routers, switchs, etc) por ligação série.

Começamos por instalar:
$ sudo apt-get update && apt-get install screen

Se o nosso utilizador ainda não pertence ao grupo dialout adicionamos:
$ sudo adduser
utilizador dialout
Assim podemos aceder à ligação série como utilizador sem privilégios (sem o sudu).

Por fim, ligamos ao equipamento que pretendemos:
$ screen /dev/ttyUSB0 9600

onde:
ttyUSB0 é o adaptador USB/RS232 (caso usem uma porta série usem ttyS0)
9600 é o baudrate (pode variar, depende das especificações do equipamento)

Para sair da sessão usamos a sequência de teclas:
Ctrl + A + D

Para voltar à sessão escrevemos:
$ screen -r

Para encerrar a sessão fazemos:
$ screen -X -S [ID da sessão] quit

onde [ID da sessão] pode ser obtida com o comando
$ screen -ls

Screen tem mais vantagens já que permite manter um processo em execução, mesmo que fechemos a consola. Podemos ter várias sessões em simultâneo. Isto pode ser útil em situações em que queremos executar um processo e desligar a sessão sem que esse processo termine. Leiam o manual e bons comandos! 🙂