Instalando e configurando Modem

Download

Imprimir


Com certeza você já ouviu algum colega falar que para instalar o Modem e agora as placas Wireless no Linux é uma tarefa complicada para usuários iniciantes, mas não é. Abaixo seguem alguns conceitos que você deve saber antes de instalar um Modem no Linux.


Para fazer uma instalação de um modem você deve ter conhecimentos Intermediário de Linux tais como: instalação de pacotes e de programas fontes, compactação e descompactação de arquivos, configuração do kernel, módulos, mensagens de logs e etc.


Os modems utilizam portas de comunicação serial, onde temos quatro portas padrão seriais de comunicação que são identificadas por uma porta de I/O (Entrada e Saída) e um canal de interrupção IRQ como mostra a tabela abaixo


Dispositivo no Linux

Dispositivo no Windows

IRQ


I/O

/dev/ttyS0

COM1

4

0x03f8

/dev/ttyS1

COM2

3

0x02f8

/dev/ttyS2

COM3

4

0x03f8

/dev/ttyS3

COM4

3

0x02f8


Repare que as portas de comunicação serial ttyS0 e ttyS2 utilizam o mesmo canal de interrupção IRQ 4 e as portas ttyS1 e ttyS3 utilizam o mesmo IRQ 3, dessa forma temos duas portas disponíveis, que geralmente são as portas ttyS0 e ttyS1. Os modems também podem utilizar uma porta de I/O e um canal de comunicação de IRQ diferente do padrão de ttyS0 a ttyS3, por exemplo ttyS4, ttyS5, ...


Softmodems e Hardmodems


Grande parte das placas de fax-modem PCI não são suportadas pelo Linux pelo fato de serem softmodems, ou seja, são modems de software (winmodems – linmodemns). Já os hardmodems (modems de hardware) são suportados pelo Linux e podem ser configurados sem precisar instalar o driver do modem.



Hardmodems


Os modems hardmodems são suportados pelo kernel do Linux por que possuem um driver padrão, para ser usado por hardmodems que possuem todos os circuitos necessários para seu funcionamento e exigindo a utilização de poucos recursos do processador.


Abaixo temos uma imagem de um hardmodem US Robotics 56K PCI, com os componentes que o diferencia de um softmodem onde são descritos abaixo na imagem.




  1. Transformador – Protege o modem contra oscilações de voltagens vindas da linha telefônica

  2. Relay – Responsável pela conexão física entre o modem e a linha telefônica

  3. Speaker – Responsável pelo som de discagem do modem

  4. Capacitores – Armazenam energia

  5. DSP – (digital signal processor – processador de sinal digital) é um microprocessador especializado especialmente em processamento de sinal digital.

  6. UART – (universal asynchronous receiver transmitter – transmissor de recebimento universal assíncrono) é um circuito integrado desenvolvido para para implementação da interface de comunicação serial

  7. Buffer – Armazena os dados recebidos temporariamente e os transmite quando o processador estiver desocupado

  8. Memória Flash – É onde ficar armazenado o firmware do modem (programa que fica embutido dentro do dispositivo de hardware do modem)

  9. Mov – É uma espécie de fusível usado para proteger o modem contra oscilações de energia

  10. Codec – Faz a transformação dos sinais digitais em analógicos a serem transmitidos pela linha telefônica


Softmodems


Os softmodmens não possuem todos os circuitos necessários para seu funcionamento, e exigindo a utilização do processador para controlar seus circuitos através de softwares para emular suas funções e diminuindo o desempenho do processador.


Muitos fabricantes de softmodems desenvolvem drivers diferentes, o que levaram fabricantes e hackers ao desenvolvimento de um driver padrão de softmodem para Linux e Windows. Para baixar os drivers de softmodems para Linux acesse o site do fabricante tais como: US Robotics Intel, Conexant, PCTel, Lucent, Motorola ou o site www.linmodems.org


Abaixo temos duas imagens de softmodem : a esquerda um Robotics e a direita um PCTel, onde é usado um chip chamado DAA que substitui a UART, o buffer, o Chip DSP, o Codec e a Memória Flash.





Exibindo informações do Modem


Agora vamos descobrir o modelo e o fabricante do Modem com o comando lspci especificando pela seção Communication referente ao Modem


$ lspci -v | grep Communication

00:08.0 Communication controller: PCTel Inc HSP MicroModem 56 (rev 01)

Subsystem: PCTel Inc HSP MicroModem 56

Flags: medium devsel, IRQ 11

