Instalando e Configurando Modem Motorola SM 56 - Versão II [ Postado em: 08/01/2003 09:45:12 - Acessos: 19 - Tamanho: 14292 caracteres ] Este artigo escrito por Gilberto Nunes Ferreira, mostra uma instalação completa e bem detalhada sobre o WinModem Motorola SM56. Se você encontrou problemas para configurar este winmodem no Linux não pode deixar de conferir este artigo. Por José Roberto Kerne. 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