Encaminhamento do terminal linux da porta serial para o TCP com socat

6

Estou trabalhando na plataforma ARM embarcada, o Slackware. Estou usando o modem G24 Java, que está configurado para encaminhar dados entre as portas /dev/ttyS1 e /dev/ttyACM0 , então qualquer coisa que entrar em qualquer uma dessas portas é visível na outra. Eu quero definir o terminal em uma dessas portas, /dev/ttyS1 e encaminhar a outra porta, /dev/ACM0 para a porta TCP, para que possa ser acessado de outra máquina via LAN.

Primeiro, eu configurei /etc/inittab :

s2:12345:respawn:/sbin/agetty -L ttyS1 115200 vt100

Então estou tentando usar socat com o seguinte comando:

socat -d -d -d TCP-l:2020,reuseaddr,fork /dev/ttyACM0,raw,nonblock,waitlock="/var/run/ttyACM0.lock",b115200,echo=1,icanon=1,crnl

Então, eu estou tentando se conectar com telnet 192.168.1.222 2020 de outra máquina, o resultado não é muito bom, vejo do lado do cliente que terminal está pedindo login, mas depois há uma resposta imediata que eu não tenho digitado em: ^M^M^M ... etc., o terminal está respondendo que o login está incorreto e, em seguida, novamente a mesma coisa.

Eu sei que ^M significa sinal de retorno de carro, mas não tenho certeza de como corrigir esse problema. Eu tentei diferentes configurações de socat, mas nenhum deles funcionou corretamente.

    
por Wookie88 15.02.2012 / 12:49

1 resposta

3

Depois de mais algumas horas de pesquisa intensiva e testando muitas opções diferentes, eu cheguei com uma solução.

Primeiro de tudo, eu tive que ativar o terminal adicionando linha:

ttyS1

no arquivo /etc/securetty .

Sem isso você não pode acessar o terminal em /dev/ttyS1 .

Em segundo lugar, testei muitas configurações diferentes de socat e o seguinte comando funciona:

/usr/local/bin/socat tcp-l:2020,reuseaddr,fork,crlf file:/dev/ttyACM0,echo=0,b115200,raw,crnl,icanon=1

No entanto, esta solução não é perfeita. O terminal quebra a linha após cada prompt de comando para que a entrada do usuário seja digitada na próxima linha. Além disso, após a execução de cada comando aparece um prompt de comando vazio (como eu tinha entrado comando vazio imediatamente após o que eu realmente tinha inserido).

Suponho que eu deva configurar /dev/ttyACM0 corretamente com stty, mas ainda estou pesquisando o tópico.

    
por 15.02.2012 / 22:48