Às vezes você pode achar que o Kppp tem dificuldades em fazer o modem desconectar. Isso é provavelmente o resultado de uma inconsistência entre as configurações do Kppp e de seu modem. Um modem padrão aceita dois métodos de desconexão: Comando, e DTR. O método do Comando implica em mandar ao modem uma seqüência de escape, que coloca-o em modo de comando; e então, mandar o comando de desconexão (ATH).
Fora do Kppp, quando configurando o pacote pppd manualmente, é muito útil utilizar o método de Comando, pois ele permite sair da sessão de terminal, e carregar o pppd sem desconectar o modem. Já na maioria das outras situações, o método DTR é preferido, por ser mais simples.
O método DTR fará o modem desconectar tão logo o Kppp pare de usar o modem. Se você acessar o modem em modo de comando via emulador de terminal, consultar seu estado via AT&V, e uma das linhas da configuração atual for igual a &D0, então o método de desconexão DTR está desligado. Para habilitar o método DTR, use a opção Configuração/Mais/Terminal para acessar o modem. Então:
ATZ # reseta o modem para a sua configuração padrão AT&D2 # Configura para desconectar na <em/queda/ do DTR AT&W # Grava na configuração padrão (profile) |
Quando o fio Data Terminal Ready (DTR) do cabo serial entre o computador e o modem é alimentado com 0 (zero) volts pelo computador, o modem é desconectado. Quando o Kppp começa a fazer uso da porta serial, o fio DTR é alimentado com -5 (menos cinco) volts pelo computador. Num modem externo, você pode ver a lâmpada DTR (ou TR) acender quando isso acontece. Quando a lâmpada TR apaga (pelo fato do Kppp ter fechado a porta serial, ou talvez alguma coisa pior, como um cabo solto), o modem desconectará da linha telefônica.
Note que não nos importa a voltagem de conexão / desconexão. O que importa é sabermos que esta é uma forma prática do computador dizer ao modem quando ele deve desconectar.
A outra maneira para fazer o modem desconectar é fazer o modem aceitar um comando enquanto estiver conectado. Para fazê-lo desconectar dessa forma, entre numa sessão de comunicação direta com o modem (usando o Terminal, da mesma forma que alguns parágrafos acima), e mude o tempo de segurança para um intervalo curto como:
ATZ ATS12=5 AT&W |
Então calibre o controle Configurações/Mais/Comandos do Modem/Tempo de Guarda até que fique igual a 5 (cinco), ou seja, idêntico ao registrador S12. Agora o modem deve desconectar corretamente.
Quando um modem local está conectado a um modem remoto, ele está no estado de conexão, onde todos os caracteres que ele recebe pela porta serial são incontinenti repassados ao modem remoto.
Para que o modem aceite comandos, é preciso colocá-lo no estado ou modo de comando. O código de escape faz justamente isso.
O código de escape é definido como uma seqüência de três eventos:
Silêncio (deve ser maior que S12/50 segundos);
Caractere de escape (definido pelo registrador S2, o padrão é "+"); deve ser repetido por três vezes (menos de S12/50 segundos entre eles);
Silêncio (maior que S12/50 segundos).
Uma vez que o modem esteja no modo de comando, você pode mandar comandos a ele :) Para fazê-lo desconectar, transmita o comando ATH. Os códigos de escape e comando de desconexão utilizados pelo Kppp são mostrados na janela Configurações/Mais/Comandos do Modem. Eles devem ser próprios a seu modem.