TUTORIAL PARA MODEMS SMLINK PARA MANDRAKE 10.1 E MANDRIVA 2006/2007/2008
Ao pessoal do fórum, escrevo este tutorial no intuito de poder ajudar a todos os usuários que estejam tendo problemas em configurar seu modem SMLink/Neto Dragon no Linux. Não tenho a pretensão de que esta seja a versão final e definitiva que se pode encontrar, mas, tenho percebido em minhas buscas que pessoas têm tido os mesmos problemas que eu tive e, que eu me lembre, em nenhum deles eu vi a solução final, pelo menos, do jeito que funcionou para mim. Por conta disso, nunca consegui resolver meus problemas apenas me valendo dos fóruns, aliás, eu acabei resolvendo-os ou sem querer, ou lendo arquivos texto que acompanham os fontes do driver. Tenho certeza de que alguns verão logo de cara a diferença deste tutorial que estou lançando, uma vez que descreverei os problemas que tive com as suas respectivas soluções. De qualquer maneira, espero que meus amigos do fórum entendam que não sou programador, portanto, não tenho como comentar sobre erros de compilação. Se eles acontecerem, esteja certo de ter os fontes do kernel instalados. Procure nos CDs ou em um repositório de sua distro predileta. Normalmente resolve. Vamos começar.
Mandrake 10.1
Primeiramente, como de praxe, baixemos os drivers para o modem SMLink ou Neto Dragon no endereço abaixo, salvando em local apropriado, no meu caso em /tmp:
http://linmodems.technion.ac.il/packages/smartlink/
Vamos descompactá-los:
#cd /tmp
#tar xvzf slmodem-2.9.X.tar.gz
Acessamos o diretório:
#cd /slmodem-2.9.X/
Compilamos e instalamos:
#make SUPPORT_ALSA=1 && make install
Com isso, fizemos a instalação dos drivers. Usei a opção SUPPORT_ALSA=1 que habilita o suporte ao sistema de som ALSA. Aliás, não vejo porque não fazê-lo a não ser que sua compilação acuse erros devido a esse suporte ou você não utilize o ALSA, o que, hoje em dia, é bem difícil.
Até agora, vemos que a instalação transcorreu da mesma maneira como descrito no arquivo README dos fontes do modem, aliás, o README é até mais detalhado nesses aspectos básicos do que meu passo-a-passo. Veremos as diferenças um pouco mais adiante.
Com os drivers instalados, digite:
#slmodemd –country=BRAZIL /dev/slamr0 &
Deve aparecer algo como:
SmartLink Soft Modem: version 2.9.11 Jan 9 2006 20:50:13
symbolic link `/dev/ttySL0' -> `/dev/pts/0' created.
modem `slamr0' created. TTY is `/dev/pts/0'
Use `/dev/ttySL0' as modem device, Ctrl+C for termination.
Criamos o link simbólico para que o kppp possa acessar o modem corretamente:
#ln –sf /dev/ttySL0 /dev/modem
Com isso, pelo que pude perceber nos tutoriais que encontrei pela Internet, grande parte dos usuários conseguiram fazer com que o modem funcionasse, mas, esse não foi meu caso. O kppp não o encontrava. Passei um bom tempo procurando e não encontrava nada que me esclarecesse esse mistério. Então, isso quando ainda usava o Mandrake 10.1, entrei na pasta dos fontes do modem, e comecei a fuçar. Descobri a pasta ‘scripts’ dentro dela, entrei e haviam outras pastas com nomes de outras distros. Entrei na pasta do Mandrake. Lá tem outro aplicativo chamado ‘slmodemd’, mas, quando o executava com os mesmos parâmetros, acusava erro, dizendo que não eram os parâmetros corretos passados ao comando para que ele funcionasse e aparecia o ‘help’, mostrando a maneira certa, que se resume aos parâmetros start/stop. Então, executei, dentro desse diretório /tmp/slmodem-2.9.X/scripts/mandrake:
#./slmodemd start
Voltei ao kppp e... BINGO!!! O modem estava funcionando.
Então, essa é a primeira dica aos usuários ainda do Mandrake 10.1. Recapitulando a instalação:
Baixar e descompactar o driver na pasta de sua preferência.
Compilar e instalar (#make SUPPORT_ALSA=1 && make install)
Criar o link simbólico (ln –sf /dev/ttySL0 /dev/modem)
Rodar o script slmodemd instalado na compilação (slmodemd –country=BRAZIL /dev/slamr0 &)
Rodar o script em /tmp/slmodem-2.9.X/scripts/mandrake (ou da sua distro ou o genérico, que fica no diretório ‘scripts’)
#./slmodemd start
Com isso, o modem deve funcionar perfeitamente. Para que isso aconteça automaticamente no boot, alguns passos devem ser acrescentados. Primeiramente, basta editar um script, como o rc.local e acrescentar as seguintes linhas:
modprobe slamr
slmodemd –country=BRAZIL /dev/slamr0 &
service slmodemd start
ln –sf /dev/ttySL0 /dev/modem
Para que o comando ‘service slmodemd start’ funcione, é necessário um último passo: copie o slmodemd que está em ‘scripts’ para /etc/init.d. Com isso, ele será reconhecido como serviço e poderá ser iniciado pelo Centro de Controle Mandrake ou pelo comando 'service'.
#cp /tmp/slmodem-2.9.X/scripts/mandrake/slmodemd /etc/init.d
Mandriva 2006
Como migrei para o Mandriva 2006, tive problemas com o driver que usava no Mandrake 10.1, que era o slmodem-2.9.10. Encontrei uma penca de drivers mais novos, mas, atualmente, estou usando o slmodem-2.9.1120051101, que pode ser baixado no mesmo endereço citado no início do artigo. Após baixar o driver, sigamos os passos também já citados no artigo, sem nenhuma diferença. Se o modem funcionar, ótimo!!! Agora, vamos aos problemas potenciais, particularmente, os que eu passei.
Após a compilação e instalação dos drivers, carregamos o módulo:
#modprobe slamr
Até aqui, beleza!!! Rodamos o script slmodemd que é criado em /usr/sbin:
#slmodemd –country=BRAZIL /dev/slamr0 &
Fazemos isso e... ERRO!!!
error: mdm setup: cannot stat `/dev/slamr0': No such file or directory
error: cannot setup device `/dev/slamr0'
O bash avisa que não é possível acessar o dispositivo /dev/slamr0, ou por falta de permissões, ou porque o dispositivo não existe mesmo. Nem um nem outro, eles são criados corretamente e o root tem permissões para acessá-lo. Como resolver?? Na compilação percebe-se (no meu caso) que o sistema reclama de alguns ponteiros errados, será que é isso que não permite o acessos aos dispositivos??? Não, de maneira nenhuma. Baixei um outro driver, o slmodemd-2.9.11_20051009_gcc4.tar.gz, que contem um arquivo texto (slmodem.txt) e nele li sobre uma mensagem no dmesg sobre o módulo slamr. A mensagem é esta:
slamr: unsupported module, tainting kernel.
slamr: module license 'Smart Link Ltd.' taints kernel.
slamr: SmartLink AMRMO modem.
slamr: device 10b9:5457 is grabbed by driver serial
Rode o seguinte comando para saber se sofre do mesmo problema:
#dmesg | grep slamr
Percebam que na quarta linha ele diz que alguma coisa está ‘segurando’ (tradução livre para grab) o modem e o arquivo texto dizia que, para que o modem funcionasse, teria que se compilar e instalar um outro módulo e carregá-lo ANTES que fosse carregado o módulo slamr do modem. Daí, ele passaria a funcionar. Claro que essa mesma mensagem apareceu para mim, quando eu executei o 'dmesg'. Baixei esse módulo também em
http://linmodems.technion.ac.il/packages/smartlink/, o nome do arquivo é ungrab-winmodem.tar.gz. O processo de instalação é o mesmo: descompacte, make && make install. Carregamos o módulo com ‘modprobe ungrab-winmodem’. Com isso, se você já instalou os drivers, basta descarregar o módulo do modem, uma vez que o ungrab-winmodem tem que ser carregado antes:
#rmmod slamr
Carregue novamente:
#modprobe slamr
Rode o slmodemd:
#slmodemd –country=BRAZIL /dev/slamr0 &
SEM MAIS ERROS!!! (eu acho...). Crie o link simbólico:
#ln –sf /dev/ttySL0 /dev/modem
A essa altura, o seu modem pode ou não estar funcionando. No meu caso, ainda falta uma coisinha. Copie o slmodemd de ‘scripts’ para /etc/init.d
#cp /tmp/slmodem-2.9.1120051101/scripts/mandrake/slmodemd /etc/init.d
Rode o serviço:
#service slmodemd start
PRONTO, TUDO FUNCIONA!!!
Edite os scripts para inicialização automática, do mesmo jeito que foi feito no Mandrake 10.1, com uma adição no rc.local:
modprobe ungrab-winmodem
modprobe slamr
slmodemd –country=BRAZIL /dev/slamr0 &
service slmodemd start
ln –sf /dev/ttySL0 /dev/modem
Isso se faz necessário, pois, como eu já disse, o módulo ungrab-winmodem tem que ser carregado ANTES do módulo slamr do modem.
Bom, esse é o final do meu ‘rau-tu’. Como dica final, fica registrado que no Mandrake 10.1, se você habilitar o slmodemd no Centro de Controle Mandrake na inicialização, ele poderá funcionar ou não, pelo menos, assim foi comigo. No Mandriva 2006, NÃO habilite jamais a inicialização automática no Centro de Controle, porque esses scripts são executados ANTES do rc.local. O que isso quer dizer??? O módulo slamr vai ser carregado ANTES do ungrab-winmodem e ele não vai funcionar. Você terá que fazer todo o ‘trabalho braçal’ novamente, de descarregar e carregar módulos, etc.
Você também pode editar o slmodemd que você copiou para /etc/init.d de forma que ele inicie com seu país configurado automaticamente, uma vez que ele tem uma entrada ‘country’. Coloque o seu país e viva feliz com seu modem, agora funcionando!!!
Mandriva 2007
Este mesmo tutorial funciona com o 2007 com algumas pequenas adições. Primeiramente, você tem duas opções de instalação do driver:
1 - Baixa e instala os pacotes rpm de um cooker ou mesmo instala ele como repositório do urpmi. Eis um endereço:
ftp://mirror.fis.unb.br/pub/linux/Mandrakelinux/devel/cooker/i586/media/non-free/release/
Os pacotes necessários são o dkms-slmodem e o próprio slmodem.
2 - Ou, vai no mesmo endereço do início deste tópico e baixa o driver mais novo, um da série 2006 ou os novos 2007.
Se optar pela primeira opção, não terá que compilar nada, mas, existe um bug no driver, ou uma incompatibilidade com o sistema, provavelmente o udev, tinha esse mesmo problema no Fedora 5: o dispositivo /dev/slamr0 não resiste ao boot e não é recriado com o carregamento do slamr. Portanto, é necessário criá-lo manualmente, com o comando mknod:
#mknod -m 600 /dev/slamr0 c 242 0
Somente então, o slmodemd vai funcionar e ativar o modem, efetivamente:
#slmodemd &
E, sejamos felizes!!!
Caso a opção seja a segunda, diga os passos normais de compilação, como descritos aqui e acrescente esses passos do mknod, da mesma forma. Com isso, seu modem vai funcionar perfeitamente!!! Para fazê-lo subir no boot, basta editar o arquivo /etc/rc.d/rc.local e colocar os comandos lá!!! E, no Mandriva 2007 não preciso mais do 'service slmodemd start'. O meu ficou assim:
mknod -m 600 /dev/slamr0 c 242 0
slmodemd –country=BRAZIL /dev/slamr0 &
ln –sf /dev/ttySL0 /dev/modem
Mandriva 2008
Para o Mandriva 2008 os passos são os mesmos, mas, peguei tempo porque a distro não instala o pacote de desenvolvimento do kernel por padrão ao escolher essa opção e eu demorei a descobrir isso, então, certifique-se que o kernel-desktop-devel ou o correspondente ao kernel que você estiver utilizando. O kernel-source não é mais necessário para a compilação, que depende apenas dos cabeçalhos do Kernel, que vêm no kernel-devel.
Por Marcelo de Matos Soeiro
Angra dos Reis – RJ. :wink: