Usando socat para conexão serial bruta
O objetivo é conectar-se a umembedded
dispositivo usandoserial
interface. Até agora, eu usei:
stty -F /dev/ttyS2 115200 cs8 ixoff
socat readline,history=/etc/socat.history /dev/ttyS2,raw,echo=0
E funciona excelente, mas descobri que existem algumas opções durantesystem boot
que exigem que você pressione uma única tecla sem pressionarenter
ereadline
falha lá. Então, minha ideia era vincular ottyS2
paracons0
, mas descobri vários problemas, como a incapacidade de sair (ctr+c
, ctr+q
ctr+]
e até mesmoesc
não funciona),backspace
edelete
não funcionam, as letras são digitadas duas vezes etc. Então, após algumas tentativas e erros, eu vim com isso:
socat /dev/cons0,raw,echo=0,crnl /dev/ttyS2,raw,echo=0,escape=0x03,crnl
raw
nos dois lados permite uma únicakey press
para acionar umboot option
echo=0
nos dois lados evitakey press
duplicaçãocrnl
nos dois lados evitarenter
key press
duplicaçãoescape=0x03
me permitequit
a coisa pressionandoctr+c
O problema é que, quando parei, meucons0
está tudo fodido, como se de alguma forma preservasseraw,echo=0,crnl
configurações. Sei que esse problema provavelmente é muito específico para o meu cenário, mas só preciso de uma maneira simples de enviar pressionamentos de teclas para serial, como faria computty
(que não está disponível na minha plataforma). estou usandosocat
porque é extremamente leve, não requer bibliotecas adicionais e porque os comandos mostrados fazem parte do script maior que usaexpect
.
Todas as idéias e sugestões são muito apreciadas.