Eu tenho um modem USB detectado como um arquivo de dispositivo de dispositivo ( /dev/ttyACM0
). O redirecionamento de comandos AT para o arquivo do dispositivo parece funcionar à medida que o modem responde.
Estou indo com a seguinte suposição, a parte superior representa um canal de controle. Através dele pode-se discar, configurar o modem, cancelar a conexão... em geral, fazer coisas relacionadas ao controle do modem sem realmente manipular o arquivo data
. Com data
isso, quero dizer tudo o que não são controles (por exemplo, pacotes HTTP).
Onde ocorre o fluxo de dados? Se for pelo mesmo arquivo, como isso é multiplexado?
Também idealmente, alguém gostaria que o modem fosse apenas um "serviço" subjacente que fornece uma interface de rede com um IP, para que se possa abstrair isso e usar soquetes TCP/IP. Os soquetes são implementados no kernel.
Como isso se encaixa na imagem uma vez que o modem é exposto como /dev/ttyACM0
no espaço do usuário ?
Os dispositivos que usam a “interface” do modem estilo AT operam em vários estados:
Os modems iniciam no modo de comando e respondem a
AT
comandos prefixados. Uma vez que eles estabelecem uma conexão (seguindoATD
, por exemplo, depois de passar pelos modos de discagem e handshake), eles mudam para o modo de dados e todos os dados enviados a eles são transmitidos ao dispositivo ao qual estão conectados. Para voltar ao modo de comando, o remetente precisa pausar o fluxo de dados por um determinado tempo, enviar+++
e pausar novamente; o modem volta para o modo de comando e começa a responder aosAT
comandos novamente (e o fluxo de dados é interrompido).Alguns modems não precisavam de pausas, o que significava que os dados seriam interpretados como sequências de comandos se contivessem
+++
(daí a+++ATH0
piada prática no IRC).Para fornecer outro protocolo em cima da conexão de dados do modem, você precisa usar outra ferramenta. Qual ferramenta você usa depende do protocolo que a outra ponta espera (SLIP, PPP, PPPoE...); por exemplo, você usaria
ppp
para PPP (de preferência como integrado à sua distribuição, para que a configuração seja quase transparente). Isso fornecerá alguma forma de encapsulamento de IP e, em seguida, você poderá usar o IP normalmente. A ferramenta envolvida usará qualquer dispositivo necessário para falar com o modem (/dev/ttyACM0
no seu caso) e exporá outra interface que o restante do sistema pode usar para fins de rede (em geral, uma interface de rede, por exemploppp0
).