Eu tenho um sistema Linux que possui portas USB, sem porta RS-232. Gostaria de poder conectar um cabo USB ao sistema Linux e a outra extremidade do cabo USB ao meu PC, que por acaso está executando o Windows 11 e possui o PuTTY.
O cabo que preciso criar posso fazer, será pouco mais que um cabo USB FTDI em uma extremidade e um conector USB simples na outra. Onde eu uso um conector USB em vez de um conector RS0-232, e o conector USB FTDI TX <> RX, conector USB FTDI RX <> TX e GND comum, é claro. Terei que garantir sinalização de 3,3v ou 5v dependendo do que o chip FTDI aguenta. Independentemente do cabeamento físico, realmente um modem nulo como, aqui está o problema, a verdadeira questão, a configuração do software?
Como configuro o sistema Linux para estabelecer uma sessão getty em uma porta USB específica? Vamos supor que eu possa descobrir isso, então é /dev/ttyUSB0 ou algo assim para fins de discussão?
O sistema Linux é baseado em systemd, então eu entendo, não posso usar uma regra/script UDEV para configurar a sessão do terminal, porque seria um processo filho ou neto de longa duração.
E sei que esta sessão de terminal não será uma verdadeira imitação do console do sistema, tudo bem, só preciso de uma sessão assim que o sistema estiver ativado.
Eu sei que isso é um longo caminho até a pergunta, obrigado pela tolerância. É a configuração do software no sistema Linux que realmente preciso de ajuda.
Pelo que entendi, a intenção é fazer uma porta serial do console a partir da porta USB.
Em primeiro lugar, para fazer esse cabo, você precisa de dois conversores. A porta USB de cada computador deve ser fornecida com conversor USB para UART, e os conversores precisam ser conectados costas com costas, RX de um para TX de outro. E conecte os aterramentos juntos, mas provavelmente é melhor ter um isolamento galvânico (um par de optoacopladores, um para cada direção TX→RX) para eliminar possíveis loops de aterramento. No final, você terá um cabo de modem nulo USB para USB , que se parece com uma porta serial quando uma das extremidades está conectada ao computador e, quando ambas as extremidades são conectadas, essas portas seriais parecem estar conectadas com o modem nulo padrão cabo.
Em seguida, você precisa executar um serviço getty systemd nesta porta serial USB. Se você puder deixar o cabo sempre conectado à máquina Linux, basta habilitar o
serial-getty@ttyUSB0
serviço:Se você quiser ter permissão para conectá-lo e puxá-lo após o sistema ser iniciado, você precisa configurar o systemd e o udev para jogar juntos para iniciar este serviço sempre que o dispositivo USB para serial estiver conectado e para encerrar o serviço quando ele é puxado para fora.
Para isso, você faz seu aparelho depender do serviço. Adicionar
udev
regra para adicionar a dependência dinamicamente usandoSYSTEMD_WANTS
a variável de ambiente:A regra pode ser colocada em
/etc/udev/rules.d/99-ttyUSB.rules
.%k
significa "pegar o nome do dispositivo do kernel", que é algo comottyUSB0
.Use as ferramentas udev para descobrir o filtro mais conveniente para a regra udev; este é muito amplo e assumirá qualquer dispositivo que se pareça com USB serial e executará o getty nele. Mesmo que seja realmente um modem que aparece como dois ttyUSB's! Veja, por exemplo, aqui os detalhes; também atente para advertências .
Agora, no meu sistema Debian, ele faz login no
/var/log/daemon.log
:E, claro, um
/bin/login
processo associado attyUSB0
aparece e desaparece.Veja também esta resposta .
Se você precisar limitar o conjunto de velocidades seriais possíveis nas quais é permitido sincronizar, você pode fazer isso usando o arquivo de substituição. Execute
systemctl edit [email protected]
e adicione:ou qualquer velocidade que você deseja usar, certifique-se de que seu adaptador USB para serial o suporte.