O COMO FAZER Linux Serial Revisado por David S.Lawyer bf347@lafn.org. Original de Greg Hankins. Traduzido por Conectiva Informática, . Revisado em 6 de Abril de 1999. v1. 12 de Julho de 1998. Este documento descreve as funcionalidades da porta serial não cobertas pelo COMO FAZER Terminais Texto ou COMO FAZER Programação de Seriais. Ele cobre mais precisamente o utilitário getty, placas multiseriais e modems. ______________________________________________________________________ Índice geral 1. Introdução 1.1 Direitos Autorais 1.2 COMO FAZER relacionados: a Porta Serial 1.3 Notas de Versões 1.4 Novas Versões Deste Documento 1.5 Retornos 1.6 Aviso Importante 2. Hardware Serial Suportados 2.1 Placas Seriais PC Padrão 2.2 Modems Plug And Play (PnP) 2.3 Placas Multiseriais Burras (com UARTs 8250/16450/16550A) 2.4 Placas Multiseriais Inteligentes 2.5 Hardware Seriais Não Suportados 2.5.1 Winmodems Não Funcionam 2.5.2 Programas de Controle Rockwell (RPI) que devem funcionar 3. Quais os Nomes das Portas Seriais? 3.1 Dispositivos: modem, mouse 3.2 O Dispositivo cua 3.3 Dispositivos de Portas Seriais e Números no 3.3.1 Criando Dispositivos em 3.4 Notas Para Placas Multiseriais Burras 3.5 Notas Para Placas Multiseriais Inteligentes 4. Programas Interessantes 4.1 O que é 4.1.1 Sobre 4.1.2 Sobre 4.1.3 Sobre 4.2 O que é 5. Como discar para fora usando um modem? 5.1 Requisitos de Hardware 5.1.1 Modems Externos 5.1.2 Modems Internos 5.2 Conversando Com Seu Modem 5.3 Configuração de Discagem de Modem 5.4 Controle de Fluxo por Hardware 6. Como Discar e Receber Ligações Com o Modem Usando 6.1 Configuração de Modem Para Discar e Receber Chamadas 6.2 Instalando 7. uugetty 7.1 Configurando 7.1.1 Modems Modernos 7.1.2 Modems Antigos e Lentos 7.1.3 Mensagem de Acesso 7.2 Personalizando o 8. Como Configurar Um Terminal Conectado a Um PC? 8.1 Requisitos de Hardware 8.2 Configurando 8.3 Notas Sobre a Configuração de Um PC Como Um Terminal 9. Posso Usar Mais de Dois Dispositivos Seriais? 9.1 Definindo as Interrupções do Dispositivo Serial 9.2 Configurando Endereços de Dispositivos Seriais 10. Como Configurar Minhas Portas Seriais Para Velocidades Maiores? Qual A Velocidade Que Deve Ser Usada Com Meu Modem? 11. Programas e Utilitários de Comunicação 12. Dicas e Tópicos Diversos 12.1 kermit e zmodem 12.2 Configuração de tipos de terminais "automagicamente" 12.3 Comando 12.4 Imprimindo em uma impressora serial conectada 12.5 É possível o Linux configurar dispositivos seriais automaticamente? 12.5.1 Notas para placas multiseriais 12.6 Usando Um Console Serial 12.7 Maiores velocidades em seriais 13. Um passo adiante... 13.1 O que são arquivos de reserva de recursos? 13.2 ``baud'' Vs. ``bps'' 13.3 O que são UARTs? Como elas afetam a performance? 14. Resolução de Problemas 14.1 Estamos recebendo a mensagem ``linha 14.2 Durante a discagem é recebida a mensagem ``/dev/cua 14.3 A mensagem "getty respondendo muito rapidamente: desabilitado por 5 minutos". 14.4 Dispositivos seriais são lentos ou podem tratar os dados em somente uma direção. 14.5 O modem congela após desligar ou 14.6 O terminal conectado ao PC congela após se digitar o nome de acesso. 14.7 Em altas velocidades, o modem perde dados. 14.8 Na inicialização Linux não parece reconhecer os dispositivos seriais na forma em que eles foram configurados. 14.9 O 14.10 A tela está apresentando caracteres estranhos. 14.11 (TT 15. Outras Fontes de Informação 16. Contribuições ______________________________________________________________________ 11.. IInnttrroodduuççããoo Este é o COMO FAZER Linux Serial. Ele cobre informações sobre portas seriais não disponíveis em outros COMO FAZER. Inclui como configurar modems sob Linux, algumas dicas e conselhos sobre como atuar em face de problemas conhecidos. Outro COMO FAZER existente é destinado a terminais (veja ``COMO FAZER relacionados''). Esse COMO FAZER está endereçado a usuários de hardware Intel x86 e compatíveis, ainda que possa funcionar em outras arquiteturas. 11..11.. DDiirreeiittooss AAuuttoorraaiiss Copyright (c) 1993 - 1997 por Greg Hankins, 1998 por David Lawyer. Este documento pode ser distribuído sob os termos definidos na Licença LDP em http://metalab.unc.edu/LDP/COPYRIGHT.html. Este documento não pode ser distribuído ou modificado sem o consentimento do autor. 11..22.. CCOOMMOO FFAAZZEERR rreellaacciioonnaaddooss:: aa PPoorrttaa SSeerriiaall · O HOWTO - Programação Serial auxilia no desenvolvimento de programas em linguagem C (ou partes dele) que lidam com portas seriais. Pode-se fazer o equivalente de um "stty ...", abrir portas em vários nós e mais. · O COMO FAZER - Terminais Texto aborda terminais orientados à caracter (terminais burros). 11..33.. NNoottaass ddee VVeerrssõõeess Eu, David Lawyer, sou o novo mantenedor (Greg Hankins foi o autor original). Esta é uma revisão menor e eu não chequei a fundo as informações para verificar se estão atualizadas. Há muito trabalho a ser desenvolvido. Por favor nos avise sobre erros ou ausências de informações. No futuro, eu gostaria de dividir em 3 outros COMO FAZER: 1. Informações sobre terminais no COMO FAZER Terminais Texto. 2. Informações sobre os modems em um novo COMO FAZER: Modem 3. Mais informações sobre portas seriais devem ser adicionadas a este COMO FAZER. Talvez tenhamos estas novas versões em algum momento em 1998. 11..44.. NNoovvaass VVeerrssõõeess DDeessttee DDooccuummeennttoo Novas versões do COMO FAZER Serial estarão disponíveis em ftp://metalab.unc.edu:/pub/Linux/docs/HOWTO/Serial-HOWTO e nos sites espelho. Há outros formatos, como Postscript e versões DVI no diretório outros-formato. O COMO FAZER Serial está também disponível em http://metalab.unc.edu/LDP/HOWTO/Serial-HOWTO.html e será postado em comp.os.linux.answers mensalmente. 11..55.. RReettoorrnnooss Por favor, envie-me quaisquer questões, comentários, sugestões ou material adicional. Estou sempre ansioso em ouvir sobre o que você pensa sobre este COMO FAZER. Estou sempre na busca de melhorias. Diga- me exatamente o que você não entendeu ou o que deveria ser clarificado. Eu posso ser encontrado em bf347@lafn.org (David Lawyer) via correio eletrônico. 11..66.. AAvviissoo IImmppoorrttaannttee A sua experiência pode variar. As respostas podem variar e não funcionarem adequadamente em todos os sistemas e combinações de configuração. 22.. HHaarrddwwaarree SSeerriiaall SSuuppoorrttaaddooss Linux é conhecido por funcionar com os seguintes hardwares seriais: 22..11.. PPllaaccaass SSeerriiaaiiss PPCC PPaaddrrããoo · Placas padrões (COM1 - COM4), aos quais dispositivos seriais (modems, mouse serial, etc.) podem ser conectados. Uma vez que PCs não são mais distribuídos com estas placas (mas tem os processadores para este propósito montado na placa mãe), portanto elas são difíceis de se encontrar em lojas de varejo. · Modems padrões PC internos (COM1 - COM4). · Sistemas Quickpath Port-Folio 550e (permite IRQs de 3, 4, 5, 9, 10, 11, 12 e 15). Nota: devido aos conflitos de endereço, não se pode usar COM4 e placa de vídeo IBM8514 simultaneamente. Isso se deve a um problema na placa IBM8514. 22..22.. MMooddeemmss PPlluugg AAnndd PPllaayy ((PPnnPP)) Muitos modems hoje em dia são PnP e muitos irão (com algum esforço) funcionar com Linux. O melhor a fazer é configurar as chaves de seleção (jumpers) para desabilitarem o PnP. Em muitos casos, basta simplesmente configurar as chaves para um determinado número de porta serial COM e número de interrupção IRQ para desabilitar a função PnP. Pode-se ainda desabilitar as funções de PnP no BIOS do computador. Caso não seja possível desabilitar PnP pode-se então tentar: · Inicializar o sistema com Win95/98, configurar o modem e verificar os parâmetros que devem ser preservados na inicialização do Linux. Pode-se ainda: · Inicializar o sistema com Win95/98, configurar o modem e então executar uma _i_n_i_c_i_a_l_i_z_a_ç_ã_o _r_á_p_i_d_a Linux preservando as configurações dos modem. Pode-se fazer isto através do carregador de inicialização denominado loadlin. · Obter as ferramentas PnP a partir de http://www.redhat.com/linux- info/pnp. 22..33.. PPllaaccaass MMuullttiisseerriiaaiiss BBuurrrraass ((ccoomm UUAARRTTss 88225500//1166445500//1166555500AA)) Elas são denominadas "adaptadores seriais". => "setserial" mostra os detalhes da configuração. · AST FourPort e clones (4 portas) * · Accent Async-4 (4 portas) * · Arnet Multiport-8 (8 portas) · Bell Technologies HUB6 (6 portas) · Boca BB-1004 (4 ports), BB-1008 (8 portas), BB-2016 (16 portas) * · Boca IOAT66 (6 portas) · Boca 2by4 (4 portas seriais, 2 portas paralelas) · Byterunner · Computone ValuePort V4-ISA (compatível com AST FourPort) * · Digi PC/8 (8 portas) · GTEK BBS-550 (8 portas) Veja o mini COMO FAZER específico. · HUB-6 See Bell Technologies. · Longshine LCS-8880, Longshine LCS-8880+ (compatível com AST FourPort) · Moxa C104, Moxa C104+ (compatível com AST FourPort) · PC-COMM (4 ports) · Sistemas Sealevel <http://www.sealevel.com> COMM-2 (2 portas), COMM-4 (4 portas) e COMM-8 (8 portas) · SIIG I/O Expansão 2S IO1812 (4 portas) · STB-4COM (4 portas) · Twincom ACI/550 · Usenet Serial Board II (4 portas) * Em geral, Linux irá suportar qualquer placa serial que use UARTs 8250, 16450, 16550, 16550A, 16650 (ou compatíveis), ou um modem interno que emula alguma dos UARTs acima. Nota: BB-1004 e BB-1008 não suportam DCD e linhas RI e não podem ser utilizados em modems para discagem. Eles poderão funcionar muito bem em outros propósitos. 22..44.. PPllaaccaass MMuullttiisseerriiaaiiss IInntteelliiggeenntteess Esteja seguro de que há um programa de controle disponível específico para Linux. A lista a seguir não está muito atualizada. · Comtrol RocketPort (36MHz ASIC; 4, 8, 16 ou 32 portas) Contato: info@comtrol.com ou http://www.comtrol.com. Status do programa de controle: suportado por Comtrol. Localização do programa de controle: ftp://tsx-11.mit.edu/pub/linux/packages/comtrol. · Computone IntelliPort II (16MHz 80186; 4, 8, ou 16 ports) IntelliPort II Expansível (20MHz 80186; 16 - 64 portas). Contato: Michael H. Warfield, mhw@wittsend.atl.ga.us. Status do programa de controle: pré-ALPHA. · Cyclades Cyclom-Y (Cirrus Logic CD1400 UARTs; 8 - 32 portas) Cyclom-Z (25MHz MIPS R3000; 8 - 128 portas). Contato: sales@cyclades.com ou http://www.cyclades.com. Situação do programa de controle: suportado pela Cyclades. Localização dos programas de controle: ftp://ftp.cyclades.com/pub/cyclades e incluída no kernel do Linux desde a versão 1.1.75. · Decision PCCOM8 (8 ports) Contato: pccom8@signum.se. Localização do programa de controle: ftp://ftp.signum.se/pub/pccom8. · Digi PC/Xi (12.5MHz 80186; 4, 8 ou 16 portas), PC/Xe (12.5/16MHz 80186; 2, 4, ou 8 portas), PC/Xr (16MHz IDT3041; 4 ou 8 portas), PC/Xem (20MHz IDT3051; 8 - 64 portas). Contato: sales@dgii.com ou http://www.dgii.com. Status do programa de controle: suportado por Digi. Localização dos programas de controle: ftp://ftp.dgii.com/drivers/linux e incluída no kernel do Linux desde a versão 2.0. · Digi COM/Xi (10MHz 80188; 4 ou 8 portas) Contato: Simon Park, si@wimpol.demon.co.uk. Status do programa de controle: ALPHA. Nota: Simon está com freqüência ausente deste endereço de correio, às vezes por meses devido ao seu trabalho. Mark Hatle, fray@krypton.mankato.msus.edu voluntariou-se para tornar o programa de controle se necessário. Mark não está mantendo ou suportando o programa de controle. · Equinox SuperSerial Technology (30MHz ASIC; 2 - 128 portas) Contato: sales@equinox.com ou http://www.equinox.com. Status do programa de controle: suportado por Equinox. Localização dos programas de controle: ftp://ftp.equinox.com/library/sst. · GTEK Cyclone (16C654 UARTs; 6, 16 e 32 portas), SmartCard (24MHz Dallas DS80C320; 8 portas), BlackBoard-8A (16C654 UARTs; 8 portas), PCSS (15/24MHz 8032; 8 portas). Contato: spot@gtek.com ou http://www.gtek.com. Status do programa de controle: suportado por GTEK. Localização dos programas de controle: ftp://ftp.gtek.com/pub. · Hayes ESP (COM-bic; 1 - 8 portas) Contato: Andrew J. Robinson, arobinso@nyx.net ou http://www.nyx.net/~arobinso. Status do programa de controle: suportado pelo autor. Localização dos programas de controle: http://www.nyx.net/~arobinso e incluído no kernel do Linux desde a versão 2.1.15. · Maxpeed SS (Toshiba; 4, 8 e 16 ports) Contato: info@maxpeed.com ou http://www.maxpeed.com. Status do programa de controle: suportado por Maxpeed. Localização dos programas de controle: ftp://maxpeed.com/pub/ss. · Moxa C218 (12MHz 80286; 8 portas), Moxa C320 (40MHz TMS320; 8 - 32 portas). Contato: info@moxa.com.tw ou http://www.moxa.com.tw. Status do programa de controle: suportado por Moxa. Localização dos programas de controle: ftp://ftp.moxa.com.tw/drivers/c218-320/linux. · SDL RISCom/8 (Cirrus Logic CD180; 8 portas) Contato: sales@sdlcomm.com ou http://www.sdlcomm.com. Status do programa de controle: suportado por SDL. Localização dos programas de controle: ftp://ftp.sdlcomm.com/pub/drivers. · Specialix SIO (20MHz Zilog Z280; 4 - 32 portas), XIO (25MHz Zilog Z280; 4 - 32 portas). Contato: Simon Allen, simonallen@cix.compulink.co.uk. Status do programa de controle: BETA. Localização dos programas de controle: ftp://metalab.unc.edu/pub/Linux/kernel/patches/serial. · Stallion EasyIO-4 (4 portas), EasyIO-8 (8 portas), e EasyConnection (8 - 32 portas) - usando Cirrus Logic CD1400 UARTs, Stallion (8MHz 80186 CPU; 8 ou 16 portas), Brumby (10/12 MHz 80186 CPU; 4, 8 ou 16 portas), ONboard (16MHz 80186 CPU; 4, 8, 12, 16 ou 32 portas), EasyConnection 8/64 (25MHz 80186 CPU; 8 - 64 portas). Contato: sales@stallion.com ou http://www.stallion.com. Status do programa de controle: suportado por Stallion. Localização dos programas de controle: ftp://ftp.stallion.com/drivers/ata5/Linux e incluído no kernel do Linux desde a versão 1.3.27. Uma avaliação dos produtos Comtrol, Cyclades, Digi e Stallion foi apresentada no _L_i_n_u_x _J_o_u_r_n_a_l de junho de 1995. O artigo está disponível em http://www.ssc.com/lj/issue14. 22..55.. HHaarrddwwaarree SSeerriiaaiiss NNããoo SSuuppoorrttaaddooss 22..55..11.. WWiinnmmooddeemmss NNããoo FFuunncciioonnaamm Modems denominados ``Winmodems'', por exemplo USR Sportster Winmodem e IBM Aptiva MWAVE, _n_ã_o são suportados pelo Linux. Estes modems tem projetos proprietários que requerem programas de controle especiais que funcionam somente sob Windows. Evite o uso destes modems. 22..55..22.. PPrrooggrraammaass ddee CCoonnttrroollee RRoocckkwweellll ((RRPPII)) qquuee ddeevveemm ffuunncciioonnaarr Modems que requerem programas de controle Rockwell RPI não podem ser usados completamente sob Linux uma vez que o programa de controle não funciona sob Linux. O RPI executa compressão e correção de erros usando MS software. Caso se deseje utilizar o modem sem o uso de RPI (e não ter correção de erros e compressão) então pode-se facilmente desabilitá-lo através do envio para o modem (via comando de inicialização) do comando RPI: +H0. 33.. QQuuaaiiss ooss NNoommeess ddaass PPoorrttaass SSeerriiaaiiss?? Um porta de E/S é uma forma de obter e enviar dados de/para um computador. Há muitos tipos de postas de E/S como portas seriais, paralelas, controlados de dispositivos de disco, placas Ethernet, etc.. Nós assumiremos que as portas seriais utilizarão modems e terminais que serão denominados dispositivos seriais. Cada porta serial deve ter um endereço de E/S e uma interrupção (IRQ). Há quatro portas seriais correspondentes a COM1 - COM4: ttyS0 (COM1) endereço 0x3f8 IRQ 4 ttyS1 (COM2) endereço 0x2f8 IRQ 3 ttyS2 (COM3) endereço 0x3e8 IRQ 4 ttyS3 (COM4) endereço 0x2e8 IRQ 3 Caso o Linux não detecte qualquer porta serial ao ser inicializado, esteja seguro de que o suporte serial está habilitado e compilado no kernel do sistema. Neste documento, referencio COM1 como ttyS0, COM2 como ttyS1, COM3 como ttyS2 e COM4 como ttyS3. Note que, por padrão, estes dispositivos são sobrepostos pelos valores de IRQs. Não se pode usar todas as portas na configuração original, devendo-se então serem definidos outras IRQs. Veja a seção ``Posso Usar Mais de Duas Portas Seriais?'' para configuração das interrupções. 33..11.. DDiissppoossiittiivvooss:: mmooddeemm,, mmoouussee Em algumas instalações, dois dispositivos extras podem ser criados, /dev/modem para o modem e /dev/mouse para o mouse. Ambos são ligações simbólicas para os devidos dispositivos no diretório /dev especificado durante a instalação (a menos que se tenha um mouse de barramento quando então o /dev/mouse apontará para o dispositivo do mouse). Tem havido alguma discussão sobre o mérito do /dev/mouse e /dev/modem. Desencorajo _f_o_r_t_e_m_e_n_t_e o uso dessas ligações. Em particular, caso se esteja planejando usar o modem para discagem, pode-se ter alguns problemas com arquivos de reserva de recursos caso se utilize o /dev/modem. Use-os caso deseje, mas _e_s_t_e_j_a _s_e_g_u_r_o _d_e _e_s_t_a_r _a_p_o_n_t_a_n_d_o _p_a_r_a _o _d_i_s_p_o_s_i_t_i_v_o _c_o_r_r_e_t_o. De qualquer forma, caso se altere ou se remova a ligação, algumas aplicações (minicom por exemplo) podem necessitar de reconfiguração. 33..22.. OO DDiissppoossiittiivvoo ccuuaa Cada dispositivos ttyS tem um dispositivo cua correspondente. Houve alguma discussão sobre a abolição do cua, então o melhor é usar o ttyS. As principais diferenças entre cua e ttyS é que um simples comando "open" (sem certos parâmetros) em um programa de aplicação, fará com que cua abra a porta mesmo que os sinais de controle (como DCD) digam para não fazê-lo. Já stty pode ser configurado para verificar os sinais de controle do modem. Uma porta ttyS pode recusar- se a abrir a porta nestes casos, porém pode ser forçado para tal caso sejam fornecidos certos parâmetros para o comando "open". Além disso uma porta ttyS pode fazer tudo que uma porta cua faça. Exceto que um comando de abertura forçada resulta em um comando de leitura em um programa que se comportará de uma forma singular que pode ser evitada ao se adicionar alguns comandos extras. Eliminar cua pode trazer ao Linux maior compatibilidade com o padrão Posix e evita certos problemas com arquivos de reserva de recursos. 33..33.. DDiissppoossiittiivvooss ddee PPoorrttaass SSeerriiaaiiss ee NNúúmmeerrooss nnoo //ddeevv /dev/ttyS0 maior 4, menor 64 /dev/cua0 maior 5, menor 64 /dev/ttyS1 maior 4, menor 65 /dev/cua1 maior 5, menor 65 /dev/ttyS2 maior 4, menor 66 /dev/cua2 maior 5, menor 66 /dev/ttyS3 maior 4, menor 67 /dev/cua3 maior 5, menor 67 Note que todas as distribuições devem com estes dispositivos corretamente configurados (a menos que cua seja abolido). Pode-se verificar a configuração através do comando: linux% ls -l /dev/cua* linux% ls -l /dev/ttyS* 33..33..11.. CCrriiaannddoo DDiissppoossiittiivvooss eemm //ddeevv Caso não se tenha o dispositivo, será necessário criá-lo com o comando mknod. Por exemplo suponhamos que seja necessário criar os dispositivos para ttyS0: linux# mknod -m 666 /dev/cua0 c 5 64 linux# mknod -m 666 /dev/ttyS0 c 4 64 Pode-se usar também o programa MAKEDEV que reside no diretório /dev, o qual simplifica a geração de dispositivos. Por exemplo, caso se necessite de um dispositivo para ttyS0 deve-se digitar: linux# cd /dev linux# ./MAKEDEV ttyS0 Isso possibilita a criação de dispositivos para dispositivos de entrada e saída e deve ter as permissões corretas configuradas. 33..44.. NNoottaass PPaarraa PPllaaccaass MMuullttiisseerriiaaiiss BBuurrrraass Os dispositivos usados por uma placa multiserial dependem do tipo de placa disponível. Algumas destas estão listadas em detalhes em rc.serial ou em 0setserial o qual acompanha o pacote setserial. Recomendo fortemente o uso da versão mais atualizada do setserial caso se esteja utilizando placas multiseriais. Provavelmente será necessário criar estes dispositivos. Para tanto pode-se usar o comando mknod ou o programa MAKEDEV. Dispositivos para placas multiseriais são criados através da fórmula ``64 + número da porta''. Logo, caso se deseje criar dispositivos para ttyS17 deve-se digitar: linux# mknod -m 666 /dev/cua17 c 5 81 linux# mknod -m 666 /dev/ttyS17 c 4 81 Note que ``64 + 17 = 81''. Usando o programa MAKEDEV deve-se digitar: linux# cd /dev linux# ./MAKEDEV ttyS17 Nota: o manual SIIG para a lista IO1812 para COM5-COM8 está incorreto. Eles devem ser COM5=0x250, COM6=0x258, COM7=0x260 e COM8=0x268. Nota: o Registro de Status de Interrupção da Digi PC/8 está em 0x140. Nota: para a AST Fourport, deve-se especificar skip_test em rc.serial. 33..55.. NNoottaass PPaarraa PPllaaccaass MMuullttiisseerriiaaiiss IInntteelliiggeenntteess Leia a informação que acompanha o programa de controle. Estas placas utilizam programas especiais e não os padrões. Esta informação varia dependendo do hardware. 44.. PPrrooggrraammaass IInntteerreessssaanntteess 44..11.. OO qquuee éé ggeettttyy ?? getty é um programa que lida com o processo de acesso ao se conectar a uma máquina Linux. É preciso utilizar o programa getty, caso por exemplo se deseje acessar uma máquina Linux através de um modem. Não é necessário utilizar getty caso se deseje discar para algum local externo via modem. Há três versões comumente utilizadas com Linux: getty_ps,mgetty e agetty. A sintaxe dos três programas difere, portanto deve-se estar seguro de se estar utilizando a sintaxe correta para o programa, para qualquer getty que se esteja utilizando. 44..11..11.. SSoobbrree ggeettttyy__ppss Muitas distribuições vêm com o pacote getty_ps instalado (o Debian usava agetty porém agora tem utilizado mgetty). Ele contém dois programas: getty é usado em dispositivos de console e terminais e uugetty é usado com modems. Uso a versão de getty, a qual focalizaremos aqui. 44..11..22.. SSoobbrree mmggeettttyy mgetty é a versão de getty destinada especialmente para o uso com modems. Pode ser usado com terminais conectados via fio, mas a documentação trata durante 99% a configuração de modems. Adicionalmente ao suporte a acessos discados, mgetty provê suporte a FAX e autodetecção de PPP. A documentação do mgetty (fornecida em formato textinfo) é boa e não necessita de complemento. Por favor referencie-se a ela sobre instruções de instalação. Pode-se encontrar informações atualizadas do mgetty em http://www.leo.org/~doering/mgetty/. 44..11..33.. SSoobbrree aaggeettttyy agetty é a terceira variação do programa getty. É uma versão simples e completamente funcional do getty melhor aplicada em consoles virtuais ou terminais do que com modems. 44..22.. OO qquuee éé sseettsseerriiaall ?? setserial é o programa que permite observar e alterar diversos atributos de um dispositivo serial, incluindo-se o endereço da porta, sua interrupção e outras opções da porta serial. Pode-se descobrir qual a versão disponível ao se executar o programa sem fornecer argumentos. Caso o argumento seja algo como /dev/ttyS1, etc., então serão apresentadas as informações sobre esta porta. Quando um sistema Linux é inicializado, somente as portas ttyS{0-3} são configuradas, utilizando as IRQs padrão 4 e 3. Então, caso se tenha qualquer outra porta serial disponibilizada por outras placas ou se ttyS{0-3} usa uma IRQ não padronizada, então _d_e_v_e_-_s_e usar o programa setserial para configurar estas portas seriais. Para uma lista completa das opções disponíveis por favor verifique a página de manual on-line. 55.. CCoommoo ddiissccaarr ppaarraa ffoorraa uussaannddoo uumm mmooddeemm?? 55..11.. RReeqquuiissiittooss ddee HHaarrddwwaarree Pode-se usar um modem interno ou externo. Modems internos são mais baratos e não usam espaço sobre a mesa. Mas os modems externos são mais simples de serem instalados e os indicadores luminosos fornecem uma dica sobre o que está acontecendo. Modems externos necessitam ser desligados quando não estejam sendo usados, e parecem consumir alguma eletricidade mesmo quando estejam desligados. 55..11..11.. MMooddeemmss EExxtteerrnnooss Inicialmente esteja seguro de estar utilizando o cabo correto. Um modem requer cabos com fios diretos sem pinos cruzados. Qualquer loja de informática costuma tê-los. Esteja certo de escolher o gênero correto. Caso se esteja utilizando uma porta serial de padrão DB25, deve-se utilizar sempre DB25 macho. Tenha cuidado em não confundir com a porta paralela, a qual é DB25 porém fêmea. Conecte o modem em uma das portas seriais disponíveis. Por favor consulte o manual do modem para saber como fazê-lo caso você necessite de ajuda. 55..11..22.. MMooddeemmss IInntteerrnnooss Para um modem interno, não há necessidade de cabos adicionais, pois este tipo de modem não necessita de uma porta serial, ele tem uma construída em si. Tudo o que se necessita é configurá-lo para que ele utilize uma interrupção que não esteja sendo usada e configurar os endereços da porta de E/S. Consulte o manual do modem caso você esteja com dúvidas. Veja também a seção ``Posso Usar Mais de Dois Dispositivos Seriais?'' caso se necessite de ajuda na escolha de interrupções ou endereços. Em algumas placas mãe será necessário desabilitar a porta serial que o modem esteja utilizando a fim de evitar conflitos. Isso pode ser feito através das chaves de configuração ou das configurações do BIOS, dependendo da placa mãe. Por favor consulte o seu manual. Caso se esteja utilizando uma placa de vídeo IBM8514, então há um problema que você deve conhecer. Pode-se encontrar problemas caso se deseje utilizar um modem em ttyS3. Caso o Linux não detecte um modem interno em ttyS3, pode-se usar o utilitário setserial e o modem deverá funcionar normalmente. Modems internos em ttyS{0-2} não deverão causar nenhum problema para serem detectados. Linux não executa qualquer auto-configuração em ttyS3 devido ao problema da placa de vídeo. 55..22.. CCoonnvveerrssaannddoo CCoomm SSeeuu MMooddeemm Pode-se usar kermit, minicom ou alguns outros programas de comunicação para testar a configuração do modem, antes de seguir em temas mais complexos como SLIP ou PPP. Pode-se encontrar a versão mais atual do kermit em http://www.columbia.edu/kermit/. Digamos, por exemplo, que o modem encontre-se na porta ttyS3 e sua velocidade é de 115200 bps. Deve-se proceder da seguinte forma: linux# kermit C-Kermit 6.0.192, 6 Sep 96, for Linux Copyright (C) 1985, 1996, Trustees of Columbia University in the City of New York. Modo de transferência padrão é BINÁRIO Digite ? ou HELP para ajuda. C-Kermit>set line /dev/ttyS3 C-Kermit>set carrier-watch off C-Kermit>set speed 115200 /dev/ttyS3, 115200 bps C-Kermit>c Conectando a /dev/ttyS3, velocidade 115200. O caracter de fuga é Ctrl-\ (ASCII 28, FS) Digite o caracter de fuga seguido de C para retornar ou seguido de ? para se visualizar outras opções. ATE1Q0V1 ; digite estes comandos e pressione Enter. OK ; o modem deve responder desta forma. Caso o modem reconheça comandos AT, pode-se assumir que ele esteja funcionando adequadamente sob o Linux. Agora pode-se tentar a execução de uma discagem executando-se o seguinte comando: ATDT7654321 onde 7654321 é o número do telefone de destino. Use ATDP no lugar de ATDT caso a linha seja configurada para pulso. Caso a discagem seja efetuada, o modem estará funcionando corretamente. Para retornar para a linha de comando do kermit, pressione a tecla Ctrl e a tecla de barra reversa, solte a tecla Ctrl e pressione C: Ctrl-\-C (De volta ao Linux) C-Kermit>quit linux# Isso foi um teste usando um primitivo método de comando manual. O método normal reside em deixar o kermit executar a discagem automaticamente a partir de uma base interna de modems e de funções de discagem, por exemplo usando um modem US Robotics (USR): linux# kermit C-Kermit 6.0.192, 6 Sep 1997, for Linux Copyright (C) 1985, 1996, Trustees of Columbia University in the City of New York. Modo de transferência padrão é BINÁRIO Digite ? ou HELP para ajuda. C-Kermit>set modem type usr ; Seleciona o tipo de modem C-Kermit>set line /dev/ttyS3 ; Seleciona o dispositivo de comunicação C-Kermit>set speed 115200 ; Configura a velocidade de discagem C-Kermit>dial 7654321 ; Discar Número: 7654321 Dispositivo=/dev/ttyS3, modem=usr, velocidade=115200 Ligação completada.<BEEP> Conectando a /dev/ttyS3, velocidade 115200 Conectando a /dev/ttyS3, velocidade 115200. O caracter de fuga é Ctrl-\ (ASCII 28, FS) Digite o caracter de fuga seguido de C para retornar ou seguido de ? para se visualizar outras opções. Bem Vindo ao Linux ... login: Veja a seção ``Programas de Comunicação'' sobre programas de comunicação caso sejam necessárias algumas informações adicionais sobre os passos acima. Ao se discar com o modem local, deve-se configurar a velocidade da porta serial para a maior possível e suportada pelo modem (possivelmente não maior que 115200 bps). Isso não é o mesmo que as velocidades anunciadas de modems como por exemplo 56 Kbps. Versões do Linux com uma versão da biblioteca libc superior a 5.X têm suporte a velocidades maiores que 115200 bps. Mesmo velocidades maiores que esta estão em desenvolvimento no Linux. 55..33.. CCoonnffiigguurraaççããoo ddee DDiissccaaggeemm ddee MMooddeemm Somente para discagens, pode-se configurar o modem da maneira que se deseje. Caso se pretenda configurar o modem para receber chamadas, então é _o_b_r_i_g_a_t_ó_r_i_o configurá-lo na mesma velocidade que se pretenda utilizar o programa getty. De qualquer forma, muitos modems atualmente configuram as suas velocidades automaticamente para a mesma que os comandos estejam utilizando. Ou seja, ao se ter getty sendo executado a 115,200 fará com que o modem automaticamente configure a sua velocidade para o valor utilizado pelo programa getty, a partir do momento que este envie os comandos de inicialização para a porta serial onde o modem se encontre. Em geral, padrões de fabricação que habilitem correções de erro e controle de fluxo por hardware são as melhores configurações para modems que executem chamadas externas. Consulte o manual do modem para conferir estas configurações. 55..44.. CCoonnttrroollee ddee FFlluuxxoo ppoorr HHaarrddwwaarree Caso o modem suporte controle de fluxo por hardware (RTS/CTS), recomendo fortemente o uso deste. Primeiro, deve-se habilitar o fluxo RTS/CTS da porta serial. Isso deve ser realizado na inicialização do Linux, por exemplo em /etc/rc.d/rc.local ou /etc/rc.d/rc.serial. Esteja seguro de que estes arquivos sejam executados a partir do programa rc.sysinit principal. Deve-se executar o seguinte comando para cada porta serial na qual se deseje habilitar o controle de fluxo por hardware: stty crtscts < /dev/ttyS3 Caso isto não seja habilitado por padrão, deve-se habilitar ainda o fluxo RTS/CTS no modem. O programa de comunicação pode fazer isto. Consulte o manual do modem caso seja necessário e então salve as configurações do modem, caso ele suporte a guarda de arquivos de configuração. 66.. CCoommoo DDiissccaarr ee RReecceebbeerr LLiiggaaççõõeess CCoomm oo MMooddeemm UUssaannddoo ggeettttyy__ppss Configure o modem para discar corretamente. Caso não se tenha lido a seção ``Como Discar Com Um Modem'', por favor _l_e_i_a _a_g_o_r_a! Ela contém informações _m_u_i_t_o importantes de configuração. _N_ã_o _é _n_e_c_e_s_s_á_r_i_o ler esta seção caso se deseje utilizar o modem somente para _d_i_s_c_a_r. 66..11.. CCoonnffiigguurraaççããoo ddee MMooddeemm PPaarraa DDiissccaarr ee RReecceebbeerr CChhaammaaddaass Para discar e receber chamada, é _o_b_r_i_g_a_t_ó_r_i_o configurar o modem de uma maneira específica (novamente usando comandos AT de modem): E1 modo ECO ativo Q0 códigos de retorno ativos V1 modo de resposta ativo S0=0 jamais responder (uugetty lida com isto através da opção WAITFOR) Caso isso não seja configurado corretamente, os comandos INIT no arquivo de configuração podem falhar, perdendo-se todo o processo. Mas temos mais detalhes sobre arquivos de configuração: &C1 DCD estará ativo somente após a conexão. &S0 DSR estará sempre ativo. DTR on/off reinicializa o modem (dependendo do fabricante - RTFM). Este parâmetros afetam o comportamento do modem quando uma chamada é iniciada ou finalizada. Caso o modem não suporte o armazenamento de configurações, pode-se definir estes parâmetros através dos comandos especificados em INIT no arquivo de configuração. Veja a seguir maiores detalhes. Alguns modems vêm com chaves de configuração que afetam os conteúdos dos registradores. Esteja seguro de configurá-los corretamente, também. Iniciei uma lista de configurações específicas para diferentes tipos de modems. Até aqui eu tenho alguns disponíveis e caso você queira adicionar algumas outras configurações funcionais, por favor faça isto. A lista pode ser encontrada em ftp://ftp.cc.gatech.edu/pub/people/gregh/modem-configs. Nota: para conseguir com que meu modem USR Courier V.34 reinicializasse corretamente quando DTR caía, tive que configurar &D2 e S13=1 (isto configura o bit 0 do registrador S13). Seguramente isto funciona bem também com modems USR Sportster V.34. Nota: alguns modems supra tratam DCD diferentemente de outros modems. Caso se esteja utilizando um Supra, tente configurar &C0 e _n_ã_o &C1. Deve-se também configurar &D2 para lidar corretamente com DTR. 66..22.. IInnssttaallaannddoo ggeettttyy__ppss Obtenha a última versão em metalab.unc.edu:/pub/Linux/system/serial. Particularmente caso se deseje utilizar velocidades altas (57600 e 115200 bps), deve-se utilizar a versão 2.0.7j ou posterior. Deve-se usar ainda a libc 5.x ou superior. Por padrão, getty_ps será configurado para estar compatível com o Linux FSSTND (Padrão de Sistema de Arquivos), o que significa que os binários estarão em /sbin e os arquivos de configuração serão denominados /etc/conf.{uu}getty.ttyS_N. Isso pode não estar evidente na sua documentação! Deve-se ter ainda arquivos de reserva de recursos no diretório /var/lock. Caso não se utilize a compatibilidade FSSTND, os binários residirão em /etc, os arquivos de configuração estarão em /etc/default/{uu}getty.ttyS_N e os arquivos de reserva de recursos estarão localizados em /usr/spool/uucp. Recomendo fazê-lo desta forma caso se deseje utilizar o modem em conexões tipo UUCP, uma vez que este terá problemas em mover os arquivos de reserva de recursos para um local onde eles não sejam monitorados. getty_ps pode usar também o syslogd para o registro de ocorrências. Veja as páginas de manual on-line de syslogd(1) e syslog.conf(5) para configurar o syslogd caso ele ainda não esteja sendo executado. Mensagens são adicionadas com a prioridade definida em LOG_AUTH, erros usam LOG_ERR e depuração utiliza LOG_DEBUG. Caso não se deseje utilizar syslogd pode-se editar o arquivo tune.h nos arquivos de fontes de getty_ps para utilizar um arquivo próprio para o registro de ocorrências, denominado por padrão /var/adm/getty.log. Decida se deseja utilizar a compatibilidade FSSTND e as capacidades de registros do syslog. Pode-se escolher por uma combinação dos dois. Edite o Makefile, tune.h e config.h para estarem de acordo com as suas decisões. Após compile e instale de acordo com as instruções incluídas no pacote. A partir deste ponto, todas as referências a getty estão relacionadas com getty_ps. Referências a uugetty indicam o programa uugetty que vem com o pacote getty_ps. Estas instruções não funcionarão com mgetty ou agetty. 77.. uuuuggeettttyy 77..11.. CCoonnffiigguurraannddoo uuuuggeettttyy Esteja certo de que se tem à disposição um dispositivo com capacidade de envio e recepção de dados na porta serial. Caso o modem esteja em ttyS3 será necessário utilizar os arquivos especiais de dispositivos /dev/cua3, e /dev/ttyS3. Caso não se tenha os dispositivos corretos, veja a seção ``Criando Dispositivos Em <tt>/dev</tt>'' sobre como criar arquivos de dispositivos, e proceda de acordo com o ali descrito. Caso se deseje habilitar a discagem do modem enquanto uugetty está monitorando a porta à espera de solicitações de acesso, deve-se usar o dispositivo /dev/cua_N ao invés de /dev/ttyS_N [cua não será necessário se o software foi escrito para evitar estes problemas]. uugetty executa importantes verificações dos arquivos de reserva de recursos. Atualize o arquivo /etc/gettydefs para incluir uma entrada para o modem. Ao se editar este arquivo, pode-se verificar se a sintaxe está correta executando-se o comando: linux# getty -c /etc/gettydefs 77..11..11.. MMooddeemmss MMooddeerrnnooss Caso se tenha um modem de 9600 bps ou velocidade superior, pode-se travar a porta serial em uma velocidade específica. Por exemplo: # Velocidade Fixa Em 115200 F115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #F115200 Caso o modem esteja configurado para executar controle de fluxo RTS/CTS por hardware, pode-se adicionar CRTSCTS as seguintes entradas: # Velocidade Fixa Em 115200 com controle de fluxo de hardware F115200# B115200 CS8 CRTSCTS # B115200 SANE -ISTRIP HUPCL CRTSCTS #@S @L @B login: #F115200 77..11..22.. MMooddeemmss AAnnttiiggooss ee LLeennttooss Caso se tenha um modem lento (menos de 9.600 bps), então ao invés de uma linha para uma simples velocidade, são necessárias diversas linhas com um determinado número de velocidades. Note que estas linhas estão conectadas umas às outras pela última "palavra" em cada linha, como por exemplo #38400. Linhas em branco são necessárias entre cada entrada. # Entradas de Modems 115200# B115200 CS8 # B115200 SANE -ISTRIP HUPCL #@S @L @B login: #57600 57600# B57600 CS8 # B57600 SANE -ISTRIP HUPCL #@S @L @B login: #38400 38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: #19200 19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: #9600 9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: #2400 2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: #115200 77..11..33.. MMeennssaaggeemm ddee AAcceessssoo Caso se deseje, pode-se tornar os retornos de uugetty em interessantes mensagens de acesso ao sistema. Nestes exemplos, foram colocados o nome do sistema, a linha serial e a velocidade atual. Pode-se ter os seguinte itens: @B Velocidade de conexão atual (avaliada quando @B é vista). @D Data atual no formato MM/DD/AA. @L Linha serial à qual getty está conectado. @S Nome do sistema. @T Hora atual, no formato HH:MM:SS (24 horas). @U O número de usuários conectados ao sistema. Este é um contador do número de entradas no arquivo /etc/utmp cujo conteúdo do campo ut_name seja diferente de nulo. @V O valor de VERSION, conforme o definido no arquivo de padrões. Para apresentar um caracter '@', pode-se usar '\@' ou '@@'. 77..22.. PPeerrssoonnaalliizzaannddoo oo uuuuggeettttyy Há diversos parâmetros que pode-se usar em cada porta disponível. Eles estão implementados em diferentes arquivos de configuração para cada porta. O arquivo /etc/conf.uugetty será utilizado em _t_o_d_a_s as instâncias de uugetty enquanto /etc/conf.uugetty.ttyS_N será usado somente por uma porta. Arquivos padrões de exemplo podem ser encontrados nos arquivos fontes de getty_ps, os quais estão disponíveis em algumas distribuições. Devido a questões de espaço, os arquivos não serão listados. Note que ao se utilizar versões mais antigas de getty (anteriores a 2.0.7e) ou não se esteja usando o FSSTND, então o arquivo padrão será /etc/default/uugetty.ttyS_N. O arquivo /etc/conf.uugetty.ttyS3 de Greg tem um conteúdo similar a: # exemplo de um arquivo de configuração uugetty para modems compatíveis com o # padrão Hayes que permitam a recepção de chamadas. # # arquivos de reserva de recurso alternado; caso o arquivo exista, então # uugetty será reinicializado, assim como o modem. # ALTLOCK=cua3 ALTLINE=cua3 # linha a ser inicializada INITLINE=cua3 # tempo máximo de espera para desconectar caso esteja inativo TIMEOUT=60 # comandos de inicialização do modem # formato: <esperado> <enviar> (seqüência de conversação) INIT="" AT\r OK\r\n WAITFOR=RING CONNECT="" ATA\r CONNECT\s\A # esta linha configura o tempo de espera antes de se enviar a mensagem de acesso ao sistema DELAY=1 #DEBUG=010 Adicione a seguinte linha ao arquivo /etc/inittab, fazendo com que o programa uugetty seja executado na porta serial (substituindo a informação do ambiente - arquivos de configuração, porta, velocidade e tipo padrão de terminal): S3:456:respawn:/sbin/uugetty -d /etc/default/uugetty.ttyS3 ttyS3 F115200 vt100 Reinicialize o init: linux# init q Para o parâmetro velocidade no arquivo /etc/inittab pode-se usar a maior velocidade em bps suportada pelo modem. Agora o Linux estará monitorando a porta à espera de conexões. Disque a partir de um outro sistema e acesso o sistema Linux local. O uugetty disponibiliza uma série de opções. Veja a página de manual para uma descrição completa do getty(1m). Entre outras opções existem agendamento de comandos ou retorno de chamadas por exemplo. 88.. CCoommoo CCoonnffiigguurraarr UUmm TTeerrmmiinnaall CCoonneeccttaaddoo aa UUmm PPCC?? Veja em COMO FAZER - Terminais de Texto para uma discussão mais detalhada (mas ainda incompleta) sobre terminais. AS instruções nesta seção funcionarão para terminais conectados, assim como para outros computadores ligados em uma porta serial de sua máquina Linux. 88..11.. RReeqquuiissiittooss ddee HHaarrddwwaarree Esteja seguro de se ter o tipo de cabo correto. Um cabo que anula modems adquirido em uma típica loja de informática pode ser o suficiente, mas não funcionará com parâmetros de controle de fluxo por hardware. Mas deve ser um cabo de tipo _n_u_l_l _m_o_d_e_m. Muitas lojas de computadores anunciam este cano como de "impressoras seriais". Esteja certo de usar a porta serial correta, a conexão macho DB25 ou DB9, e não a porta paralela (DB25 fêmea ou Centronics). Para um conector DB25, o mínimo necessário será: PC DB25 Macho Terminal DB25 TxD Transmissão de Dados 2 --> 3 RxD Recepção de Dados RxD Recepção de Dados 3 <-- 2 TxD Transmissão de Dados SG Sinal Terra 7 --- 7 SG Sinal Terra Esta configuração de cabo de modem nulo funciona perfeitamente entre dois computadores que usem sinais de negociação de hardware RTS/CTS, mas muitos terminais usam negociação DTR que podem ser configuradas no Linux com "stty". Uma solução é usar stty crtscts e conectar o pino 20 do terminal (DTR) com o pino 5 do PC (CTS). PC DB25 Macho Terminal DB25 TxD Transmissão de Dados 2 --> 3 RxD Recepção de Dados RxD Recepção de Dados 3 <-- 2 TxD Transmissão de Dados RTS Solicitação de Envio 4 --> 5 CTS Autorizado a Enviar CTS Autorizado a Enviar 5 <-- 4 RTS Solicitação de Envio DSR Dados Prontos 6 | DCD Detecção de Portadora 8 <-- 20 DTR Terminal de Dados Pronto SG Sinal Terra 7 --- 7 SG Sinal Terra 6 DSR Dados Prontos | DTR Terminal de Dados Pronto 20 --> 8 DCD Detecção de Portadora Caso a porta utilize um conector do tipo DB9, tente a seguinte configuração de cabo: PC DB9 Terminal DB25 RxD Recepção de Dados 2 <-- 2 TxD Transmissão de Dados TxD Transmissão de Dados 3 --> 3 RxD Recepção de Dados SG Sinal Terra 5 --- 7 SG Sinal Terra Alternativamente, um cabo de modem nulo DB)'DB25 pode ser usado (não deverá funcionar com negociação por hardware, conforme descrito anteriormente): PC DB9 Terminal DB25 RxD Recepção de Dados 2 <-- 2 TxD Transmissão de Dados TxD Transmissão de Dados 3 --> 3 RxD Recepção de Dados 6 DSR Conjunto de Dados Prontos | DTR Dados Prontos 4 --> 8 DCD Detecção de Portadora GND Sinal Terra 5 --- 7 GND Sinal Terra DCD Detecção de Portadora 1 | DSR Dados Prontos 6 <-- 20 DTR Dados Prontos RTS Requisição para Enviar 7 --> 5 CTS Autorizado a Enviar CTS Autorizado a Enviar 8 <-- 4 RTS Requisição Para Enviar (RI Indicador de Campainha 9 desnecessário) (Sim, os pinos 3 e 3 _r_e_a_l_m_e_n_t_e têm significados opostos em conectores DB9 em relação a conectores DB25). Caso não se esteja usando uma cabo de modem nulo completo, deve-se seguir o seguinte procedimento: no conector do lado do computador, conecte RTS e CTS junto e conecte ainda DSR, DCD e DTR juntos. Desta forma, quando o computador necessitar de um sinal de negociação, ele o obterá de si próprio. Agora que temos o tipo de cabo correto, conecte o terminal ao computador. Caso seja possível diga ao terminal para ignorar os sinais de controle do modem. Tente utilizar 9600 bps, 8 data bits, 1 stop bit, sem bits de paridade para a configuração do terminal (ou habilite a paridade caso se deseje uma conexão mais sofisticada). 88..22.. CCoonnffiigguurraannddoo ggeettttyy ((ppaarrttee ddoo ggeettttyy__ppss )) Consulte o manual do getty para maiores informações sobre outros programas como agetty. Adicione as entradas em getty para utilizar o terminal em /etc/gettydefs caso elas ainda não estejam configuradas: # 38400 bps Entrada de Terminal Burro DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400 # 19200 bps Entrada de Terminal Burro DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200 # 9600 bps Entrada de Terminal Burro DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600 Caso se deseje, pode-se fazer com que getty liste informações interessantes na mensagem de acesso ao sistema. Nestes exemplo, temos o nome do sistema e a linha serial. Pode-se adicionar outras informações, como por exemplo: @B Velocidade de conexão atual (avaliada quando @B é vista). @D Data atual no formato MM/DD/AA. @L Linha serial à qual getty está conectado. @S Nome do sistema. @T Hora atual, no formato HH:MM:SS (24 horas). @U O número de usuários conectados ao sistema. Este é um contador do número de entradas no arquivo /etc/utmp cujo conteúdo do campo ut_name seja diferente de nulo. @V O valor de VERSION, conforme o definido no arquivo de padrões. Para apresentar um caracter '@', pode-se usar '\@' ou '@@'. Ao se editar o arquivo /etc/gettydefs, é possível verificar sua sintaxe através do comando: linux# getty -c /etc/gettydefs Esteja seguro de que não haja nenhum arquivo de configuração getty ou uugetty para a porta serial do terminal conectado a (/etc/default/{uu}getty.ttyS_N ou /etc/conf.{uu}getty.ttyS_N), pois isto irá provavelmente inrferir com a execução de getty em um terminal. Remova este arquivo caso ele exista. Edite o arquivo /etc/inittab para que o programa getty seja executado na porta serial (substituindo a informação atual: porta, velocidade e tipo de terminal padrão): S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 Reinicialize o init: linux# init q Neste ponto deve estar visível um indicador de linha de comandos no terminal. Pode-se pressionar Enter para se obter o comando do terminal. 88..33.. NNoottaass SSoobbrree aa CCoonnffiigguurraaççããoo ddee UUmm PPCC CCoommoo UUmm TTeerrmmiinnaall Muitas pessoas configuram PCs como terminais conectados a máquinas Linux. Por exemplo, antigos PCs 8088 ou 80286 PCs são muito adequados para este propósito. Tudo o que se necessita é um disco de inicialização DOS contendo uma versão compatível com o terminal-PC e um programa de comunicação adequado. O kermit funciona bem pra este propósito, por exemplo. Pode-se encontrar versões pré-compiladas do kermit para praticamente todos os tipos de Sistemas Operacionais existentes em http://www.columbia.edu/kermit/. Outros programas populares de comunicação são o telix e o procomm, e funcionarão muito bem. Esteja seguro de informar a porta serial correta na configuração das comunicações do terminal-PC. 99.. PPoossssoo UUssaarr MMaaiiss ddee DDooiiss DDiissppoossiittiivvooss SSeerriiaaiiss?? Não será necessário ler esta seção, a menos que se deseje usar três ou mais dispositivos seriais (assumindo que não se esteja utilizando uma placa multiserial). O número de portas seriais que se pode utilizar é limitada pelo número de interrupções (IRQs) e endereços da porta de E/S utilizados. Esta não é uma limitação do Linux, mas sim do barramento do PC. Cada dispositivo serial deve ter definido seu endereço e interrupção próprias. Caso dois dispositivos compartilhem a mesma interrupção o seu funcionamento somente se dará de forma adequada caso ambos não estejam funcionando simultaneamente (em muitos casos, os dois programas não podem sequer serem executados ao mesmo tempo). Um dispositivo serial pode ser uma porta, um modem interno ou uma placa multiserial. Placas multiseriais são especialmente desenhadas para terem múltiplas portas que compartilham a mesma IRQ para todas as portas seriais da placa. Linux obtém dados a partir delas usando um endereço de E/S diferente para cada porta da placa. 99..11.. DDeeffiinniinnddoo aass IInntteerrrruuppççõõeess ddoo DDiissppoossiittiivvoo SSeerriiaall Um PC normalmente vem configurado com ttyS0 e ttyS2 na IRQ 4 e ttyS1 e ttyS3 na IRQ 3. Pode-se verificar quais as IRQs estão em uso através do comando: setserial /dev/ttyS2, etc.. A observação do arquivo /proc/interrupts mostrará algumas delas. Para utilizar mais de dois dispositivos seriais será necessário redefinir um interrupção. Uma boa opção é redefinir um interrupção da porta paralela. Um PC normalmente vem com IRQ 5 e IRQ 7 configuradas como interrupções das portas paralelas, mas pouca gente utiliza as duas. Pode-se então utilizar uma das interrupções em dispositivos seriais e ainda assim utilizar uma das portas paralelas com uma impressora, por exemplo. O programa setserial será utilizado nesta tarefa. Adicionalmente, pode ser necessário lidar com chaves de configuração na placa. Para tanto verifique a sua documentação. Configure as chaves para a IRQ desejada para cada porta. Deve-se configurar as portas, de forma haja uma e somente uma interrupção relacionada com um e somente um dispositivo serial. A seguir apresentamos um exemplo do arquivo /etc/rc.d/rc.local, o qual deve ser feito em um arquivo que seja executado na inicialização: /sbin/setserial /dev/ttyS0 irq 3 # mouse serial /sbin/setserial /dev/ttyS1 irq 4 # terminal burro Wyse /sbin/setserial /dev/ttyS2 irq 5 # modem Zoom /sbin/setserial /dev/ttyS3 irq 9 # modem USR IRQs padrões: IRQ 0 Timer canal 0 IRQ 1 Teclado IRQ 2 Controladora 2 IRQ 3 Porta Serial 2 IRQ 4 Porta Serial 1 IRQ 5 Porta Paralela 2 IRQ 6 Unidade de disquete IRQ 7 Porta paralela 1 IRQ 8 Relógio IRQ 9 Redirecionada para IRQ2 IRQ 10 não definida IRQ 11 não definida IRQ 12 não definida IRQ 13 Co-processador Matemático IRQ 14 Controladora de Disco Rígido 1 IRQ 15 Controladora de Disco Rígido 2 Não há uma receita ideal de como escolher as interrupções a serem utilizadas. Somente esteja seguro de que ela não esteja sendo usada pela placa mãe ou qualquer outra placa. IRQs 2, 3, 4, 5 ou 7 constituem boas possibilidades; "não definida" significa que atualmente nenhum padrão foi definido para estas IRQs. Note também que IRQ 2 é igual a IRQ 9. Pode-se então utilizar IRQ 2 ou 9 que o programa de controle da serial atuará adequadamente. Caso se tenha uma placa serial com um conector 16 bits, pode-se usar também IRQs 10, 11, 12 ou 15. Esteja seguro de não utilizar IRQs 0, 1, 6, 8, 13 ou 14! Elas são utilizadas pela placa mãe e ficará muito desapontada ao ser usurpada de suas interrupções. Ao finalizar confira tudo novamente no arquivo /proc/interrupts e esteja seguro de que não há conflitos. 99..22.. CCoonnffiigguurraannddoo EEnnddeerreeççooss ddee DDiissppoossiittiivvooss SSeerriiaaiiss A seguir, deve-se configurar os endereços das portas. Verifique o manual da placa no que se refere às chaves de configuração. Assim como interruptores, somente pode haver um dispositivo serial para cada endereço. As portas normalmente são configuradas da seguinte forma: ttyS0 address 0x3f8 ttyS1 address 0x2f8 ttyS2 address 0x3e8 ttyS3 address 0x2e8 Escolha qual endereço se deseja para cada dispositivo serial e configure as chaves adequadamente. Meu modem está em ttyS3, o mouse em ttyS0 e o terminal em ttyS2. Durante a inicialização do sistema, Linux verifica as portas seriais nos endereços definidos. A IRQ checada pelo Linux pode não corresponder a IRQ configurada através das chaves. Não se preocupe com isso. Linux não executa qualquer processo de detecção de IRQs no início do sistema, pois este processo é falho e pode se facilmente "enganado". Utilize o programa setserial para informar ao Linux qual porta IRQ é utilizada. Pode-se checar o arquivo /proc/ioports para verificar quais os endereços de portas de E/S estão em uso após a inicialização do Linux. 1100.. CCoommoo CCoonnffiigguurraarr MMiinnhhaass PPoorrttaass SSeerriiaaiiss PPaarraa VVeelloocciiddaaddeess MMaaiioorreess?? QQuuaall AA VVeelloocciiddaaddee QQuuee DDeevvee SSeerr UUssaaddaa CCoomm MMeeuu MMooddeemm?? Esta seção deve ajudá-lo a descobrir qual a velocidade a ser utilizada ao se usar o modem com o programa de comunicação, ou com o programa getty. Normalmente basta configurar a velocidade para um parâmetro fornecido por getty ou por um menu no programa de comunicações (ou no arquivo de configuração). Se por alguma razão isto não funcionar para velocidades maiores, há uma forma alternativa através do fornecimento de opções especiais para o programa setserial: com as opções spd_hi ou spd_vhi fornecidas para setserial, a configuração a 38400 irá na verdade configurar a velocidade para 57600(spd_hi) ou 115200 (spd_vhi). Esteja certo de ter no mínimo uma UARTs para velocidades maiores. Seguem algumas velocidades sugeridas: · Caso se tenha um modem 28.8 Kbps (V.34), 33.6 Kbps (V.34) ou 56 Kbps (V.90) use a velocidade de 115200 bps. · Caso se tenha um modem 14.4 Kbps (V.32 bis) com uma compressão V.42 bis use a velocidade de 57.600 bps. · Caso se tenha um modem 9.600 bps (V.32) com compressão de dados V.42 bis, use a velocidade de 38.400 bps. · Caso se tenha um modem mais lento que 9.600 bps (V.32), configure a velocidade para a maior mais suportada pelo modem. Por exemplo, 300 bps (V.21/Bell 103), 1200 bps (V.22/Bell 212A) ou 2400 bps (V.22bis). Teste o modem inicialmente na linha de comando e quando tudo estiver funcionando, coloque-o nos arquivos /etc/rc.d/rc.serial, /etc/rc.d/rc.local ou em /etc/rc.boot/0setserial fazendo com que eles sejam executados no momento da inicialização do sistema. Esteja seguro de estar usando um caminho válido para o comando setserial e um nome de dispositivo válido. Pode-se verificar a configuração de uma porta serial através do comando: setserial -a /dev/ttyS3 1111.. PPrrooggrraammaass ee UUttiilliittáárriiooss ddee CCoommuunniiccaaççããoo Segue uma lista de alguns softwares de comunicação que podem ser obtidos via FTP, caso não estejam presentes na distribuição. · ecu - um programa de comunicação. · C-Kermit <http://www.columbia.edu/kermit/> - portável, programável, comunicação serial e TCP/IP incluindo transferência de arquivos e conversões de conjunto de caracteres. · minicom - similar ao programa de comunicações telix. · procomm - programa de comunicações similar ao procomm com zmodem. · seyon - programa de comunicação baseado no XWindow. · xc - pacotes de comunicações xcomm. · Outros programas úteis são term e SLiRP. Eles oferecem funcionalidades TCP/IP usando uma conta de acesso a um ambiente de trabalho. · O screen é outro programa multisessão. Comporta-se como se tivesse consoles virtuais. · O callback é um programa que permite a chamada permite as chamadas de retorno efetuadas pelo modem. · O mgetty+fax é lido com fax e provê uma alternativa a ps_getty. · O ZyXEL é um programa de controle para modems ZyXEL U-1496. Lido com recebimento de chamadas, discagem, segurança no recebimento de chamadas de retorno e caixa de postal com voz. · Os softwares SLIP e PPP podem ser encontradas em ftp://metalab.unc.edu/pub/Linux/system/network/serial. · Outras coisas podem ser encontradas em ftp://metalab.unc.edu/pub/Linux/system/serial e ftp://metalab.unc.edu/pub/Linux/apps/serialcomm ou um de seus muitos espelhos. Estes são os diretórios onde os programas para portas seriais são mantidos. 1122.. DDiiccaass ee TTóóppiiccooss DDiivveerrssooss Seguem aqui algumas dicas que podem ser muito úteis: 1122..11.. kkeerrmmiitt ee zzmmooddeemm Para usar zmodem com kermit, adicione o seguinte conteúdo ao arquivo .kermrc: define rz !rz < /dev/ttyS3 > /dev/ttyS3 define sz !sz \%0 > /dev/ttyS3 < /dev/ttyS3 Esteja seguro de colocar a porta correta do modem. Então para utilizá-lo, basta digitar rz ou sz <nome_do_arquivo> e o indicador de linha de comandos kermit. 1122..22.. CCoonnffiigguurraaççããoo ddee ttiippooss ddee tteerrmmiinnaaiiss ""aauuttoommaaggiiccaammeennttee"" Para configurar os tipos de terminais automaticamente ao se conectar ao sistema, adicione o tipo de terminal como uma entrada no arquivo /etc/inittab. Caso se tenha um terminal vt100 em ttyS1, pode-se adicionar ``vt100'' ao comando getty: S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 Outros gettys têm opções similares. Pode-se usar o comando tset, o qual pode estabelecer as características do terminal durante o acesso do usuário e não depende de nenhum padrão. 1122..33.. CCoommaannddoo llss eemm ccoorreess eemm ccoonneexxõõeess sseerriiaaiiss Caso o ls esteja gerando problemas na emulação de terminal com funcionalidades em cor, desabilite-as. Os comandos ls --color e ls --colour utilizam as funcionalidades de cores. Algumas instalações têm o comando ls configurado para cores por padrão. Verifique os arquivos /etc/profile e /etc/csh.cshrc como nomes alternativos do comando ls. Pode-se criar nomes alternativos ao ls com o formato ls --no-color, caso não se deseje alterar os padrões do sistema. 1122..44.. IImmpprriimmiinnddoo eemm uummaa iimmpprreessssoorraa sseerriiaall ccoonneeccttaaddaa Há um programa chamado vtprint, disponível em ftp://ftp.sdsu.edu/pub/vtprint e http://www.sdsu.edu/~garrett. Outro programa com funcionalidades similares é chamado xprt. Ele pode ser encontrados em ftp://metalab.unc.edu/pub/Linux/system/printing. 1122..55.. ÉÉ ppoossssíívveell oo LLiinnuuxx ccoonnffiigguurraarr ddiissppoossiittiivvooss sseerriiaaiiss aauuttoommaattiiccaammeennttee?? Sim. Caso a configuração já não tenha sido realizada desta forma, pode-se configurar o Linux para detectar e configurar dispositivos seriais automaticamente ao ser inicializado. Caso necessário deve-se adicionar a seguinte linha: /sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig ao arquivo /etc/rc.d/rc.local, /etc/rc.d/rc.serial ou em /etc/rc.boot/0setserial. Isto deve ser realizado para cada porta serial que se deseje autoconfigurar. Esteja seguro de fornecer um nome de dispositivo que realmente exista na sua máquina. 1122..55..11.. NNoottaass ppaarraa ppllaaccaass mmuullttiisseerriiaaiiss Para endereços de placas e IRQs, observe os arquivos rc.serial ou /etc/rc.boot/0setserial que acompanham o programa setserial. Eles trazem uma série de detalhes sobre placas multiseriais, incluindo-se endereços de E/S e nomes de dispositivos. 1122..66.. UUssaannddoo UUmm CCoonnssoollee SSeerriiaall Existe um artigo no número 36 da revista _L_i_n_u_x _J_o_u_r_n_a_l, http://www.ssc.com/lj/issue36/index.html, que explica como usar um console serial. Veja também o COMO FAZER Terminais Texto. 1122..77.. MMaaiioorreess vveelloocciiddaaddeess eemm sseerriiaaiiss Caso se esteja obtendo baixas velocidades e erros em uma porta serial em um sistema com dispositivos de discos (E)IDE, pode-se utilizar o programa hdparm. É um utilitário que pode modificar parâmetros (E)IDE, incluindo desmascaramento de outras IRQs durante uma interrupção de disco. Este procedimento irá incrementar a performance de tempo de resposta e ajudará a eliminar os erros de espera. Esteja certo de ler as páginas de manual on-line muito cuidadosamente, uma vez que algumas combinações de dispositivos e controladoras não funcionam muito bem e podem corromper o sistema de arquivos. Verifique também um utilitário chamado irqtune o qual irá mudar a prioridade do IRQ de um dispositivo, por exemplo a porta serial a qual um modem esteja conectado. Este procedimento poderá incrementar a velocidade da porta serial do sistema local. O FAQ do irqtune está disponível em http://www.best.com/~cae/irqtune. 1133.. UUmm ppaassssoo aaddiiaannttee...... Esta seção não necessita ser lida, mas pode fornecer algumas informações adicionais e um melhor conceito do Unix e do mundo das telecomunicações. 1133..11.. OO qquuee ssããoo aarrqquuiivvooss ddee rreesseerrvvaa ddee rreeccuurrssooss?? Arquivos de reserva de recursos são arquivos simples que indicam que um dispositivo em particular está em uso no momento. Eles são mantidos no diretórios /usr/spool/uucp ou /var/lock. Arquivos de reserva do Linux são denominados LCK.._n_o_m_e, onde _n_o_m_e é a denominação do dispositivo ou o nome do site UUCP. Certos processos criam estes arquivos, passando a ter então acesso exclusivo aos dispositivos. Por exemplo caso se faça uma conexão discada com o modem, um arquivo de reserva de recursos avisa aos outros processos que o modem já está sendo usado. Muitos programas verificam a existência deste tipo de arquivo e tentam determinar se o arquivo ainda é válido através da checagem da existência do processo que criou o arquivo junto à tabela de processos em execução. Caso o arquivo encontrado seja válido, ou seja, o processo que criou o arquivo de reserva ainda esteja sendo executado, o novo processo deve ser finalizado. Caso o processo que criou o arquivo não esteja em execução, o novo programa removerá o arquivo e utilizará o dispositivo criando o seu próprio arquivo de reserva de recurso. Alguns programas simplesmente finalizam avisando que o dispositivo está em uso, sem verificar a tabela de processos. 1133..22.. ````bbaauudd'''' VVss.. ````bbppss'''' ``baud'' e ``bps'' são talvez os termos mais mal usados no campo da computação e telecomunicações. Muitas pessoas usam estes termos indiscriminadamente, como se fossem idênticos, quando na verdade não são. bbaauudd A taxa de bauds é a medida de quantas vezes em um segundo um sinal, por exemplo um enviado por um modem (mmoodulador- ddeemmodulador) é alterado. Por exemplo uma taxa de bauds de 1200 significa dizer que um sinal muda a cada 833 microsegundos. Taxas de bauds comuns são 50, 75, 110, 300, 600, 1200 e 2400. Muitos modems de alta velocidade rodam a uma taxa de 2.400 bauds. Devido à limitação de banda em linhas de voz, taxas maiores são muito difíceis de serem obtidas e somente funcionam em linhas de voz de alta qualidade. Múltiplos bits podem ser codificados por baud a fim de se obter taxas de envio de bits superiores a taxa de bauds. ``Baud'' tem seu nome em homenagem a Emile Baudot, o inventor da impressora telegráfica assíncrona. bbppss A taxa de bps (bits por segundo) significa quantos bits por segundo foram transmitidos. Taxas comuns de bps eram oficialmente conhecidas como 50, 75, 110, 300, 1200, 2400, 9600. Hoje temos ainda 14.4 Kbps, 28.8 Kbps, 33.6 Kbps e 56 Kbps; estes valores não correspondem às taxas no cabo que interliga o modem à porta serial, que são (além das antigas velocidades de modems citadas acima): 19.2 Kbps, 38.4 Kbps, 57.6 Kbps e 115.2Kbps. Usando modems com compressão V.42 bis (que pode chegar até uma taxa de 4:1), taxas de até 115.2 Kbps tornam-se possíveis. Então, se um modem de alta velocidade está obtendo 2.400 bauds, como eles podem enviar dados a 14.400 bps ou ainda mais? Os modems atingem uma taxa de bps maior que a taxa de bauds através da codificação de diversos bits em cada mudança de sinal ou mudança de fase. Ou seja quando 2 ou mais bits são codificados por baud, a taxa de bps supera a taxa de bauds. Caso o modem conecte-se a 14.400 bps, ele está enviando 6 bits por mudança de fase a 2.400 bauds. Como tudo isso começou? Quando os antigos modems de baixa velocidade eram os mais rápidos disponíveis, a taxa de bps era efetivamente igual à taxa de bauds. Um bit era enviado a cada mudança de fase. Podia-se usar bps ou baud indiscriminadamente, uma vez que eles tinham o mesmo valor. Por exemplo, um modem de 300 bps tinha também uma taxa de bauds igual a 300. Isso começou a mudar quando modems mais rápidos surgiram e a taxa de bits superou a de bauds. 1133..33.. OO qquuee ssããoo UUAARRTTss?? CCoommoo eellaass aaffeettaamm aa ppeerrffoorrmmaannccee?? UARTs (Transmissor e Receptor Assíncrono Universal ou UUniversal AAsynchronous RReceiver TTransmitter) são chips localizados na placa serial do PC (caso se utilize uma) ou na placa mãe. A função da UART pode ser executada também por por chips que executam outras funções. O propósito da UART é converte dados para bits, enviá-los pela linha serial e reconstruir os dados novamente na outra extremidade da linha. UARTs lidam com dados divididos em pedaços de bytes, os quais são convenientemente o tamanho dos caracteres ASCII. Suponhamos que se tenha um terminal conectado a um PC. Ao se digitar um caractere, o terminal envia o caracter ao transmissor (também um UART). O transmissor envia o byte em uma linha serial, um bit de cada vez, em uma velocidade específica. Na ponta do PC, a UART receptora recebe todos os bits, recompondo o byte e o disponibiliza em um buffer. Há dois tipos diferentes de UARTs. As chamadas UARTs burras - 8250 e 16450, e UARTs FIFO - 16550A. Para entender as suas diferenças, inicialmente vamos examinar o que acontece quando uma UART envia ou recebe um byte. A UART por si só não faz absolutamente nada com os dados, ela simplesmente os envia ou os recebe. Para UARTS originais, a CPU obtém uma interrupção a partir do dispositivo serial toda vez que um byte é enviado ou recebido. A CPU então move o byte recebido para fora do buffer da UART para algum lugar na memória ou fornece outro byte a UART para ser enviado. As UARTs 8250 e 16450 têm somente um byte de buffer, o que significa que cada vez que 1 byte é recebido ou enviado, a CPU será interrompida. Em baixas velocidades, isso funciona bem, porém em taxas maiores a CPU se torna tão ocupada lidando com a UART que não lhe resta muito tempo para lidar com outras tarefas. Em alguns casos, a CPU não consegue atender o serviço de interrupções adequadamente, fazendo com que o byte recebido anteriormente seja sobrescrito, uma vez que eles estejam chegando em uma velocidade maior da que eles possam ser tratados. É nesse momento que a UART 16550A se torna muito útil. Estes chips vêm com FIFOs de 16 bytes, o que significa que eles podem receber ou transmitir até 14 bytes antes de interromper a CPU. Não somente podem esperar, assim como podem transferir os 14 bytes de uma só vez. Apesar da interrupção não estar sempre configurada para receber todos os 14 bytes em uma única transferência, esta vantagem ainda é significativa sobre outros tipos de UART, os quais têm somente um 1 byte de buffer. A CPU recebe menos interrupções e é livre para outras coisas. Dados não são perdidos e tudo funciona perfeitamente (existe uma UART 16550, mas ela é tratada como uma 16450 uma vez que tem problemas). Em geral, UARTs 8250 e 16450 devem ser adequadas para velocidades de até 38.400 bps. Para velocidades maiores, possivelmente se tenha perda de dados. Outros sistema operacionais de PC como DOS não são multitarefas, podendo então lidarem de maneira mais otimizada com UARTs mais antigas. Esta é a causa porque não se percebe a perda de dados até que se passe a utilizar o Linux. Placas multiseriais inteligentes e equipamentos que não usem UARTs utilizam chips DSP para disponibilizarem buffers e controle que liberam ainda mais a CPU. Por exemplo as placas Cyclades Cyclom e Stallion EasyIO usam uma UART RISC Cirrus Logic CD1400, e muitas placas usam CPUs 80186 ou ainda CPUs RISC especiais para lidar com E/S serial. Tenha em mente que UARTs do tipo burras não são ruins, elas simplesmente não conseguem lidar com velocidades de transmissão maiores. Não se deve ter nenhum problema em se conectar um mouse ou um terminal a essas UARTs. Porém para modems de alta velocidade uma UART 16550A é uma necessidade. Muitos do PCs mais novos (486s, Pentiums ou superiores) vêm com uma UART 16550A (nota: no momento da tradução deste COMO FAZER podemos afirmar que praticamente inexistem equipamentos novos sendo fabricados com UARTs burras). Caso se tenha um equipamento realmente antigo pode- se atualizá-lo através da aquisição de chips 16550A e da substituição das UARTs antigas. Porém se a funcionalidade está agregada a outros chips, a substituição não será possível. Caso uma UART 16450 esteja conectada à placa, a atualização pode ser simples, uma vez que ambas são compatíveis pino a pino em seus conectores. Pode ser mais simples simplesmente comprar uma placa serial na Internet (poucas lojas têm este tipo de produto atualmente). 1144.. RReessoolluuççããoo ddee PPrroobblleemmaass 1144..11.. EEssttaammooss rreecceebbeennddoo aa mmeennssaaggeemm ````lliinnhhaa NNNNNN ddoo iinniittttaabb éé iinnvváálliiddaa''''.. Esteja certo de usar a sintaxe correta da versão disponível do init. Diferentes programas init podem ter sintaxes diversas no arquivo /etc/inittab. Esteja certo de estar usando a sintaxe correta da versão disponível do getty. 1144..22.. DDuurraannttee aa ddiissccaaggeemm éé rreecceebbiiddaa aa mmeennssaaggeemm ````//ddeevv//ccuuaa NN :: ddiissppoossiittiivvoo oouu rreeccuurrssoo ooccuuppaaddooss''''.. Este problema pode acontecer quando DCD ou o DTR não estão corretamente configurados. DCD somente pode ser configurado quando houver uma conexão estabelecida (ou seja quando se recebe uma chamada), e não quando getty estiver monitorando a porta serial. Esteja seguro de que o modem está configurado para somente ativar o DCD quando houver uma conexão estabelecida. DTR deve ser configurado sempre que a porta estiver em uso, como por exemplo sendo monitorada pelo getty, kermit, ou algum outro programa de comunicação. Outra causa comum de erros de dispositivos ocupados, se dá quando se configura a porta serial para usar uma interrupção já em uso por algum outro dispositivo. Cada vez que um dispositivo é inicializado ele solicita ao Linux permissão para usar a interrupção de hardware. O sistema operacional mantém controle sobre qual interrupção é designada para quem, e caso a interrupção já esteja sendo utilizada, o dispositivo não poderá ser adequadamente inicializado. O dispositivo não tem como informar exatamente este tipo de ocorrência, exceto ao se tentar utilizar a interrupção, quando retornará a mensagem de erro de dispositivo em uso. Verifique as interrupções de todas as placas (serial, Ethernet, SCSI, etc.), buscando os conflitos de IRQs. 1144..33.. AA mmeennssaaggeemm ""ggeettttyy rreessppoonnddeennddoo mmuuiittoo rraappiiddaammeennttee:: ddeessaabbiilliittaaddoo ppoorr 55 mmiinnuuttooss"".. Esteja certo de que o modem está configurado corretamente. Observe os registradores E e Q. Isso pode ocorrer quando o modem estiver trocando informações com o programa getty. Esteja seguro de estar chamando getty corretamente a partir do /etc/inittab. Usar a sintaxe ou nomes de dispositivos incorretos irá provocar sérios problemas. Verifique se o arquivo /etc/gettydefs possui a sintaxe correta através do comando: linux# getty -c /etc/gettydefs Isto pode acontecer quando a inicialização do uugetty apresenta alguma falha. Veja a seção ``getty ou uugetty ainda não funciona''. 1144..44.. DDiissppoossiittiivvooss sseerriiaaiiss ssããoo lleennttooss oouu ppooddeemm ttrraattaarr ooss ddaaddooss eemm ssoommeennttee uummaa ddiirreeççããoo.. Possivelmente existe um conflito de IRQ. Esteja seguro de que não há IRQs em uso por mais de um dispositivo. Verifique todas as placas (serial, Ethernet, SCSI, etc.). Esteja seguro de que as chaves de configuração e os parâmetros do comando setserial estão corretos para todos os dispositivos seriais. Verifique ainda se não há conflitos em /proc/ioports e /proc/interrupts. 1144..55.. OO mmooddeemm ccoonnggeellaa aappóóss ddeesslliiggaarr oouu uuuuggeettttyy nnããoo rreessppoonnddee.. Isso pode acontecer caso o modem não seja reinicializado quando a DTR é desligada. Eu vi os indicadores luminosos RD e SD ficarem "loucos" quando isto aconteceu comigo, ou seja, o modem precisa ser reinicializado. Muitos modems compatíveis com o padrão Hayes suportam esta funcionalidade através do parâmetro &D3, mas não o meu US Robotics Courier, o qual teve que ser configurado com &D2 e S13=1. Verifique o manual do modem. 1144..66.. OO tteerrmmiinnaall ccoonneeccttaaddoo aaoo PPCC ccoonnggeellaa aappóóss ssee ddiiggiittaarr oo nnoommee ddee aacceessssoo.. · Caso se esteja utilizandogetty: Provavelmente não se tem uma entrada do parâmetro CLOCAL no arquivo /etc/gettydefs para o terminal e provavelmente não se está usando um cabo de modem null completo. Será necessário configurar CLOCAL, o qual indica ao Linux que os sinais de controle de modem devem ser ignorados. Segue um exemplo de como fazer isto: # 38400 bps - Entrada de Terminal Burro DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400 # 19200 bps - Entrada de Terminal Burro DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200 # 9600 bps - Entrada de Terminal Burro DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600 A seguir, finalize com o comando kill o processo getty fazendo com que um novo seja acionado utilizando as novas configurações. · Caso se esteja utilizando agetty: Adicione o indicador -L à linha agetty no arquivo /etc/inittab. Isso fará com que os sinais de controle de modem seja ignorados. A seguir reinicialize o init através do comando init q. Eles devem ter a seguinte aparência: s1:345:respawn:/sbin/agetty -L 9600 ttyS1 vt100 1144..77.. EEmm aallttaass vveelloocciiddaaddeess,, oo mmooddeemm ppeerrddee ddaaddooss.. Caso se esteja tentando usar o modem em uma velocidade superior a 38.400 bps e não se tem uma UART 16550A, deve-se atualizá-la. Veja a seção ``O que são UARTs?'' a qual aborda o tema. 1144..88.. NNaa iinniicciiaalliizzaaççããoo LLiinnuuxx nnããoo ppaarreeccee rreeccoonnhheecceerr ooss ddiissppoossiittiivvooss sseerriiaaiiss nnaa ffoorrmmaa eemm qquuee eelleess ffoorraamm ccoonnffiigguurraaddooss.. Esta é a única afirmação correta. Linux não faz qualquer detecção na sua inicialização, mas somente a detecção das portas seriais. Ignore o que quer que ele diga sobre IRQ porque ele está simplesmente assumindo os padrões, o que se deve ao fato desta detecção inicial não ser confiável. Porém quando o programa setserial altera as IRQ, o resultado pode ser visto na tela de inicialização. Então, mesmo que se tenha o ttyS2 configurado na IRQ 5, ainda assim veremos: Jan 23 22:25:28 misfits vmunix: tty02 at 0x03e8 (irq = 4) is a 16550A na inicialização do Linux. Deve-se usar o programa setserial para indicar qual a IRQ que está sendo usada. 1144..99.. OO rrzz ee//oouu oo sszz nnããoo ffuunncciioonnaamm aaoo ssee ccoonneeccttaarr oo LLiinnuuxx aa uumm mmooddeemm.. Caso o Linux procure por /dev/modem ao se tentar transferir arquivos, verifique o arquivo /etc/profile ou /etc/csh.cshrc. Pode haver uma grande quantidade de nomes alternativos em algumas distribuições, mais notadamente na Slackware. Essas abreviações conflitam com os programas zmodem. Retire-os ou faça as devidas correções. 1144..1100.. AA tteellaa eessttáá aapprreesseennttaannddoo ccaarraacctteerreess eessttrraannhhooss.. Isso ocorre quando se envia dados binários para consoles virtuais ou algumas vezes em conexões seriais. Isso pode ser corrigido ao se digitar echo ^v^[c. Para caracteres de controle sem os devidos pares, pode-se digitar: linux% echo <ctrl>v<esc>c 1144..1111.. ggeettttyy oouu uuuuggeettttyy aaiinnddaa nnããoo ffuunncciioonnaamm Existe a opção DEBUG que acompanha o getty_ps. Edite o arquivo /etc/conf.{uu}getty.ttyS_N e adicione DEBUG=_N_N_N, onde _N_N_N é uma das seguintes combinações de números de acordo com o que se deseje depurar: D_OPT 001 opções de configuração. D_DEF 002 processamento padrão de arquivos. D_UTMP 004 processamento de utmp/wtmp. D_INIT 010 inicialização da linha (INIT). D_GTAB 020 processamento do arquivo gettytab. D_RUN 040 outros diagnósticos em tempo de execução. D_RB 100 depuração de chamada de retorno. D_LOCK 200 processamento de arquivo de reserva uugetty. D_SCH 400 processamento de agendamento. D_ALL 777 tudo. Configurar DEBUG=010 é uma boa opção de início. Caso se esteja executando syslogd, as informações de depuração serão apresentadas em /tmp/getty:ttyS_N para a depuração do getty e em /tmp/uugetty:ttyS_N para o uugetty. Verifique no arquivo de depuração o que está acontecendo. Muitas vezes serão necessários novos parâmetros no arquivo de configuração assim como nova configuração do modem. Pode-se ainda tentar o uso de mgetty. Algumas pessoas podem ter mais sorte com isso. 1155.. OOuuttrraass FFoonntteess ddee IInnffoorrmmaaççããoo · Páginas de manual on-line para: agetty(8), getty(1m), gettydefs(5), init(1), login(1), mgetty(8), setserial(8). · Manual de modem ou terminal. · COMO FAZER NET-3: tudo sobre redes, incluindo SLIP, CSLIP e PPP. · COMO FAZER PPP: auxílio com o PPP. · COMO FAZER Impressão: para a configuração da impressão serial. · COMO FAZER Programação Serial: aborda alguns aspectos da programação de portas seriais. · COMO FAZER Terminal: tudo necessário sobre o programa term. · COMO FAZER Terminal Texto: como eles funcionam, como instalá-los e configurá-los. · COMO FAZER UPS: configurando sensores UPS a uma porta serial. · COMO FAZER UUCP: para informações e configuração UUCP. · Grupos de Notícias: comp.os.linux.answers FAQs, COMO FAZER, READMEs, etc. sobre Linux. comp.os.linux.hardware Compatibilidade de hardware com o sistema operacional Linux. comp.os.linux.networking Rede e comunicação sob Linux. comp.os.linux.setup Instalação e administração do sistema Linux. comp.terminals · A lista de discussão sobre seriais em Linux. Para inscrever-se, envie uma mensagem para majordomo@vger.rutgers.edu, com o texto ``subscribe linux-serial'' no corpo da mensagem. Caso se envie uma mensagem com a expressão ``help'' será enviada a mensagem de ajuda. O servidor atende ainda a muitas outras listas Linux. Envie o comando ``lists'' para obter uma relação de todas as listas disponíveis. · Um documento que discute a comunicação serial e placas multiseriais está disponível no site Cyclades em http://www.cyclades.com. · FAQs sobre Modems: Navas 28800 Modem FAQ <http://web.aimnet.com/~jnavas/modem/faq.html>. Curt's High Speed Modem Page <http://www.teleport.com/~curt/modems.html>. · Programação Serial: Como Fazer Programação Serial: Advanced Programming in the UNIX Environment <http://heg- school.aw.com/cseng/authors/stevens/advanced/advanced.nclk>, por W. Richard Stevens (ISBN 0-201-56317-7; Addison-Wesley). POSIX Programmer's Guide <http://www.ora.com/catalog/posix/>, por Donald Levine (ISBN 0-937175-73-0; O'Reilly). 1166.. CCoonnttrriibbuuiiççõõeess A maior parte do COMO FAZER original foi escrito por Greg Hankins, greg.hankins@cc.gatech.edu. Ele ainda reescreveu muitas das contribuições visando manter a continuidade no estilo do documento. Ele comenta: "Obrigado a todos que contribuíram com o desenvolvimento deste documento, cuja lista tornou-se muito extensa (algo como mais de cem). Agradecimentos especiais a Ted T'so por responder as questões sobre programas de controle de dispositivos seriais, Kris Gleason que mantinha o getty_ps e Gert Döring que mantém mgetty".