Driver da Smartlink

A Smartlink é um fabricante de modems com chipset PC-Tel. Os drivers desenvolvidos por eles possuem uma boa qualidade e são os drivers “oficiais” para todo tipo de modem com chipset PC-Tel, tanto onboard, quanto em versão PCI.

A lista de modems suportados por este driver inclui:

a) Quase todos os modems PC-Tel onboard e AMR, incluindo os das placas M810, M812, e outros modelos da PC-Chips/ECS, além de vários notebooks. O driver permite usar a placa de som onboard ao mesmo tempo que o modem.

b) Modems PCI com chipset PC-Tel recentes, como os LG-Netodragon. Estes modems possuem um chipset relativamente grande, com a marca “Smartlink” decalcada.

c) Alguns modems com chipset Intel. O driver da Smartlink era usado nestes casos como uma solução precária, até que a própria Intel lançou seus drivers.

A página de download dos drivers é a http://www.smlink.com/ (Support > Drivers Download > Linux Drivers). Um link alternativo é o http://linmodems.technion.ac.il/packages/smartlink/, que contém um arquivo com várias versões do driver.

Antigamente, existiam duas versões do driver, o “slmdm” era o driver antigo, que funcionava nas distribuições com Kernel 2.4, enquanto o “slmodem” era a versão recente, que funcionava no Kernel 2.6. Mas, as versões recentes do slmodem passaram a funcionar tanto no Kernel 2.6, quanto no antigo 2.4, tornando o outro driver obsoleto.

Para instalar, comece descompactando o arquivo baixado, como em:

$ tar -zxvf slmodem-2.9.10.tar.gz

Acesse a pasta que será criada:

$ cd slmodem-2.9.10/

Leia o arquivo README que contém várias informações sobre o driver e os modems suportados por ele, além das instruções de instalação.

O procedimento básico de instalação é rodar o comando “make” (dentro da pasta) que vai compilar o driver e em seguida o comando “make install” (que faz a instalação propriamente dita, como root).

O próprio instalador se encarrega de adicionar a linha necessária no arquivo “/etc/modules.conf“, criar o device, criar o link “/dev/modem” apontando para ele e adicionar uma entrada para o módulo “slamr” no arquivo “/etc/modules.conf“, para que ele seja carregado durante o boot.

A maior parte dos problemas de instalação deste driver ocorrem por falta da instalação dos compiladores ou por falta do pacote kernel-source. Na maioria das distribuições, especialmente no caso do Mandriva, apenas o pacote kernel-headers não é suficiente, você precisa instalar mesmo o pacote kernel-source. Ele é grande, mas é necessário neste caso.

Entre os compiladores, verifique especialmente se o pacote de desenvolvimento do glibc está instalado. No Debian, o pacote se chama “libc6-dev” e está disponível via apt-get. Em outras distribuições, procure pelo pacote “glibc-devel” ou “glibc-dev”.

A versão atual do driver da Smartlink (slmodem) trabalha de uma forma um pouco diferente das antigas. É importante entender como o driver funciona, já que é muito comum aparecerem problemas diversos ao tentar conectar.

Ao instalar, além dos módulos do Kernel, copiados para a pasta “/lib/modules/2.x.x/extra”, é instalado um aplicativo de gerenciamento, o “/usr/sbin/slmodemd”, que cria uma pasta de logs, a “/var/lib/slmodem”.

Estes são os passos para ativar o driver manualmente caso necessário:

a) Criar os dispositivos:

# mknod -m 600 /dev/slamr0 c 212 0 ; mknod -m 600 /dev/slamr1 c 212 1 ; mknod -m 600 /dev/slamr2 c 212 2 ; mknod -m 600/dev/slamr3 c 212 3

b) Carregar o módulo do modem:

# modprobe slamr

c) Ativar o slmodemd. Ele precisa ficar ativo, pois ao fechá-lo o modem deixa de funcionar. Por isso o executamos incluindo o “&”:

# slmodemd –country=BRAZIL /dev/slamr0 &

d) Ao abrir o slmodemd é criado o dispositivo /dev/ttySL0. Crie o link /dev/modem apontando para ele:

# ln -sf /dev/ttySL0 /dev/modem

O driver oferece suporte também a modems PC-Tel USB (raros aqui no Brasil). Caso você tenha um destes, use o módulo “slusb” no lugar do “slamr”.

Em casos de problemas na hora de discar, experimente abrir o kppp como root. Isso evita muitos problemas relacionados a permissões de acesso a dispositivos e arquivos de configuração.

Caso a conexão seja efetuada normalmente, mas você não consiga navegar, verifique se o endereço do servidor DNS do provedor (ou qualquer outro DNS válido) foi adicionado corretamente ao arquivo “/etc/resolv.conf“. Isto é muito comum quando o kppp é aberto com um login normal de usuário.

Se o problema persistir, pode ser que o sistema não esteja usando o modem como rota padrão (isso é comum se você tiver também uma placa de rede). Para ajustar isso manualmente, use o comando:

# route add default ppp0

Em versões antigas, era necessário usar o comando “route del default” (que remove a rota padrão anterior) antes do “route add default ppp0” (que indica o uso do modem). Atualmente apenas o segundo comando basta.

Este procedimento básico se aplica a todas as versões do Kernel 2.6, até o 2.6.12. A partir do 2.6.13, as coisas se complicaram um pouco, pois restrições no acesso às funções internas do Kernel impostas a módulos que não são GPL fizeram com que o driver deixasse de funcionar.

O driver não compila acusando um erro no arquivo “modem.c” e, mesmo depois que o erro dentro do código é manualmente corrigido, ele continua não funcionando, exibindo um erro ao carregar o módulo:

insmod: error inserting ‘/lib/modules/2.6.14-kanotix-6/misc/slamr.ko’:
-1 Unknown symbol in module

Este erro é conhecido e afeta todas as distribuições recentes, baseadas no Kernel 2.6.13 em diante. A Smartlink ainda não disponibilizou uma versão corrigida do driver e nem existe previsão para isto, já que a última versão do driver foi lançada em abril de 2005, quando o problema já existia.

Mesmo na lista do Kernel, a única referência sobre o problema é esta mensagem, que simplesmente recomenda o uso dos drivers open-source incluídos recentemente no Alsa (veja a seguir), sem indicar uma solução para o driver original:
http://www.kernel-traffic.org/kernel-traffic/kt20041019_278.txt

Pesquisando mais a fundo, encontrei dois patches distintos, um postado na lista do Fedora e outro no Linux-on-Laptops. Isoladamente, nenhum dos dois corrige o problema, mas combinando ambos é possível chegar a uma versão corrigida do driver, que funciona perfeitamente no Kernel 2.6.14 e, possivelmente, qualquer outra versão recente onde o driver regular apresenta o problema.

http://forums.fedoraforum.org/showthread.php?t=60278
http://linux-on-laptops.com/forum/archive/index.php/t-3.html

Aplicar os patches envolve modificar o código fonte da camada do driver que faz a junção com o Kernel, o que é trabalhoso. O primeiro patch pode ser aplicado diretamente usando o comando “patch” (que aprendemos a usar no capítulo 2), enquanto o outro precisa ser aplicado manualmente. Outro problema é que, para que o driver funcione, é necessário alterar a linha com a licença para “GPL”.

Isso é mais problemático (do ponto de vista legal) do que pode parecer à primeira vista. Nas versões atuais do Kernel, muitas funções estão disponíveis apenas para uso de módulos marcados como GPL. A alteração da licença dentro do código do driver burla isso, fazendo com que o driver da Smartlink seja tratado como se fosse um módulo GPL pelo Kernel, embora seja um módulo proprietário.

Tecnicamente, isto é uma violação tanto da licença da Smartlink quanto da própria licença GPL, sob a qual é distribuído o Kernel.

Embora você possa aplicar a modificação e gerar o módulo para uso pessoal, não é permitido redistribuir o módulo modificado. Você pode ver mais detalhes sobre esta parte legal aqui: http://www.ussg.iu.edu/hypermail/linux/kernel/0511.0/0285.html.

Este parece ser o principal motivo de não existir até hoje uma versão atualizada do driver. Para não violar a GPL, a Smartlink precisaria ou disponibilizar o código, transformando-o num módulo GPL, ou modificar o driver de forma que ele não utilize nenhuma das funções restritas do Kernel (o que seria trabalhoso e provavelmente demorado).

A única solução imediata é que cada um aplique as modificações e compile o módulo localmente, sem redistribuir o módulo gerado. Você pode ensinar seu amigo a compilar o driver, pode escrever um script para fazer isso automaticamente para ele, mas ele é quem deve apertar o botão. Bem, você já deve ter entendido o espírito da coisa ;).

Voltando à parte técnica, baixe o arquivo “slmodem-2.9.10.tar.gz” aqui:
https://www.hardware.com.br/kurumin/download/slmodem-2.9.10.tar.gz

Baixe o patch com as modificações aqui, salvando-o na mesma pasta que o driver:
https://www.hardware.com.br/kurumin/download/slmodem-2.9.10.patch

Descompacte o arquivo do driver:

$ tar -zxvf slmodem-2.9.10.tar.gz

Aplique o patch (você deve ter o pacote “patch” instalado):

$ patch -p0 < slmodem-2.9.10.patch

Acesse agora a pasta com o driver e compile da forma usual:

$ cd slmodem-2.9.10
$ make
# make install

Isto conclui a instalação normal do driver. Fica faltando apenas iniciar o slmodemd com o comando que vimos a pouco e discar usando o Kppp ou outro discador. O default dos discadores é já utilizar o “/dev/modem”, por isso você só precisa se preocupar em criar a conexão com o provedor.

Caso o Kppp não exiba o modem na lista “Modems”, adicione-o manualmente, clicando no “Modems > Novo…”. Dê um nome qualquer e marque a opção “/dev/modem” no campo “Dispositivo de Modem”.

Você pode usar a função “Perguntar o Modem” para verificar se o modem está respondendo sem precisar realmente discar.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X