Category Archives: hardware

AIKO – usando 3G vivo com GNU/Linux

De mudança para o Rio de Janeiro, procurando garantir que eu tenha Internet sempre, contratei da Vivo (eu gosto de mudar de operadora, porque acho todas ruins) um plano 3G ilimitado. O serviço, devo dizer, me deixou satisfeito até agora. A banda é razoável, a latência é ruim, mas é suficiente pra eu trabalhar com ssh em hosts remotos, ler email via IMAP, usar IRC e jabber tranquilamente.

O modem que eu comprei foi um AIKO 83D, porque na caixinha tem escrito que ele suporta ‘Linux’. O mais engraçado foi que a atendente primeiro me disse que não tinha como funcionar, aí eu falei que no site da Vivo diz que tem um modem que funciona hah.

Antes de falar o que eu fiz, vejamos o que o manual diz. Ele diz que eu preciso entrar no site nacional da Aiko e baixar o ‘driver’ para Linux. De fato lá estava o driver para ‘Linux’, ou melhor, para ‘Ubuntu’. Eu sou um pessimista quando se trata de empresas falando de ‘driver’ ou ‘discador’; normalmente eu espero que seja algo mal-feito, mal-acabado, e algumas vezes destrutivo. A Aiko não me decepcionou =(.

Dá uma olhada no conteúdo dos ‘drivers’:

kov@abacate /tmp> tar ztpf BVIVO_PC_LinuxUI1.0.0B01_tmp081023.tar.gz 
LinuxUI/install.sh
LinuxUI/MCManager.tar.gz
kov@abacate /tmp> tar ztpf Ubuntu.tar.gz 
Ubuntu/
Ubuntu/libaudio2_1.9.1-1_i386.deb
Ubuntu/libqt3-mt_3.3.8-b-0ubuntu3_i386.deb

Não é engraçado que você tenha que instalar esses debs? Aí tem o tal do MCManager, que parece mais interessante. Ele tem um driver pro Linux, que você tem que compilar, e uma tonelada de arquivos com propósitos cada um mais interessante que o outro. O manual de instalação para ‘Ubuntu’ é bem divertido. Olha esse ponto:

7- Conecte o Modem ao discador e espere. Pode ser que a gaveta do CDROM se abra, feche-a.

Haha. Não, sério. É preciso muito esforço pra ser tão amador =D. Quando é que as empresas vão começar a fazer as coisas direito, contribuir os drivers ou definições certas pra Linux/hal/udev fazerem todo o trabalho certinho? Repitam depois de mim: um discador tosco, feito em qt3 não é substituto para o Network Manager ou o que quer que a minha distribuição use para se conectar à Internet.

Como eu faço questão de o meu sistema ficar limpo, não segui as instruções. Achei em buscas na Internet várias soluções, especialmente de usuários de Ubuntu, para fazer o modem funcionar, e aqui está o que eu fiz. O modem Aiko 83D é um daqueles dispositivos USB que são 2 em 1. O padrão é ele ser um “CD-ROM” virtual, que contém os ‘drivers’ pra Windows. Para que ele se torne modem, é preciso fazer um ‘mode switch’. Eu instalei, portanto, o pacote usb-modeswitch e coloquei a seguinte configuração para o udev:

kov@abacate ~> cat /etc/udev/rules.d/00_aiko-modem.rules 
ACTION!="add", GOTO="ZTE_End"

SUBSYSTEM=="usb", ATTRS{idProduct}=="2000",
ATTRS{idVendor}=="19d2"

RUN+="/usr/sbin/usb_modeswitch -v 0x19d2 -p 0x2000 -V 0x19d2 -P 0x0057 -m 0x01 -M 55534243123456782000000080000c85010101180101010101000000000001"

GOTO="ZTE_End"

SUBSYSTEM=="usb", ATTRS{idProduct}=="0057",
ATTRS{idVendor}=="19d2"

RUN="modprobe usbserial vendor=0x19d2 product=0x0057"
MODE="660", GROUP="dialout"

LABEL="ZTE_End"

O que essa coisinha linda faz? Quando ele detecta o dispositivo com id de vendor 19d2 e id de produto 2000, ele roda o usb_modeswitch com aquela linha de comando mágica que eu achei por aí, pra mudar a configuração desse modem. O engraçado é que a Aiko teve a manha de fazer a cagada bem cagadinha, e o product id 2000 é usado para uma enorme quantidade de modems diferentes, que exigem mágicas diferentes. Chique demais =). De qualquer forma, depois de o modo ter sido trocado, é como se o dispositivo com id de produto 2000 fosse desconectado, e um novo dispositivo, com id de produto 0057 fosse conectado. A regra do udev faz, então, que o driver de serial da USB seja carregado com as opções necessárias e deixa as permissões arrumadas.

Depois de configurar isso aí, você já pode colocar o modem e se você for sortudo como eu, até aqui já resolvemos metade do problema. Agora o modem já vira modem, e já vai ficar com a luzinha verdinha, que significa que ele conectou na rede de celular. Agora precisamos fazer o Network Manager querer usar o bichinho. O network manager confia no udev pra dizer pra ele que dispositivos seriais têm capacidade de agir como modem GSM. Temos que ensinar pro udev, então, que esse aqui faz. Na verdade a gente só precisa convencer o udev a verificar se ele tem as capacidades!

O udev usa um arquivo de “configuração”, chamado /lib/udev/rules.d/77-nm-probe-modem-capabilities.rules. Eis o conteúdo do meu, agora:

kov@abacate ~> cat /lib/udev/rules.d/77-nm-probe-modem-capabilities.rules
# do not edit this file, it will be overwritten on update

ACTION!="add|change", GOTO="nm_modem_probe_end"
SUBSYSTEM!="tty", GOTO="nm_modem_probe_end"

DRIVERS=="serial_cs|nozomi", IMPORT{program}="nm-modem-probe --delay 3000 --export $tempnode", GOTO="nm_modem_probe_end"

# Only probe known mobile broadband drivers
DRIVERS=="option|sierra|hso|cdc_acm|qcserial", GOTO="probe"
KERNEL=="ttyUSB3", GOTO="probe"

GOTO="nm_modem_probe_end"

LABEL="probe"

# Don't probe new-style beagleboard cdc-acm ports
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0525", GOTO="nm_modem_probe_end"

SUBSYSTEM=="tty", SUBSYSTEMS=="usb", DRIVERS=="?*", ENV{NM_MODEM_DRIVER}="$attr{driver}"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{NM_MODEM_USB_INTERFACE_NUMBER}="$attr{bInterfaceNumber}"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*", ATTRS{idProduct}=="?*", IMPORT{program}="nm-modem-probe --vid 0x$attr{idVendor} --pid 0x$attr{idProduct} --usb-interface $env{NM_MODEM_USB_INTERFACE_NUMBER} --driver $env{NM_MODEM_DRIVER} --delay 3000 --export $tempnode", GOTO="nm_modem_probe_end"

LABEL="nm_modem_probe_end"

Eu editei ele pra basicamente scanear o dispositivo ttyUSB3. Isso porque nenhum daqueles drivers é carregado para o modem. Alguns upgrades de kernel atrás, o dispositivo que servia como modem GSM era o ttyUSB2, e por algum motivo apareceu esse ttyUSB3 de uns tempos pra cá. Vai entender. Note que a primeira linha do arquivo é bem direta: não edite esse arquivo. Enquanto não houver uma forma sã de tratar todos esses modems de alguma forma genérica não vejo outro jeito, no entanto… talvez funcione se você copiar esse aquivo pra /etc/udev/rules.d e editar o de lá, mas eu não quis saber, e brutalizei =P. Você pode convencer o dpkg a não substituir esse arquivo nos upgrades rodando o seguinte comando:

# dpkg-divert --local --rename --divert /root/77-nm-probe-modem-capabilities.rules /lib/udev/rules.d/77-nm-probe-modem-capabilities.rules

Tosco. O que isso faz é mover o arquivo para /root, e os upgrades que vierem instalarão o arquivo novo no /root. Aí você pode copiar o arquivo de volta e editar que o dpkg não vai mais encostar nele. Não usem dpkg-divert indiscriminadamente =P!

Então, depois disso configurado assim, o network manager ficou feliz da vida, viu o modem e bastou adicionar uma conexão GSM com o telefone *99#, usuário e senha vivo, que tudo funcionou bonitinho.

Simples e (quase)bonito. Agora bem que a Aiko podia fazer o trabalho direito e ajudar a colocar configurações sãs no Linux/udev pra isso funcionar sem a gente ter trabalho. Que tal?

Review do Itautec Infoway Note W7645 (ou carta aberta à Itautec)

Nota importante: esse post recebeu um número grande de comentários; eu acho importante lembrar que os que postaram aqui me criticando, desafiando ou atacando pessoalmente não necessariamente são da equipe do Librix ou têm ligações com a equipe; eu prefiro dar o benefício da dúvida, e convido a quem quer que leia os comentários a fazer o mesmo.

