terça-feira, fevereiro 18, 2003

*************************
*************************
Instalando e Configurando Modem Motorola sm56.
Versão II
18 de Dezembro de 2002.
Gilberto Nunes Ferreira
gilbertonunes@yahoo.com.br
Colaboraram:
sandr8
sandr8@virgilio.it

Massimiliano Mirra
mmirra@libero.it

===============================================================
Este documento tem como objetivo, auxiliar os
usuarios
do Modem sm56 da Motorola.
===============================================================

1.0 - SOBRE ESTE DOCUMENTO
2.0 - INTRODUÇÃO
3.0 - O QUE É NECESSÁRIO?
4.0 - INSTALANDO.
5.0 - SE SEU KERNEL É MAIOR QUE 2.4.5
6.0 - POSSÍVEIS PROBLEMAS
7.0 - CONCLUSÃO


1.0 - SOBRE ESTE DOCUMENTO
Este documento é distribuí­do gratuitamente,
seguindo
o FDL, e pode
ser distribuí­do e alterado, desde que você cite
a
fonte. Você é bem vindo se quiser colaborar.

2.0 - INTRODUÇÃO

A mais ou menos um ano e meio atrás, foi criado
um
artigo, e divulgado amplamente, sobre como
instalar e configurar o Modem sm56 da Motorola.
Na época, o kernel 2.4.0 havia acabado de ser
lançado, e a Motorola lancou o driver para tal
modem,
sendo que foi unica e exclusivamente testado com
o Red
Hat Linux 7.1.
Acontece que, como é costume no mundo do
Software
Livre, as coisas andam depressa, e a cada semana
e
a cada mês, surgem atualizações e correções.
Infelizmente, a Motorola nao conseguiu seguir o
mesmo
ritmo, seja por falta de interesse ou por
qualquer outro motivo.
O que importa realmente, é que vários usuários
ficaram sem suporte,quando viram que o driver não
funcionava nas versões de kernel mais novas e
acima do
2.4.5.
Na época, recebi vários e-mail's e continuo a
recebê-los, pedindo maiores detalhes sobre como
instalar e fazer funcionar tal modem.
Agora, com a ajuda de alguns amigos, finalmente
é
possível configurar o modem para que ele funcione
em um kernel diferente do 2.4.5.
Agradecimentos a todos aqueles que me enviaram
e-mail
e ao meu amigo Massimiliano Mirra.
Agradecimento especial a minha esposa Brenna.
Ela é
minha revisora oficial ;^).

3.0 - O QUE É NECESSÁRIO?

Inicialmente, a primeira coisa a fazer, é ver
sob
qual kernel seu sistema estatrabalhando.
Use o comando uname -r. Se este comando retornar
um
kernel menor ou igual ao 2.4.5, vai até
a página da Motorola (www.Motorola.com) e pegue
o
driver para o modem.
Caso o kernel seja maior do que o mencionado
acima,
vá para seção
"5.0 - SE SEU KERNEL É MAIOR QUE 2.4.5".
Outra coisa que você deverá observar, é ter um
ambiente de desenvolvimento GNU instalado em seu
sistema, já que precisaremos dele para compilar o
driver corretamente.
Verifique, com o comando rpm -qa | grep gcc, se
o
compilador GNU C está instalado.
Faça o mesmo para o cpp: rpm -qa | grep cpp.
Se você possuir um kernel acima do 2.4.5, você
deverá
ter as fontesdo kernel do seu sistema insta-
lado, bem como o make, o automake, o autoconf, o
tcl,
e o ncurses, pois teremos que recompilar o
kernel.

4.0 - INSTALANDO

Esta parte diz respeito aqueles que tem um
kernel
menor ou igual ao 2.4.5.
Uma vez efetuado o download e, como root,
instale-o
com rpm -ivh sm56xxxx-i386.rpm.
Após, digite man sm56 e procure por qual código
o seu
País se encaixa.
A lista é um pouco extensa:

1 = USA
2 = Canada
27 = South Africa
30 = Greece
31 = Netherlands
32 = Belgium
33 = France
34 = Spain
39 = Italy
41 = Switzerland
42 = Czech Republic
43 = Austria
44 = United Kingdom
45 = Denmark
46 = Sweden
47 = Norway
49 = Germany
52 = Mexico
54 = Argentina
55 = Brazil
57 = Columbia
58 = Venezuela
60 = Malaysia
61 = Australia
64 = New Zealand
65 = Singapore
66 = Thailand
81 = Japan
82 = Korea
84 = Vietnam
86 = China
90 = Turkey
351 = Portugal
352 = Luxembourg
353 = Ireland
354 = Iceland
358 = Finland
852 = Hong Kong
886 = Taiwan
962 = Jordan
972 = Israel

Depois que você instalar o driver, digite
sm56setup,
seguido do
código do seu País.
Naturalmente para nós que moramos no Brasil, o
código
escolhido será o 55.
Se este código for omitido será atribuí­do o
código
padrão: 1 (USA).
O comando sm56setup compila o módulo que
controla o
modem, adequado para seu kernel, que será
instalado em /lib/modules/[seu
kernel]/kernel/drivers/char.
O comando também adequa o seu /etc/modules.conf,
que
ficará assim:

.......
.......
alias char-major-24 sm56
options sm56 country=1 ---> aqui poderá ser
colocado o
código apropriado.

Ele também cria um dispositivo em /dev, chamando
sm56, criando um link para o /dev/modem, que
aponta
para este dispositivo, bem como seta as
permissões
adequadas.
Digite modprone sm56 e pronto, seu modem está
instalado!
Se seu kernel é superior ao 2.4.5, passe ao
próximo
tópico.

5.0 - SE O KERNEL É MAIOR DE 2.4.5.

Primeiramente, quero agradecer ao meu amigo
Massimiliano Mirra, que me enviou esta dica.
Se você está usando uma distribuição moderna,
como
Conectiva Linux8.0, Red Hat Linux 8.0,
Mandrake Linux 9.0 ou Slackware Linux 8.1, saiba
que o
modem sm56 pode funcionar sob um kernel mais
recente.
Estas distribuições citadas, a exceção do
Mandrake
Linux 9.0, trazem um kernel 2.4.18.
Para este documento, eu utilizei o Mandrake 9.0,
com
kernel 2.4.19.
Como comentado acima, será necessário fazer
algumas
alteraçõesnas fontes do kernel e recompilá-lo
para que o modem funcione corretamente.
Vá até onde as fontes do kernel estão instaladas
(geralmente /usr/src/linux-2.4.X).
Entre no diretório mm.
Neste diretório estão as fontes para o
tratamento da
memória.
Procure por um arquivo chamado slab.c.
Este arquivo deve ser alterado.
Abra-o com seu editor de texto.
Não darei explicações do por que ele deverá ser
alterado, pois nãosou um craque em programação C,
mas acho que deve ter algo com relação com a
alocação
da memória pelo driver do Motorola.
Se alguém tiver alguma explicação e quiser
enviar, será prontamenteincluí­da nesta
documentação.
Vá até a linha 1116, e comente-a:

Ela está assim:
if (flags &
~(SLAB_DAM|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG();
E deve ficar assim:
/* if (flags &
~(SLAB_DAM|SLAB_LEVEL_MASK|SLAB_NO_GROW))
BUG(); */

Depois disso, grave o arquivo e vamos compilar o
kernel.
Digite make menuconfig.
Perceba que se você não tiver o ncurses
instalado,
este comando irá falhar.
Irá aparecer, depois de alguns momentos, um menu
baseado em ncurses,com botões, caixas e diálogos,
para que possamos escolher as opçÕes do kernel.
Recomendo fortemente que você deixe o seu kernel
o
mais enxuto possí­vel.
Por exemplo, escolha um processador de acordo
com a
sua máquina:se você tem um AMD, não faz
sentido escolher um Pentium MMX, pois alguns
parâmetros do processador poderá fazer diferença.
Tire tudo o que não for necessário para sua
máquina:
bluetooth, PCMCIA, USB, entre outros, anão ser
que tais suportes sejam requeridos pelo seu
sistema.
Outra idéia: se você não tem nenhuma placa de
rádio e
não planeja adquirir uma, não há
necessidade de compilar um módulo para suportar
tal
placa.
Outro suporte desnecessário em máquinas
caseiras, é
suporte a ATM, a FDDI (fibra óptica), WAN,
APPLETALK, IPX, DECNET, etc., quando não é um
requisito essencial.
Retire tudo o que não seja estritamente
necessário.
Depois de escolhidas as opções, tecle TAB, até
cair
na opção Exit.
Tecle ENTER e será perguntado se você quer
salvar as
alteraçÕes. Escolha SIM.
Agora digite make dep para criar as dependências
necessárias para compilar o kernel.
Depois que o comando se completar, digite make
bzImage, para construir a imagem do kernel.
Depois, digite make modules e make
modules_install,
para construir e instalar os módulos
do novo kernel.
Pode sair para um cafezinho agora, pois este
comando poderá demorar, dependendo do porte de
sua
máquina.
Terminado o comando anterior, o seu kernel
estará em
/usr/src/linux-2.4.X/arch/i386/boot, com o nome
de bzImage.
Copie-o para o diretório /boot, dando-lhe outro
nome,
como vmlinuz-custom.
Copie também o System.map, que está em
/usr/src/linux-2.4.X/System.map, para o diretório
/boot,
com um nome diferente, como System.map-custom.
No mesmo diretório, há um arquivo oculto
chamando
.config.
Digite ls -a, para visualizá-lo.
Copie-o também para o diretório /boot, com um
nome
diferente, como config-custom.
Entre no diretório
/usr/src/linux-2.4.X/include/linux.
Copie o arquivo kernel.h, para o diretório
/boot, com
um nome diferente, algo como kernel.h-custom.
Agora, vá para o diretório /boot, e faça as
alterações necessárias.
Apague os links seguintes:
rm -rf config, rm -rf System.map, rm -rf vmlinuz
e rm
-rf kernel.h
Crie agora os links para os arquivos novos:
ln -s config-custom config
ln -s System.map-custom System.map
ln -s vmlinuz-custom vmlinuz e por último
ln -s kernel.h-custom kernel.h

Agora, temos que alterar o arquivo
/etc/lilo.conf, se
você estiver usando o LILO, como gerenciador
de inicalização.
Ele deve se parecer com isso:

boot=/dev/hda
map=/boot/map
vga=normal
default=linux
keytable=/boot/us-latin1.klt
prompt
nowarn
#vga = 791
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz ---------------------------
label=linux |
root=/dev/hda1 |
# initrd=/boot/initrd.img | -> É aqui que
devemos
fazer a alteração,
append="devfs=mount" | colocando o nome do
kernel
(vmlinuz).
vga=791 | Comente a linha initrd, pois ela
diz

read-only ------------------------------
respeito
somente ao kernel velho.

image=/boot/vmlinuz-seu-kernel-original-------------------
label=linux-nonfb
|
root=/dev/hda1 | -> Mantenha esta linha,
alterando
initrd=/boot/initrd.img | apenas o vmlinuz,
para
o nome com-
append="devfs=mount" | pleto
do
seu kernel velho.

read-only-----------------------------------------
other=/dev/hdb2
label=windows
table=/dev/hdb
map-drive=0x80
to=0x81
map-drive=0x81
to=0x80
other=/dev/fd0
label=floppy
unsafe

Se você estiver usando o GRUB, altere as linhas
correspondentes.
Digite lilo, para que as alterações tenham
efeitos.
É importante manter uma imagem do seu kernel
anterior, pois se alguma coisa não der certo,
você terá como inicializar seu sistema.
Reinicie a sua máquina, e espere ela inicializar
com
o kernel novo.
Se tudo der certo, você deverá estar com seu
kernel
recém compilado.
Para ter certeza, digite :
cat /proc/version.
Deve aparecer algo do tipo:

Linux version 2.4.19-16mdkcustom
(root@scoob.doo.com)

(gcc version 2.96 20000731 (Mandrake Linux 9.0
2.96-0.80mdk)) #1 Seg Dez 16 18:02:34 BRST 2002

Agora proceda da mesma maneira que no item 4.0.
Perceba que após o modprobe sm56, o driver não
ficará
mais com aquela mensagem de initializing.
Verifique isto com lsmod.

Pronto! Seu modem está funcionando.
NOTA: Recebi informaçÕes que no kernel 2.4.20 e
superiores, não é necessário editar o arquivo
/usr/src/linux-2.4.20/mm/slab.c. Eu nãoo testei
com
este kernel ainda. Assim que testá-lo, estarei
repassando,
ou alguém pode fazé-lo, certo?

6.0 - POSSÍVEIS PROBLEMAS.

I - Ao inicilizar, meu kernel diz "kernel panic
.....
". O que é isso?

Esta mensagem aparece se seu kernel foi
compilado sem
suporte ao seu sistema de arquivos do raí­z.
Por exemplo, se sua raí­z é XFS, e no kernel o
suporte ao XFS é via módulo, compile seu
kernel como suporte XFS intrínseco. O padrão do
kernel
é assim:

SGI XFS filesystem support

[*] Enable XFS Realtime support

[*] Enable XFS Quota

Enable XFS DMAPI


Mude para:
<*> SGI XFS filesystem support

[*] Enable XFS Realtime support

[*] Enable XFS Quota

<*> Enable XFS DMAPI


Isto fará que o suporte ao XFS seja parte
integrante
do kernel, não precisando de nenhum módulo
ser carregado.

II - Minha máquina trava quanto executo o
minicom
ou outro aplicativo de dial-up. Por que?

Por motivos que desconheço, o modem Motorola não
gosta de ter outra porta serial habilitada.
Entre no setup da sua máquina, e deixe somente
uma
porta serial habilitada, aquela correspondente
a seu mouse. Isso deverá resolver o problema.

III - Quando digito minicom ou uso o kppp, ele
diz que
o /dev/modem não existe. E agora?

Se o /dev/modem não existir, pode ter ocorrido
alguma
falha com o comando sm56setup.
Para não ter que executá-lo de novo, vá até o
diretório /dev , e crie o links para o
dispositivo
/dev/sm56: ln -s sm56 modem.
Caso tal dispositivo não exista, crie com o
comando
mknod /dev/sm56 c 24 0, e mude o dono/grupo e
as permissões, com o comando chown uucp.root
/dev/sm56
e chmod a+rw /dev/sm56, respectivamente.


7.0 - CONCLUSÃO.

Bom eu acho que é isso.
Eu consegui fazer este modem funcionar em um
Mandrake
Linux 9.0, recompilando o kernel 2.4.19.
Acredito que você também pode fazê-lo.
Obrigado a
todos e continuem me mandando e-mail, pois farei
o possível para ler e responder a todos. Até +.

Gilberto Nunes
gilbertonunes@yahoo.com.br


=====
Gilberto Nunes Ferreira
Linux User nº 199930
Coordenador Linux-SC célula de Itajaí-SC
ICQ #136176504
No problem!
Vamos postar de novo:
Entrei em contato com o Morimoto (morimoto@guiadohardware.net), sugerindo a ele que o Kurumin, suporte driver para winmodem sm56 da motorola.
Pelo menos se interessou!
O ultimo post não funfo.
Este blog não aceita TAG´s!
Que lixo!
Entrei em contato com o Morimoto do Site Hardware.net
publicada por open às

Foi lançado recentemente, na Revista do Linux de Fevereiro,
um artigo meu sobre a Configuração do Modem Motorola sm56, no GNU/Linux, com kernel acima do 2.4.5.
O artigo teve uma boa recepitividade, tanto que todo dia eu recebo cerca de 4 a 10 e-mails, com explicações mais detalhadas.