SearchWiki:

Seções:

Recent Changes Printable View Page History Edit Page

Como Fazer Modem Lucent/Agere

por Christian Lyra < lyra @ soueu.com.br >

Introdução

Juntamente com as placas de Som, os "winmodems" parecem ser um dos mais difíceis periféricos para se instalar e configurar no Linux. Isso se deve principalmente ao fato de os fabricantes não disponibilizarem todas as informações necessárias para que a comunidade de desenvolvedores escreva drivers que possam ser livremente distribuídos com o kernel e/ou distribuições. Neste pequeno Como Fazer (How To) mostrarei como configurar o seu modem Lucent/Agere.

UPDATE: winmodems Lucent com kernel 2.6! Agora funciona :-)

O que são winmodems?

Os Modems "normais" são equipamentos que recebem dados da CPU como se fossem uma saída serial e transformam esses dados em sinais a serem transmitidos pela linha telefônica. Essa "transformação" é feita no hardware presente no modem e envolve alguns algoritmos e técnicas de processamento de sinais (DSP). Com o objetivo de baixar os preços, os fabricantes de modems começaram a transferir parte dessa tarefa do hardware do modem para a CPU do computador, assim aqueles algoritmos que eram executados no próprio modem passam a ser feitos pelo software (nesse caso pelo driver do modem). Como esses fabricantes normalmente disponibilizavam drivers para o sistema operacional Windows(tm) apenas, esses modems vieram a ser conhecidos como "winmodems". Os winmodems apresentam como sua grande vantagem o preço, e como desvantagem o fato de utilizarem uma porcentagem da CPU (que com o aumento da velocidade dos processadores atuais pode ser considerada desprezível) e o fato de que como aqueles algoritmos citados são em geral proprietários os fabricantes não os disponibilizam livremente. Então, como oferecer suporte para esses dispositivos no Linux? Alguns fabricantes disponibilizavam módulos para versões específicas do kernel, e outros, como a Lucent/Agere disponibiliza um driver composto de duas partes: uma parte contida dentro de um objeto binário (arquivo ".o") contendo os algoritmos proprietários, e uma parte aberta (fonte) que serve de envoltório para a parte binária e é responsável por fazer a ligação desta com o kernel. Assim é possível oferecer um fonte que serve para várias versões do kernel mas ainda assim protegendo os seus algoritmos proprietários. Não é o ideal já que com certeza a comunidade de usuários e desenvolvedores poderia ajudar a melhorar tais algoritmos, mas já é melhor do que não oferecer suporte algum! :-)

Identificando um modem Lucent/Agere

Para indentificar um modem Lucent/Agere basta usar o comando "lspci" em um terminal, como no exemplo abaixo (cortei parte da saída do comando):

  # lspci
  00:07.5 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio Controller (rev 21)
  00:09.0 Communication controller: Lucent Microelectronics 56k WinModem (rev 01)
  00:0a.0 CardBus bridge: Texas Instruments PCI1211

A saída desse comando pode ser a mais variada possível dependendo do seu hardware. Procure por Lucente ou Agere para identificar o seu modem. De qualquer maneira o script que instala o módulo também faz essa checagem, mas é bom saber se o seu modem realmente é um Lucent antes de sair baixando os drivers.

Pré-requisitos

Para instalar/configurar o seu modem Lucent/Agere você vai precisar de ter instalado no seu sistema:

  • Fontes (source) ou os Headers do seu kernel
  • Make
  • GCC
  • Binutils
  • Fontes do módulo do modem

Se você quiser gerar um pacote com o módulo para a sua distribuição de Linux, você deverá ter também:

  • debhelper, dpkg-dev se sua distribuição for a Debian
  • rpm-devel se for outra distro baseada em RPM (Por favor, quem utilize uma distro assim me avise se apenas o rpm-devel é o suficiente!)

Antes de começar a instalação permita-me falar um pouco mais sobre o primeiro pré-requisito já que ele parece fonte de muita confusão, principalmente pelos principiantes no Linux.

Fontes/Headers do Kernel

Para compilar o módulo do modem Lucent você vai precisar dos arquivos fontes do kernel no qual se pretende usar o módulo. Então, por exemplo se você usa o kernel versão 2.4.20 será necessário os fontes desse kernel. Você poderá verificar qual é a versão do kernel utilizado com o comando "uname", ex:

  # uname -r
    2.4.20

Se você não tiver os fontes, então procure nos CDs?/site da sua distribuição. Mas atenção para um detalhe! Normalmente as distribuições disponibilizam dois tipos de pacotes: em um deles toda fonte do kernel está presente (arquivos .c, .h, etc...) e no outro apenas os headers (arquivos .h). Você deve utilizar o primeiro pacote caso queira compilar um novo kernel. Embora ele sirva para compilar o módulo do modem também, esse pacote é bem grande, logo você pode dar preferência pelo pacote dos headers. O pacote que contém apenas os headers é bem menor que o pacote anterior e possui apenas os arquivos de "include" (.h). Na distribuição Debian esse pacote tem o nome de "kernel-headers-X.Y.Z", onde X.Y.Z é a versão do kernel.

Compilando e Instalando

Vamos ao que interessa então :-). Certifique-se que o fonte/header do kernel está instalado e descompactado. Ele deve estar localizado em /usr/src/. É comum se criar um link simbólico "/usr/src/linux" apontando para o diretório onde está o fonte do kernel atual. Assim se você estiver usando o kernel 2.4.20 e os fontes estiverem em /usr/src/linux-2.4.20, você poderá criar o link com o comando:

 
 # ln -s /usr/src/linux-2.4.20 /usr/src/linux

Baixe os fontes do módulo. Você poderá encontrar os fontes nessa página: http://www.heby.de/ltmodem

Pegue o arquivo ltmodem-8.26a9.tar.gz ou mais novo.

Descompacte os fontes do módulo em /usr/src (você deve fazer isso como usuário root!). Exemplo:

 
  # mv fonte_do_módulo.tar.gz /usr/src
  # cd /usr/src
  # tar xvfz fonte_do_módulo.tar.gz

Agora entre no diretório criado e execute o script para compilar o módulo. Nesse ponto você poderá optar por criar um pacote com o módulo ou não. Para criar um pacote para a sua distribuição utilize o script "build_deb" ou "build_rpm". Aqui vou mostrar a instalação sem criar o pacote! Para compilar os módulos digite:

 
  # cd <diretorio_com_os_fontes>
  # ./build_module

O script vai lhe fornecer várias informações a medida que ele progride. Se tudo estiver certo, vá teclando "Enter" sempre que ele pedir. No final ele deverá ter criado os módulos. Para instalar eles e fazer com que sejam carregados automaticamente, faça:

 
  # ./ltinst2
  # ./autoload

Pronto! Aqui os módulos devem ter sido criados e instalados. Os scripts alteram o arquivo /etc/modules.conf (no caso do Debian) para que os módulos sejam carregador automaticamente ao se utilizar o modem. O script cria também um link simbólico do device do modem (/dev/ttyLT0) para /dev/modem. Assim quando você for configurar o seu discador (kppp, wvdial, pppconfig), utilize o device /dev/modem (atenção! normalmente ele não é auto-detectado, você deve configurá-lo manualmente).

Kernel 2.6

Caso você já esteja usando um kernel 2.6 será necessário utilizar outro fonte para o módulo. O procedimento é semelhante ao descrito acima, mas como o suporte para o kernel 2.6 é bem recente os scripts de instalação são menos amigáveis.

Para instalar o módulo do modem Lucent em um kernel 2.6, comece baixando os arquivos fontes de http://alk.at.tut.by/ltmodem-2.6-alk-2.tar.bz2. Descompacte o arquivo e edite o arquivo Makefile de modo que a linha que inicia com "KERNEL_DIR" aponte para o seu fonte do kernel. Em seguida execute o comando make. Isso irá gerar os dois módulos necessários: ltserial.ko e ltmodem.ko. Crie um sub-diretório dentro do diretório de módulos do kernel 2.6 que você está usando, por exemplo:

   # mkdir /lib/modules/2.6.0-test9/kernel/drivers/lucent 

Copie os módulos para o diretório criado acima, e rode o comando "depmod". Atualize o arquivo /etc/modules.conf para que ele carregue o driver ltserial e não o lt_serial.

Conclusão

Se tudo ocorreu bem, você deve ter conseguido compilar e instalar os módulos. Caso algo não tenha funcionado, verifique novamente se os pré-requisitos foram observados. Procure também na saída dos scripts por mensagems de erro. Caso alguma informação aqui presente esteja incompleta ou errada, por favor me avise!

Edit Page - Page History - Printable View - Recent Changes - WikiHelp - SearchWiki
Page last modified on February 12, 2004, at 09:54 PM