Sumário

Minha irmã é, desde há muito tempo, uma feliz usuária de Debian e GNOME. Ela costuma usar o sistema sem muitos problemas, e aprendeu a usar Gimp e outras coisas que ela inclusive procurou e instalou em Windows quando teve de usar esse SO inferior. Pois bem… minha mãe resolveu dar de aniversário para a Laura esse ano um notebook, e comprou o Infoway W7645, que vem com o sistema “Librix” pré-instalado.

Antes de continuar, um resumo do que eu achei do produto: hardware muito bom, dado o preço baixo; o processador é um Pentium Dual Core, com 1MB de cache L2. Não é nenhum centrino, mas é um bom processador. O notebook tem 1GB de memória RAM, chipset de vídeo Intel GM965/GL960, e wireless RealTek, conectada no bus USB. Eu gostei da tela, maior que 15 polegadas; o notebook tem 2 portas USB, e no geral eu senti que o computador tinha tudo do lado “errado”, o que não chega a ser um problema: o CD-ROM está do lado esquerdo, junto com as portas USB, a do modem e entradas de fone e mic, com leitor de cartão, entrada do cabo de força e saída de ar quente(!) do lado direito. Não é nada difícil o cabo de força ficar tomando ar quente o tempo todo.

O mouse pad é confortável (bem mais que o do meu HP Pavilion). As caixinhas de som deixam muito a desejar, mas nada que não se contorne com caixas externas ou um fone. A tomada, com 2 pinos redondos, é adaptada à nossa realidade. Uma coisa que me deixou meio assim é que os LEDs da porta ethernet não parecem funcionar para indicar link – talvez um OSMAR daqueles. No geral um bom notebook.

Já o software… um lixo.

O Librix é um derivado de Gentoo(!), criado originalmente pelo Laboratório de Administração de Sistemas e Segurança (LAS-IC) da UNICAMP sob o nome Tutoo Linux. Rodando com um kernel 2.6.22, ele usa um KDE versão 3.5.x, e a maior parte do sistema é instalada com o sistema Portage, do Gentoo. Alguns softwares, incluindo diversos softwares proprietários como o Skype, Flash e Java e alguns livres, como o Firefox, são instalados no diretório /opt; e viva a FHS.

Um ponto quase positivo é que na página do Librix é possível encontrar links para baixar os “fontes”. Infelizmente isso não parece ser possível para a versão 3.0, que acompanha o notebook em questão.

Analisando o Librix

Eu acho sensacional ver fabricantes de hardware finalmente pré-instalando sistemas GNU/Linux. É bom saber que o imposto Windows está deixando de ser obrigatório. Agora… quem me conhece vai provavelmente imaginar que eu fiquei tonto de pavor quando vi tudo isso: eu não sou um grande fã de Gentoo, nem de KDE, mas principalmente não de software proprietário que teoricamente não pode ser redistribuído como está sendo feito.

No primeiro boot o Librix pede que você configure uma senha de root e crie usuários. Ele te diz em uma mensagem proeminentemente colocada que você não deve usar root para tarefas cotidianas. Depois de responder a isso tudo ele te deixa logado como root no seu KDE. Quando você faz logout o KDM está com root como o usuário já escrito. Uma forma muito boa de ajudar o usuário a fazer tudo errado.


Desktop inicial do Librix

A próxima coisa que eu tentei fazer depois do boot foi conectar-me à rede wireless aqui de casa. Eu uso um AP linksys rodando DD-WRT, configurado com criptografia WPA2-Personal. Depois de um tempo tentando entender que magias eu tenho que conjurar para que ele me mostre as redes disponíveis eu finalmente encontro habilmente escondido no menu principal, no submenu ‘Sistema’, o KWifiManager, com uma descrição tímida: Configurador wireless.


Menu do Librix

Vocês que como eu têm algum tempo de desktop livre vão adorar essa ferramenta, dada a sensação de ter voltado no tempo que ela causa. Ele torna se conectar a uma rede wireless uma coisa complicada! Clicar em um ícone, escolher a rede, digitar a senha e começar a navegar? Pra que se eu posso ter uma interface esquisita com um botão “Procurar por redes” que sempre que eu clico me mostra uma nova janela com uma lista das redes encotradas?


A loucura que é o KWifiManager

