Eu teria dois dispositivos USB seriais conectados um ao outro /dev/ttyUSB1
e /dev/ttyUSB2
. Gostaria de rodar /bin/bash
conectado em uma extremidade, para poder conectar na outra extremidade usando picocom
e usar o picocom como emulador de terminal local.
Eu tentei coisas assim
setsid /bin/bash </dev/ttyUSB2 >/dev/ttyUSB2 2>&1
e, em seguida, conectando-me à outra extremidade com o picocom, mas acabei de receber uma tela cheia de gibrish ( :~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$ 0m:~$
).. (as taxas de transmissão correspondem e os dois terminais podem se comunicar com dois picocom em ambas as extremidades)
No entanto, eu realmente não tenho ideia do que estou fazendo. Alguém pode me contar o segredo?
Correção/Atualização:
Em um computador diferente, não consigo mais entender o jargão que recebia antes. Quando eu conecto o bash a um tty como acima e conecto à outra extremidade com o picocom, recebo o prompt agora e posso executar comandos, mas meus comandos não são repetidos para mim (só vejo o resultado), e não tenho "controle de trabalho" (que testo com Ctrl+C, o que não interromperá um processo de suspensão)
Fundo:
Já usei o picocom com sucesso como emulador de terminal local de duas outras maneiras:
com getty:
sudo systemctl start [email protected]
permite que eu me conecte
/dev/ttyUSB1
ao picocom com sucesso, mas preciso fazer login. (graças a esta resposta https://unix.stackexchange.com/a/772040/158192 a uma pergunta anterior)com socat
$ socat -d -d PTY,raw,echo=0 EXEC:"/bin/bash",pty,stderr,setsid,sane 2024/04/01 18:32:13 socat[40547] N PTY is /dev/pts/4 ...
o que me permite usar o picocom como terminal local como este
picocom /dev/pts/4
então sim, eu deveria ser capaz de conectar /bin/bash ao usb tty sozinho, certo? mas todas as minhas tentativas contêm erros.
Seu primeiro exemplo parece correto (mas veja também minha nota na parte inferior).
Tenho uma máquina em minha mesa à qual estou conectado por meio de uma porta serial. Na máquina de destino, a porta serial é
/dev/ttyS0
. Na minha área de trabalho, a porta é/dev/ttyUSB0
.Se eu me conectar do host usando uma ferramenta de comunicação como
picocom
:E então pare o
getty
que normalmente roda na porta serial e execute:Tudo funciona conforme o esperado. Em
picocom
, eu vejo:Tem certeza de que a taxa de transmissão corresponde em ambos os casos? Você pode definir a taxa de transmissão explicitamente usando
stty
algo como:Se seu objetivo é iniciar automaticamente um shell bash que não requer login, consulte também este artigo (isenção de responsabilidade: eu escrevi isso) que descreve como configurar getty e pam para fornecer exatamente isso.