Índice das dicas
Driver Smartlink corrigido para Kernel 2.6.13 em diante
Criado 12/abr/2006 às 16h09 por Carlos E. Morimoto
0insmod: 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.12 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 do ano passado, 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 (que funcionam apenas com algumas variações do chipset do modem, encontradas em notebooks com chipsets Intel e Ati e placas mãe com chipset nForce), sem indicar uma solução para o driver origianal: 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", enquanto o outro precisa ser aplicado manualmente. Outro problema é que, para que o driver funcione, é necessário alterar a linha com a licensa 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, de forma que, 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:
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 (o que é improvável), 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:
Baixe o patch com as modificações aqui, salvando-o na mesma pasta que o driver:
Descompacte o arquivo do driver:
$ tar -zxvf slmodem-2.9.10.tar.gz
Aplique o patch (para mais informações sobre como funcionam os patches, leia: http://www.hardware.com.br/linux/dicas/114.htm):
$ patch -p0 < slmodem-2.9.10.patch
Agora acesse a pasta com o driver e compile da forma usual:
$ cd slmodem-2.9.10
# make
# make install
Para ativar o modem, inicie o slmodemd, instalado junto com o driver. Ele precisa ficar ativo, ao fechá-lo o modem deixa de funcionar, por isso o executamos incluindo o "&":
$ /usr/sbin/slmodemd --country=BRASIL /dev/slamr0 &
Ao abrir o slmodemd é criado o dispositivo /dev/ttySL0. Crie o link /dev/modem apontando para ele:
# ln -sf /dev/ttySL0 /dev/modem
Depois disso tudo, só falta conectar usando o Kppp :).
Atualização: Já está disponível uma versão atualizada do driver da Smartlink, no http://linmodems.technion.ac.il/packages/ que soluciona o problema descrito nesta dica. De qualquer forma, você pode usar as informações disponíveis aqui como ponto de partida para solucionar outros casos semelhantes.
Sem comentáriosPor Carlos E. Morimoto. Revisado 12/abr/2006 às 16h09

Comentários