Em defesa do kwifmanager eu devo dizer que ele prontamente se conectou à rede ‘default’ de algum vizinho descuidado, embora nem sempre o gateway default ficasse corretamente configurado. Acontece que a minha rede é a de ESSID ‘emacs’. Eu clico nela, clico duas vezes, e nada… nada de o botão ‘Mudar para rede’ ficar habilitado, também. Finalmente eu tento abrir a tela de configurações que aumenta ainda mais a minha sensação de ter voltado alguns anos no tempo! Olha que bonito, eu tenho uma tela de configuração que parece um formulário do governo, em que eu posso inclusive especificar um script shell para lidar com DHCP pra mim! Sim, porque DHCP é uma coisa nova e complicada. De qualquer forma, nada feito… se isso um dia funcionar, aparentemente vai ser só com WEP, e eu não estou disposto.

Não havendo outro jeito, e já que eu já estava alguns anos no passado mesmo, peguei um cabo de rede e liguei no notebook. Com rede, então, resolvi testar o “Tutoo Portage Manager”, TPM. Chique demais esse nome. Mas então, aparentemente a Itautec não fez um planejamento muito adequado quando se trata das atualizações do seu sistema: o TPM me deu uma mensagem de erro dizendo que não conseguiu baixar um ‘novo pacote de atualizações’ e me disse para conferir minha conexão com a Internet e espaço em disco. Bom, nenhum desses era o problema, mas aparentemente o fato de a Itautec ter removido o arquivo do lugar em que ele devia estar. Clicando em ‘Detalhes’ eu me deparei com uma tela muito simples de ser entendida pelo usuário comum: a saída do comando wget dedurando o 404 Not Found.


O "gerenciador" de pacotes TPM

Por fim, achei uma coisa muito engraçada: um ls no raiz do Librix nos dá isso:


Librix:/# ls
bin dev home lib media opt root sys usr wacom_drv.so
boot etc L3031011.sw lost+found mnt proc sbin tmp var
Librix:/# cat L3031011.sw
2041L3031011 SWP LIBRIX 3.0 W7645 HD160

Hahaha… Sinceramente, né? Quando você acha que não pode ficar mais amador você encontra um driver de input do X e um arquivo txt com informações do hardware no diretório raiz. Querem me matar de rir =).

Conclusão

Eu não planejava deixar o Librix instalado no computador, é claro. Pra que deixar um frankenstein baseado em Gentoo rodando em um bom hardware? Instalar Debian Lenny nesse bichinho foi uma brisa. A única coisa que dá um pouquinho de trabalho é a placa de rede wireless, que não é suportada pelo Linux 2.6.26; bastou fazer upgrade para o 2.6.28 que eu pude usar o NetworkManager do meu GNOME e voltar a me sentir definitivamente no ano 2009.


Desktop do Debian Lenny mostrando o Network Manager

Me assusta a Itautec gastar tempo e dinheiro e associar sua marca a um sistema tão mal-feito que só me permite classificá-lo como ‘porcaria’. Uma vergonha também para o time da UNICAMP, na minha opinião. Com Debian, Fedora, Ubuntu, Mandriva e um sem-número de outras distribuições bem feitas e que podem ser usadas sem licenciamento por aí, pra que contratar um time de pessoas que aparentemente não sabe o que está fazendo para criar um sistema de quinta categoria? E não me venham com a mentirada do 100% nacional. Eu não me importo se vocês acham que ‘nacional’ é melhor, e 100 é um número grande demais.

Posso parecer um pouco negativo, e minha crítica pode parecer pouco construtiva, mas o fato é que esse tipo de trabalho amador (mesmo que o manual do Librix o chame de ‘profissional’, a realidade é que ele parece ter sido feito por gente que não sabe o básico) acaba por causar uma fama ruim para o GNU/Linux: os usuários não costumam saber que ao invés do KDE existe o GNOME, e que ao invés do frankenstein existem distribuições bem-mantidas, e acabam colocando tudo num mesmo balaio: “Linux não presta”, dizem erroneamente. Eu ouço isso direto, e quando vou saber a pessoa conheceu “Kurumin”, “Satux”, “Librix” e outras porcarias que insistem não só em usar KDE, que não é um desktop adequado para uso de massa, na minha opinião, mas em criar uma infra-estrutura muito mal-feita por baixo.

Então, Itautec, parabéns pela iniciativa, e pelo bom hardware e, por favor, comece a pré-instalar uma distribuição de qualidade, por favor.

Nota sobre KDE: KDE não é um desktop ruim, per se, mas foca muito mais em flexibilidade, configurabilidade e features para “power users”, o que o torna ideal para entusiastas e para diversos geeks, mas complicado e presente demais para alguém que não se interessa por desktop; um bom desktop para essas pessoas “some” o máximo possível, deixando o usuário fazer o trabalho dele. Em defesa do KDE, o pessoal do Librix poderia ter feito uma instalação muito mais bem-feita do KDE, e ter usado o KNetworkManager.

Informação útil pra quem tem placa Intel GM965/GL960

Depois de ficar irritado com a lentidão do meu vídeo para coisas 2D eu resolvi dar uma pesquisada. A conclusão a que cheguei é que a implementação da nova arquitetura de aceleração 2D do Xorg, a EXA, não é muito boa ainda para as placas Intel. Configurando o X para usar a antiga arquitetura de aceleração, a XAA, faz com que usar o Metacity como compositing manager seja rápido o suficiente pra eu decidir finalmente mantê-lo habilitado. Assim posso ter transparência real e alguns efeitozinhos bonitinhos, e ainda ter a boa velocidade do meu desktop.

A linha que você deve adicionar à sessão Device do seu /etc/X11/xorg.conf é:


Option "AccelMethod" "XAA"

Como todos sabem, o problema do mundo é I/O

Todo mundo tem aquela aplicação que sempre quis ter (ou no mínimo se irritou muito por não ter); alguns talvez tenham escrito a aplicação, ou melhorado outra para resolver seu problema. Outros tiveram a felicidade de vê-la aparecendo em um ITP na debian-devel ;) . A aplicação de que eu falo agora cai, no meu caso, nessa última, e o nome dela é iotop.

O iotop é basicamente um top para I/O. Ele consegue mostrar que processos estão lendo e escrevendo dados do disco, a que taxa de transferência, e quantos porcento do tempo do processo está sendo gasto esperando I/O. No screenshot abaixo você pode ver o iotop mostrando processos do Beagle, uma compilação do WebKit/GTK+, e por aí vai.

iotop

Mas resolvi falar dele por outra coisa. Eu estava copiando umas coisas de um DVD para o meu HD e suspendi o computador no meio do processo. Como a barra de progresso da cópia andava leeeentamente depois de ter trazido o computador de volta resolvi investigar e percebi que a cópia estava acontecendo a uma taxa de por volta de 11KB/s. Ridículo. Algumas coisas que eu fiz que ajudaram:


# hdparm -a 2048 /dev/hda
# hdparm -c 1 /dev/hda
# hdparm -E 56 /dev/hda

Explico: -a configura o read-ahead do dispositivo IDE; é o número de setores que o sistema de arquivos lerá quando uma leitura qualquer for feita, se adiantando aos pedidos que recebe; deve ser um múltiplo de 2, na maioria dos casos; isso aumenta o desempenho de leituras sequenciais. O -c configura se o I/O é feito em modo 32 bits. Finalmente o -E, que deu o maior resultado, configura a velocidade do drive. Eu não sei quantos X (do ponto de vista de CDROM, que é o que deve ser considerado aqui) meu DVD tem, mas colocar 56 fez funcionar muito bem.

Se alguém tiver alguma informação menos mágica do que as que eu postei aqui, ou uma forma de descobrir quantos X um leitor de CDs tem, posta nos comentários! =D Ah, o negócio passou a fazer leituras de 3 a 4 MB/s depois disso hehe.

Voltando à ativa…

Debconf8! Eu vou!

I'm going to DebConf8, edition 2008 of the annual Debian developers meeting

Já estou com um notebook novo. É um HP Pavilion dv2670br, em que tudo funcionou somente usando software livre, inclusive a webcam, o leitor de impressões digitais e as funcionalidades de hibernação/suspensão. As placas todas são intel, o que faz com que os drivers de som, gráfico e rede estejam disponíveis e integrados nos projetos relevantes. Com excessão, obviamente, do firmware necessário para a placa wireless =(. Intel, você estão quase 100% de parabéns! =)

Na verdade, para que suspensão funcionasse automaticamente pelo gnome-power-manager eu precisei usar um quirk, e o contribuí de volta como patch para o XML do hal-info. Isso significa que novas versões do hal-info já vão funcionar automaticamente com esse notebook. Com o fantástico GNOME 2.22 rodando quase todo, graças ao maravilhoso trabalho do time de empacotamento do GNOME do Debian, meu desktop está me dando muita alegria! Viva o desktop livre!

Continuo me preparando, claro, para o dia em que o KDE vai fazer o GNOME simplesmente perder a importância, como profetisou o KDHélio no último evento do LinuxChix =D.