Abaixo a "receita de bolo" para fazer o modem funcionar. O kernel utilizado foi o 2.6.15, podendo facilmente ser substituído por qualquer superior a 2.6.10.
Passo a passo:
1) Compilação do kernel
Instalar todos os pacotes necessários para a compilação.
Entrar na pasta source do kernel 2.6.15:
# cd /usr/src/linux-2.6.15
Copiar a configuração do seu kernel atual 2.x.x (para evitar possíveis problemas de Kernel Panic por exemplo):
# cp /boot/config-2.x.x .config
Iniciar a compilação:
# make menuconfig
Configurar os módulos exatamente como listados abaixo:
1. Dentro do menuconfig vá em:
Bus Options > PCI HOTPLUG
e marque:
(*) PCI hotplug suport;
(*) Fake PCI Hotplug Suport;
2. Volte ao menu principal do menuconfig e vá em:
Device Drivers > NetWorking Support > Network Options
e marque:
(*) Assynchrounos Transfer Mode (ATM) Support
(*) RFC1483/2684 Bridged Protocol
3. Volte ao menu "Networking Support" e marque:
(M) PPP suport;
(M) PPP suport for Async Serial Ports;
(M) PPP suport for Sync TTY port;
(M) PPP Deflate Compression;
(M) PPP Over Ethernet;
(M) PPP Over ATM;
4. Volte ao Menu "Device Drivers", vá em "Character Devices" e então marque:
(*) HDLC line discipline Support;
5. Volte ao Menu "Device Drivers", vá em "USB Support" então marque:
(M) USB Support;
(M) EHCI HCD Support;
(M) OHCI HCD Support;
(M) UHCI HCD Support;
(M) Alcatel SpeedTouch USB Supoort;
Criar pacote .deb da compilação do novo kernel:
# make-kpkg -rev Custom.1 kernel_image
OBS: O nome Custom pode ser mudado para um de sua preferência. Ex: albertoc.1.
Instalar o novo kernel (entrar na pasta onde foi criado o .deb antes):
# dpkg -i kernel-image-2.6.15_Custom.1_i386.deb
Criar o initrd para não haver problemas de Kernel Panic na inicialização:
# mkinitrd /boot/initrd.img-2.6.15 2.6.15
Configurar o gerenciador de boot para setar o initrd criado. Abaixo exemplo com o GRUB:
# vim /boot/grub/menu.lst
Acrescentar a linha destacada abaixo:
title Debian GNU/Linux, kernel 2.6.15
root (hd1,1)
kernel /boot/vmlinuz-2.6.15 root=/dev/hdb2 ro
initrd /boot/initrd.img-2.6.15
savedefault
boot
Resetar a máquina, entrar no novo kernel compilado, se tudo deu certo, sem nenhuma mensagem de erro, ir ao próximo passo. Caso dê algo errado ou esqueceu de acrescentar algum módulo, rode o comando abaixo (na pasta source do kernel):
# make-kpkg clean
Volte à etapa iniciar a compilação.
2) Carregar firmware do Modem
Rode o firmware-extractor baixado anteriormente (com o firmware correto para o modelo do modem salvo na mesma pasta):
# chmod u+x firmware-extractor
# ./firmware-extractor modelodomodem.eni
Ele irá extrair dois arquivos (speedtch-1.bin e speedtch-2.bin) que servirão para carregar o firmware do modem na inicialização da máquina ou toda vez que o modem for plugado na porta.
Estes arquivos devem ser colocados na pasta firmware dentro de hotplug do seu novo kernel, geralmente em /usr/lib/hotplug/firmware:
# cp speedtch*.bin /usr/lib/hotplug/firmware
Reinicie a máquina e verifique se o firmware foi carregado.
Os leds inicialmente ficam piscando e após 30 segundos em média, se estabilizam e ficam ambos acesos (verdes). Se isto ocorreu, pode ir ao próximo passo. Do contrário, se algo deu errado, retire o modem da porta e recoloque, verifique a mensagem no console:
Quando tudo está correto:
usb 1-2: new full speed USB device using uhci_hcd and address 4
usb 1-2: reset full speed USB device using uhci_hcd and address 4
speedtch 1-2:1.0: found stage 1 firmware speedtch-1.bin
speedtch: already loaded
speedtch 1-2:1.0: found stage 2 firmware speedtch-2.bin
ATM dev 0: ADSL line is synchronising
ATM dev 0: DSL line goes up
ATM dev 0: ADSL line is up (320 kb/s down | 160 kb/s up)
Se ocorrer mensagem do tipo: speedtch 1-2:1.0 no found stage 1 firmware, então:
Verificar pasta hotplug padrão do kernel para colocar os arquivos .bin criados com o firmware-extractor.
3) Configurar a interface de rede do modem e a conta de autenticação ADSL
§ Instalar o pacote libatm baixado anteriormente. Ex:
# dpkg -i libatm1_2.4.1-16_i386.deb
Instalar o binário br2684ctl:
# chmod +x br2684ctl
# install -m 755 br2684ctl /usr/sbin
Criar o arquivo de configuração da conta ADSL. O arquivo deve ter o conteúdo abaixo, substituindo obviamente, user@provider.com pelo seu usuário e provedor de acesso:
noipdefault
noauth
default-asyncmap
defaultroute
hide-password
nodetach
usepeerdns
mtu 1492
mru 1492
noaccomp
noccp
nobsdcomp
nodeflate
nopcomp
novj
novjccomp
lcp-echo-interval 20
lcp-echo-failure 20
user "user@provider.com"
pty "/usr/sbin/pppoe -I nas0 -T 80 -U"
O arquivo deve ser salvo em /etc/ppp/peers com o nome adsl (sem extensão).
Criar arquivo para configurar e levantar a rede e efetuar a conexão automaticamente contendo:
modprobe ppp_generic
modprobe ppp_synctty
modprobe hdlc
br2684ctl -b -c 0 -a 0.35
sleep 1
ifconfig nas0 up
sleep 2
pppd call adsl
Escolha um nome qualquer para o arquivo (Ex: Conexao). Para conectar-se:
# ./Conexao
As seguintes mensagens devem aparecer:
RFC1483/2684 bridge: Interface "nas0" created successfully
RFC1483/2684 bridge: Communicating over ATM 0.0.35, encapsulation: LLC
RFC1483/2684 bridge: Interface configured
Using interface ppp0
Connect: ppp0 <--> /dev/pts/3
PAP authentication succeeded
Cannot determine ethernet address for proxy ARP
local IP address 200.138.52.16
remote IP address 200.103.132.254
primary DNS address 201.10.120.2
secondary DNS address 201.10.120.3
OBS: Obviamente que os endereços IP e DNS variam a cada conexão.
Pronto! Você já estará conectado. Teste com o comando:
# ping -c 3 google.com.br
e deverá receber respostas sem quaisquer problemas.