I/O ports at c000 [size=64]

Capabilities: <access denied>


Exiba o Modem com o comando lshw e procure pela seção communication , onde informa que é um Modem do fabricante PCTel e modelo HSP MicroModem.

$ lshw | less

*-communication UNCLAIMED

description: Communication controller

product: HSP MicroModem 56

vendor: PCTel Inc

physical id: 8

bus info: pci@00:08.0

version: 01

width: 32 bits

clock: 33MHz

capabilities: cap_list

configuration: latency=0

resources: ioport:c000-c03f irq:11


Configuração de Hardmodems


Para a configurar um hardmodem não é necessário baixar o driver e instala-lo, é necessário apenas:



Por exemplo no Debian, Ubuntu ou Kurumin você pode instalar o pacote com apt-get


# apt-get install setserial


Primeiramente descubra os endereço I/O e o canal de interrupção IRQ do modem com lspci -v


$ lspci -v | grep Communication

00:08.0 Communication controller: US Robotics/3Com 56K FaxModem Model 5610 (rev 01)

Subsystem: US Robotics/3Com

Flags: medium devsel, IRQ 10

I/O ports at d000 [size=64]

Capabilities: <access denied>


Repare acima os valores do canal de interrupção IRQ 10 e a porta de comunicação I/O 0xd000 (“0x“ é usado para especificar o endereço hexadecimal da porta).


Atenção caso tenha um mouse serial conectado no dispositivo /dev/ttyS0, use um dispositivo diferente para o modem


Agora que temos dos dados de IRQ e I/O, falta agora obter os dados da porta serial e UART do modem com o comando abaixo:


# cat /proc/tty/driver/serial

serinfo:1.0 driver:5.05c revision:2001-07-08
     0: uart:16550A port:3F8 irq:4 baud:1200 tx:8 rx:116309 fe:22 brk:16 
RTS|DTR|DSR
     1: uart:unknown port:2F8 irq:3
     2: uart:unknown port:3E8 irq:4
     3: uart:unknown port:2E8 irq:3
     4: uart:16550A port:d000 irq:10 tx:0 rx:0 CTS|DSR
     5: uart:unknown port:1A8 irq:9


Perceba que o saída do comando acima exibe o IRQ 10 que se encontra na linha 4, que indica que o modem está conectado no dispositivo ttyS4 (COM5 do Windows). Agora temos os dados necessários para configurar o modem:

Agora exibindo os dispositivos em /dev/ repare que temos ttyS0, ttyS1, ttyS2 e ttyS3 que é o padrão, mas não existe o dispositivo /dev/ttyS4, onde devemos criá-lo com comando MAKEDEV ou mknod como mostra o exemplo abaixo.


Utilizando o comando MAKEDEV para criar o dispositovo no Debian o dispositivo será criado dentro do diretório /dev/.static/dev, onde você pode criar um link simbólico apontando para o dispositivo e em outras distribuições Linux como Fedora será criado em /dev/.]


Debian

# cd /dev

# MAKEDEV ttyS4

# ls -l .static/dev/ttyS4

crw-rw---- 1 root dialout 4, 68 2008-04-26 12:05 .static/dev/ttyS4

# ln -s .static/dev/ttyS4 /dev/ttyS4

# ls -l ttyS4

lrwxrwxrwx 1 root root 17 2008-04-26 12:09 ttyS4 -> .static/dev/ttyS4


Fedora

# cd /dev

# MAKEDEV ttyS4

# ls -l ttyS4

lrwxrwxrwx 1 root root 17 2008-04-26 12:09 ttyS4 -> /dev/ttyS4


Usando o comando mknod você deve especificar o número MAIOR (neste caso 4) e MENOR (neste caso 68) e mudar as permissões para o usuário root e dialout como mostra os comandos abaixo:


# cd /dev

# mknod ttyS4 c 4 68

# chown root.dialout ttyS4

# chmod 660 ttyS4

# ls -l ttyS[0-4]

crw-rw---- 1 root dialout 4, 64 2008-04-26 07:01 ttyS0

crw-rw---- 1 root dialout 4, 65 2008-04-26 07:01 ttyS1

crw-rw---- 1 root dialout 4, 66 2008-04-26 07:01 ttyS2

crw-rw---- 1 root dialout 4, 67 2008-04-26 07:01 ttyS3

crw-rw---- 1 root dialout 4, 68 2008-04-26 07:01 ttyS4


* Lembre-se que esses comandos acima devem ser incluídos na inicialização do sistema no arquivo /etc/rc.local


Agora que temos os dados necessários podemos configurar o modem especificando o dispositivo ttyS4, o canal IRQ 10, o endereço I/O 0xd000 e a UART usada pelo dispositivo com o comando setserial


# setserial /dev/ttyS4 irq 10 uart 16550A


Você também pode especificar o canal IRQ e a porta I/O


# setserial /dev/ttyS4 irq 10 port 0xd000 uart 16550A


Você pode usar mais opções do comando setserial, tais como :


# setserial /dev/ttyS4 port 0xd000 irq 10 ^fourport ^auto_irq skit_test autoconfig spd_vhi


Agora crie um link simbólico para o dispositivo do modem


# ln -s /dev/ttyS4 /dev/modem


Pronto agora é só usar os discadores kppp no ambiente gráfico Kde ou Gnome ou wvdial em modo texto.


Configuração de Softmodems


Para instalar um modem softmodem é necessário baixar e instalar o driver da internet


Obtendo informações sobre o driver para Softmodems


Para baixar o driver do modem precisamos acessar o site do fabricante ou dos sites abaixo para obter mais Informações sobre o modem.


A primeira coisa que devemos fazer é baixar o script para detectar informações sobre o modem


http://linmodems.technion.ac.il/packages/scanModem.gz


Baixe o script e descompacte e mude suas permissões para executável


$ gunzip scanModem.gz

$ chmod +x scanModem


Agora logue como root e execute o script


$ su

# ./scanModem


Pronto será gerado uma pasta chamada Modem, onde será gerado o arquivo ModemData.txt e outro arquivo com o nome do seu modem, por exemplo no meu caso gerou o arquivo Pctel.txt referente ao meu modem com informações e instruções de instalação.


Analisando o arquivo /Modem/ModemData.txt é informado várias informações sobre o modem como PCI ID, IRQ, modelo e o driver pctel-0.9.7-9-rht-8.tar.gz que deve ser baixado do site http://linmodems.technion.ac.il/pctel-linux.


Repare que também é informado sobre o pacote com os arquivos de inclusão do kernel atual (uname -r), que neste meu caso é linux-headers-2.6.18-4-686.


$ less Modem/ModemData.txt

PCI slot PCI ID SubsystemID Name

---------- --------- --------- --------------

00:08.0 134d:7891 134d:0001 Communication controller: PCTel Inc HSP MicroModem 56

Modem chipset detected on

CLASS="Class 0780: 134d:7891"

NAME="Communication controller: PCTel Inc HSP MicroModem 56 "

PCIDEV=134d:7891

SUBSYS=134d:0001

IRQ=11

IDENT=PCTEL


At http://linmodems.technion.ac.il/pctel-linux

Get the pctel-0.9.7-9-rht-8.tar.gz

Unpack under Linux with:

tar zxf pctel*.tar.gz

If compiling is necessary packages must be installed, providing:

linux-headers-2.6.18-4-686


Analisando o arquivo Modem/Pctel.txt é informado que utilizando kernel 2.6.x (onde x é a versão do kernel) podemos baixar o driver pctel-0.9.7-9-rht-8 e que é exibido o PCI ID (134d:7891), o nome (PCtel HSP), o chipset (PCT 789T) e o driver HAL (pct789) do nosso modem.


$ less Modem/Pctel.txt

Under 2.6.x kernels, these modems are supported by the pctel-0.9.7-9-rht-8

From the README file therein:


PCI ID (x) Name Chip(set) HAL

~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~

134d:7890 PCtel HSP MicroModem 56 PCT789T-C1 pct789

134d:7891 PCtel HSP MicroModem 56 PCT 789T pct789


Para saber o número do PCI ID do modem execute o comando lspci -nn


$ lspci -nn

00:08.0 Communication controller [0780]: PCTel Inc HSP MicroModem 56 [134d:7891] (rev 01)


No site abaixo você escolhe o chipset do fabricante e obtêm informações detalhadas sobre o chip do modem e endereços de ID PCI do modem que podemos obter através do comando lspci -nn.

http://xmodem.org/chipsets/dips/roster.html


Lista de drivers de fabricantes

http://linmodems.technion.ac.il/resources.html


Lista de todos os drivers de vários fabricantes

http://linmodems.technion.ac.il/packages/



Baixando e instalando o driver


Agora que executamos o script scanModem onde obtemos as informações sobre o driver do modem pctel-0.9.7-9-rht-8.tar.gz, podemos baixa-lo do site http://linmodems.technion.ac.il/pctel-linux usando o navegador web ou o comando wget.


$ wget -cv http://linmodems.technion.ac.il/pctel-linux/pctel-0.9.7-9-rht-8.tar.gz


Após baixar o arquivo descompacte-o com com comandos tar


$ tar -xvzf pctel-0.9.7-9-rht-8.tar.gz


Será criado o diretório pctel-0.9.7-9-rht-8 onde podemos ver as instruções de instalação através do arquivo README que veremos abaixo


$ cd pctel-0.9.7-9-rht-8

$ less README


Pré-requisito


Antes de instalar qualquer programa ou modem é necessário estar logado como root e instalar em seu computador os pacotes de desenvolvimento:



Em distribuições Linux Debian, Ubuntu e Kurumin podemos procurar os pacotes com o comando apt-cache search e instalar os pacotes necessários para instalar o driver com apt-get install.


Antes de localizar e instalar os pacotes, verifique se a configuração do repositório apt-get está correta com as linhas abaixo do arquivo /etc/apt/source.list


# /etc/apt/source.list

deb http://security.debian.org/ etch/updates main contrib

deb-src http://security.debian.org/ etch/updates main contrib

deb http://ftp.us.debian.org/debian etch main contrib non-free


Não esqueça de atualizar a lista de pacotes com o comando apt-get update


# apt-get update


# apt-cache linux-source

linux-source-2.6.18 - Linux kernel source for version 2.6.18 with Debian patches


Repare este pacote deve ter a mesma versão do kernel atual como mostra saída de uname -r


$ uname -r

2.6.18-4-686


# apt-cache linux-headers-`uname -r`

linux-headers-2.6.18-4-686 - Header files for Linux 2.6.18 on PPro/Celeron/PII/PIII/P4


# apt-get install gcc linux-source-2.6.18 linux-kernel-headers linux-headers-2.6.18-4-686 libncurses5-dev


Você pode instalar um de cada vez também


# apt-get install gcc

# apt-get install linux-source-2.6.18
# apt-get install linux-kernel-headers
# apt-get install linux-headers-2.6.18-4-686
# apt-get install libncurses5-dev


Após instalar os pacote acima linux-source-2.6.18 será gerado baixado o código fonte do kernel no diretório /usr/src, onde você terá que descompacta-lo e criar um link simbólico apontando para o diretório do kernel descompactado.


# cd /usr/src

# tar -xvjf linux-source-2.6.18.tar.bz2

# ln -s linux-source-2.6.18 linux


Pronto agora você pode instalar o modem, onde lendo o arquivo README temos duas opções de instalação:


  1. A primeira opção de instalação é mais fácil, basta você entrar no diretório onde você descompactou o driver e executar o script setup (colocando um ponto “.” e uma barra “/” antes do script), onde no final será exibida a mensagem "installation done” (instalação feita).


# cd pctel-0.9.7-9-rht-8

# ./setup


  1. A segunda opção de instalação você entrar no diretório onde você descompactou o driver e entrar no subdiretório src, e executar os comandos ./configure -manual, make e make install.


# cd pctel-0.9.7-9-rht-8

# cd src


Ao executar o comando ./configure -manual, são exibidas as opções para você escolher o driver do modem e neste caso escolhemos pct789 onde foi obtido na seção de informações sobre o modem acima)



# ./configure -manual

please enter your hal type

choose one of: pct789, cm8738, i8xx, sis, via686a

hal type: pct789


Agora compile o driver e instale


# make

# make install


Carregue os módulos referentes ao driver para kernel 2.6 abaixo


# modprobe linmodem

# modprobe pctel

# modprobe pctel_hw


Após carregar os módulos linmodem, pctel e pctel_hw, execute o comando dmesg e tail para ver os logs de instalação.


# dmesg

linmodem: version magic '2.6.18 SMP mod_unload 586 REGPARM gcc-4.1' should be '2.6.18-4-686 SMP mod_unload 686 REGPARM gcc-4.1'

linmodem(1265): linmodem v0.1 loaded

pctel_hw: module license 'GPL linked with proprietary libraries' taints kernel.

pctel_hw(155): PCTel hardware driver version 0.9.7-9-rht-8 for PCT789


pctel(477): pctel v0.1 loaded

ACPI: PCI Interrupt 0000:00:08.0[A] -> GSI 16 (level, low) -> IRQ 209

pctel_pci(233): PCTel device[0000:00:08.0](0x40) found 134d:7891 (rev 01), iobase=0xc000, irq=209.

pctel_pci(609): Setup PCI port: port 0xc000, irq 209, type 0, membase 00000000, ops 00000000

ttyS_PCTEL0 at I/O 0xc000 (irq = 209) is a PCTel


# tail /var/log/

Apr 27 01:03:18 localhost kernel: linmodem(1265): linmodem v0.1 loaded

Apr 27 01:03:26 localhost kernel: pctel_hw: module license 'GPL linked with proprietary libraries' taints kernel.

Apr 27 01:03:26 localhost kernel: pctel_hw(155): PCTel hardware driver version 0.9.7-9-rht-8 for PCT789

Apr 27 01:03:26 localhost kernel:

Apr 27 01:03:26 localhost kernel: pctel(477): pctel v0.1 loaded

Apr 27 01:03:26 localhost kernel: ACPI: PCI Interrupt 0000:00:08.0[A] -> GSI 16 (level, low) -> IRQ 209

Apr 27 01:03:26 localhost kernel: pctel_pci(233): PCTel device[0000:00:08.0](0x40) found 134d:7891 (rev 01), iobase=0xc000, irq=209.

Apr 27 01:03:26 localhost kernel: pctel_pci(609): Setup PCI port: port 0xc000, irq 209, type 0, membase 00000000, ops 00000000

Apr 27 01:03:26 localhost kernel: ttyS_PCTEL0 at I/O 0xc000 (irq = 209) is a PCTel


Repare que já for criado o link simbólico para o modem em /dev/mouse apontando para o dispositivo do modem ttyS_PCTEL0


$ ls -l /dev/modem

lrwxrwxrwx 1 root root 11 2008-04-27 01:03 /dev/modem -> ttyS_PCTEL0


Pronto o modem está instalado e pronto para ser usado utilizando os discadores kppp no ambiente gráfico ou wvdial em modo texto.


Configurando os discadores


Para acessar a internet podemos utilizar os discadores kppp e wvdial


kppp


Para instalar o kppp em distribuições Debian e similares execute o comando abaixo:

# apt-get install kppp


Para acessar o kppp pelo Gnome clique em :




Para acessar o KPPP pelo kde clique em :


Para configurar o KPPP clique no botão Configurar, acesse a aba Contas e clique no botão Nova






Agora clique no botão Configuração Manual




Depois digite um nome para a conexão e clique no botão Adicionar para digitar o telefone do seu provedor.





Após informar o telefone do provedor clique na aba Modems




Na aba Modems clique no botão Nova, e de na aba Dispositivo digite um nome para o modem (Ex: PCTel) e na opção Dispositivo de Modem escolha /dev/modem.





Agora para testar o modem clique no botão Perguntar ao Modem, e se aparecer a barra de progresso significa que o modem está instalado e está tudo certo.






Pronto a configuração do modem está pronta, agora faltar configurar o DNS do provedor, clique no botão OK na aba Modems e clique na aba Contas e depois no botão Editar.





Na aba DNS digite o nome do domínio (Ex: ig.com.br) e escolha a opção Manual para informar os endereços IP do DNS do seu provedor e não esqueça de marcar a opção “Desabilitar servidores DNS existentes durante a conexão”. Depois e só clicar em OK e digitar o nome de usuário e senha e clicar no botão Conectar.





wvdial


Para instalar o wvdial em distribuições Debian e similares execute o comando abaixo:

# apt-get install wvdial


Para configurar o wvdial e criar o arquivo de configuração /etc/wvdial.conf, execute o comando abaixo:

# wvdialconf /etc/wvdial.conf


Agora edite o arquivo /etc/wvdial.conf e retire o comentário das linhas Phone (onde deve ser especificado o telefone do provedor neste caso do IG 3355 0102), Username (onde deve ser especificado o usuário) e Password (onde deve ser especificado a senha).


# vi /etc/wvdial.conf


# /etc/wvdial.conf

[Dialer Defaults]

Init1 = ATZ

Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0

Modem Type = Analog Modem

Phone = 33550102

ISDN = 0

Password = 123456

New PPPD = yes

Username = usuario@provedor.com.br

Modem = /dev/modem

Baud = 115200


Agora adicione os servidores DNS do seu provedor no arquivo /etc/resolv.conf, que neste exemplo está sendo usado o provedor IG


# /etc/resolv.conf

nameserver 200.225.157.104

nameserver 200.225.157.105


Conectando a internet pelo wvdial


Para conectar-se a internet execute o comando abaixo: