Configurar um sistema FreeBSD para serviço de discagem é semelhante a configurar terminais, exceto que os modens são usados em vez de dispositivos terminais. O FreeBSD suporta modens externos e internos.

Os modems externos são mais convenientes, pois geralmente podem ser configurados por meio de parâmetros armazenados em RAM não voláteis e geralmente fornecem indicadores luminosos que exibem o estado dos sinais RS-232 importantes, indicando se o modem está funcionando corretamente.
Normalmente, os modems internos não possuem RAM não volátil, portanto, sua configuração pode ser limitada à configuração de switches DIP. Se o modem interno tiver luzes indicadoras de sinal, elas serão difÃceis de visualizar quando a tampa do sistema estiver no lugar.
O FreeBSD precisa dos sinais RTS e CTS para controle de fluxo em velocidades acima de 2400 bps, o sinal CD para detectar quando uma chamada foi atendida ou a linha foi desligada e o sinal DTR para redefinir o modem após a conclusão de uma sessão. Alguns cabos são conectados sem todos os sinais necessários, portanto, se uma sessão de login não desaparecer quando a linha for desligada, pode haver um problema com o cabo. Consulte Cabos Serial e Portas para mais informações sobre esses sinais.
Como outros sistemas operacionais similares ao UNIXâ¢-like, o FreeBSD usa os sinais de hardware para descobrir quando uma chamada foi atendida ou uma linha foi desconectada e para desligar e reinicializar o modem após uma chamada. O FreeBSD evita enviar comandos para o modem ou observar relatórios de status do modem.
O FreeBSD suporta interfaces de comunicação NS8250, NS16450, NS16550 e NS16550A baseado em RS-232C (CCITT V.24). Os dispositivos 8250 e 16450 possuem buffers de caractere único. O dispositivo 16550 fornece um buffer de 16 caracteres, o que permite um melhor desempenho do sistema. Bugs em dispositivos simples 16550 impedem o uso do buffer de 16 caracteres, portanto, use dispositivos 16550A, se possÃvel. Como os dispositivos de buffer de caractere único requerem mais trabalho pelo sistema operacional do que os dispositivos de buffer de 16 caracteres, as placas de interface serial baseadas no 16550A são preferidas. Se o sistema tiver muitas portas seriais ativas ou tiver uma carga pesada, as placas baseadas em 16550A são melhores para comunicações com baixa taxa de erro.
O restante desta seção demonstra como configurar um modem para receber conexões de entrada, como se comunicar com o modem e oferece algumas dicas de solução de problemas.
26.4.1. Configuração de Modem
Como nos terminais, o init gera um processo getty para cada porta serial configurada usada para conexões de dial-in. Quando um usuário disca a linha do modem e os modems se conectam, o sinal "Carrier Detect" é informado pelo modem. O kernel percebe que a portadora foi detectada e instrui o getty a abrir a porta e exibir um prompt login: na velocidade da linha inicial especificada. Em uma configuração tÃpica, se caracteres de lixo forem recebidos, geralmente devido à velocidade de conexão do modem ser diferente da velocidade configurada, o getty tenta ajustar as velocidades de linha até receber caracteres razoáveis. Depois que o usuário digita seu nome de login, o getty executa o login , que conclui o processo de login solicitando a senha do usuário e iniciando o shell do usuário.
Existem duas escolas de pensamento sobre modems dial-up. Um método de configuração é definir os modems e sistemas de modo que, independentemente da velocidade em que um usuário remoto disca, a interface de discagem RS-232 seja executada em uma velocidade travada. O benefÃcio dessa configuração é que o usuário remoto sempre vê um prompt de login do sistema imediatamente. A desvantagem é que o sistema não sabe qual é a verdadeira taxa de dados do usuário, portanto, programas em tela cheia como o Emacs não ajustam seus métodos de tela para melhorar a resposta para conexões mais lentas.
O segundo método é configurar a interface RS-232 para variar sua velocidade com base na velocidade de conexão do usuário remoto. Como o getty não compreende o relatório de velocidade de conexão de nenhum modem em particular, ele fornece uma mensagem login: em uma velocidade inicial e observa os caracteres que retornam em resposta. Se o usuário vê lixo, eles devem pressionar Enter até que um prompt reconhecÃvel seja exibido. Se as taxas de dados não corresponderem, getty verá qualquer coisa que o usuário digita como lixo, e tentará a próxima velocidade e informará novamente o prompt login: . Esse procedimento normalmente leva apenas um pressionamento de tecla ou dois antes que o usuário veja um bom prompt. Essa seqüência de login não parece tão limpa quanto o método de velocidade travada, mas um usuário em uma conexão de baixa velocidade deve receber uma melhor resposta interativa de programas em tela cheia.
Ao travar a taxa de comunicação de dados de um modem a uma velocidade especÃfica, nenhuma alteração em /etc/gettytab deve ser necessária. No entanto, para uma configuração de velocidade compatÃvel, entradas adicionais podem ser necessárias para definir as velocidades a serem usadas para o modem. Este exemplo configura um modem de 14,4 Kbps com uma velocidade de interface superior de 19,2 Kbps usando conexões de 8 bits sem paridade. Ele configura o getty para iniciar a taxa de comunicação para uma conexão V.32bis a 19,2 Kbps, passando por 9600 bps, 2400 bps, 1200 bps, 300 bps e de volta para 19,2 Kbps. O ciclo de taxa de comunicação é implementado com o recurso nx= (proxima tabela). Cada linha usa uma entrada tc= (continuação de tabela) para selecionar o restante das configurações para uma taxa de dados especÃfica.
# # Additions for a V.32bis Modem # um|V300|High Speed Modem at 300,8-bit: :nx=V19200:tc=std.300: un|V1200|High Speed Modem at 1200,8-bit: :nx=V300:tc=std.1200: uo|V2400|High Speed Modem at 2400,8-bit: :nx=V1200:tc=std.2400: up|V9600|High Speed Modem at 9600,8-bit: :nx=V2400:tc=std.9600: uq|V19200|High Speed Modem at 19200,8-bit: :nx=V9600:tc=std.19200:
Para um modem de 28,8 Kbps ou para aproveitar a compactação em um modem de 14,4 Kbps, use uma taxa de comunicação mais alta, conforme mostrado neste exemplo:
# # Additions for a V.32bis or V.34 Modem # Starting at 57.6 Kbps # vm|VH300|Very High Speed Modem at 300,8-bit: :nx=VH57600:tc=std.300: vn|VH1200|Very High Speed Modem at 1200,8-bit: :nx=VH300:tc=std.1200: vo|VH2400|Very High Speed Modem at 2400,8-bit: :nx=VH1200:tc=std.2400: vp|VH9600|Very High Speed Modem at 9600,8-bit: :nx=VH2400:tc=std.9600: vq|VH57600|Very High Speed Modem at 57600,8-bit: :nx=VH9600:tc=std.57600:
Para uma CPU lenta ou um sistema altamente carregado sem portas seriais baseadas no 16550A, esta configuração pode produzir erros sio "silo" a 57,6 Kbps.
A configuração do /etc/ttys é similar a Configurando Entradas de Terminal, mas um argumento diferente é passado para o getty e dialup é usado para o tipo de terminal. Substitua xxx pelo processo init que será executado no dispositivo:
ttyu0 "/usr/libexec/getty xxx" dialup on
O tipo de terminal dialup pode ser alterado. Por exemplo, definir vt102 como o tipo de terminal padrão permite que os usuários usem a emulação VT102 em seus sistemas remotos.
Para uma configuração de velocidade travada, especifique a velocidade com um tipo válido listado em /etc/gettytab. Este exemplo é para um modem cuja velocidade de porta está travada em 19,2 Kbps:
ttyu0 "/usr/libexec/getty std.19200" dialup on
Em uma configuração de velocidade correspondente, a entrada precisa referenciar a entrada inicial apropriada "auto-baud" em /etc/gettytab. Para continuar o exemplo de um modem com velocidade correspondente que começa em 19,2 Kbps, use esta entrada:
ttyu0 "/usr/libexec/getty V19200" dialup on
Depois de editar o /etc/ttys, espere até que o modem esteja devidamente configurado e conectado antes de sinalizar o init :
# kill -HUP 1
Modems de alta velocidade, como os modems V.32, V.32bis e V.34, usam hardware ( RTS/CTS ) para controle de fluxo. Use o stty para definir a flag de controle de fluxo de hardware para a porta do modem. Este exemplo define a flag crtscts na inicialização dos dispositivos COM2 de dial-in e de dial-out: