Índice das dicas
Driver Smartlink corrigido para Kernel 2.6.13 em diante
Por Carlos E. Morimoto em 12 de abril de 2006 às 16h09
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 de abril de 2006 às 16h09


Comentários