ct

    Driver Smartlink corrigido para Kernel 2.6.13 em diante

    Dicas do Guia do Hardware

    O driver linux para modem Smartlink, disponível no http://www.smlink.com/content.aspx?id=135 tem apresentado problemas ao ser usado em qualquer distribuição com um Kernel 2.6.12 em diante. 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. Esta dica ensina como corrigir manualmente o código fonte do driver, permitindo que ele compile. Serve também como uma introdução sobre o que fazer em outros casos semelhantes. Carlos E. Morimoto
    13/01/2006


    O driver linux para modem Smartlink, disponível no http://www.smlink.com/content.aspx?id=135 tem apresentado problemas ao ser usado em qualquer distribuição com um Kernel 2.6.12 em diante. 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.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.

    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.guiadohardware.net/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.

     




    Blog:

    Add to Google

    » Gostou do texto? Veja nossos livros impressos:
    Hardware | Redes | Servidores | Kurumin 7

    ... ou encontre o que procura usando a busca:

cb
ct
Atualizações

[12/10] Recuperação de dados: uma introdução
[12/10] Smartphones: o iPhone
[11/10] Linux: Aplicativos em modo texto
[11/10] HDs: Entendendo a formatação e os sistemas de arquivos
[11/10] Opções de VoIP para smartphones
[10/10] Artigo: Criando comunidades produtivas com ferramentas livres
[09/10] Mini-review do Satux
[09/10] Placas 3D para notebooks
[08/10] Processadores da AMD para notebooks
[08/10] Slackware: Baixando e instalando
[08/10] Artigo: 'Bootando' o Linux em cinco segundos
[07/10] Baterias: Li-ion e células de combustível
[07/10] Tutorial: Nokia S40: o elo perdido (atualizado)
[07/10] Um lugar para o Slackware
[06/10] Baterias e transmissão de energia sem fios
[06/10] Navegadores móveis: Opera Mini, Safari e Nokia Browser
[06/10] Dica: Pirando na batatinha com o Blender e Python
[05/10] Navegadores móveis: IE Mobile e Opera Mobile
Leia mais sobre: Smartphones, GPS, Manutenção de micros, configuração do Setup, RAID, Linux, drivers no Linux, shell script, cabeamento de rede, TCP/IP, IPV6, aplicativos Linux, solução de problemas no Linux, configuração do Samba, configuração do Apache, configuração do Squid, firewall
Destaques



» Hackeando as senhas no Windows XP
» Usando o DansGuardian
» Estática
» Softmodems no Linux: Intel AC'97 e ATI IXP
» Instalando o Apache
» Entendendo o IPV6
» AMR e CNR
» Instalando o Apache + PHP + MySQL no Windows
» Configurando a rede no Windows
» IPv6: Um exemplo prático
» Entendendo a Internet sob rede elétrica
» Dicas de segurança
» Configurando rapidamente uma rede entre dois micros
Assine o RSS Veja todas as atualizações... Add to iGoogle
cb
Livros de Carlos E. Morimoto HOME