Blog de lamarque

Correções de Bugs

Essa semana resolvi pesquisar alguns bugs no bugs.kde.org e ver se poderia resolvê-los. Procurei por bugs relacionados ao Plasma Network Management, Kopete e Bluedevil, três programas que uso muito. Um dia eu ainda paro novamente para tentar resolver algum bug no Amarok (especialmente o 188360 e 234833). Ainda não estou familiarizado com o código fonte do Amarok, um tempo atrás até mexi no código dele para ver se resolvia um problema mas não deu certo.

No Plasma NM tentei resolver esses bugs:

  1. 214297: multiple interfaces of same type not distinguishable in UI (commited)
  2. 249702: Network Manager Applet crash after reconnect to 3G (ainda não resolvido)
  3. 233469: knetworkmanager confused by /etc/init.d/network restart (tem meses que tento descobrir o que está errado aqui mas ainda não consegui)

No Kopete mexi com esse bug:

  1. 222689: Tool tip systray of kopete icon missing (patch pronto, se não aparecer mais ninguém querendo que mude alguma coisa amanhã eu faço o commit deste)

No Bluedevil resolvi esse crash:

  1. 246638: kded crashes in latest trunk (agora é esperar o pessoal do Bluedevil aplicar meu patch já que não tenho acesso de escrita no Bluedevil)

Aproveitei e resolvi pedir para resolverem dois problemas que achei no site do reviewboard: Bug 250050 - Wrong email for the kde-networkmanager mailing list and problem uploading images. O pessoal do KDE resolveu em poucas horas esses dois problemas, assim é que é bom Smile

FSLBH 3

Ontem tivemos o nosso terceiro Festival de Software Livre desta vez em Betim, os outros dois tinham sido em Belo Horizonte. A mudança pra mim boa foi até boa já que Betim é um pouco mais perto de Divinópolis do que Belo Horizonte. Tivemos um bom público no festival, bastante gente interessada em software livre e vários cursos e brindes, tivemos também venda de camisetas do KDE e KDE-MG Smile

Um dos mini-cursos dos FSLBH foi justamente o que ministrei sobre Qt. Utilizei a apresentação feita pelo Sandro e Tomaz do Liveblue. A previsão inicial era de o curso durar 4 horas, mas tivemos alguns problemas com os computadores e tive que dividir o curso em duas partes para que pudesse resolver os problemas no intervalo. Foi até bom pois o pessoal pode sair para almoçar, a primeira parte foi das 10:30 até 12:15, depois retornamos às 13:00 e fomos até às 16:00. O outro mini-curso que teria depois do meu foi transferido para outra sala então pude ficar até mais tempo na sala com o pessoal que quis fazer mais exercícios práticos.

Gostaria de agradecer aqui ao pessoal do Betim Opensource por organizar o evento e ao Pitágoras de Betim por ceder as salas e as máquinas da faculdade para as palestras e mini-cursos. As fotos do evento já estão disponíveis.

Plasma NM e modem Sony MD300

Durante a implementação do suporte ao ModemManager no Solid (camada de abstração de hardware do KDE) utilizei meu modem Sony MD300 para fazer os testes. Antigamente usava o Claro 3G 500 kbps, atualmente uso o TIM Web 300 kbps por ser mais barato, não por ser melhor. Aliás 3G no Brasil é um martírio, quando não é a instabilidade e falta de sinal é a lentidão ou os preços abusivos. Agora ainda tem o problema das operadoras estarem abandonando os modelos "ilimitados", que de ilimitados já não tinha quase nada e agora estão limitando mais ainda. Na TIM por exemplo pra navegar sem limite de dados só na velocidade de 300 kbps e depois de 300 MB a velocidade cai para 50 kbps!!! Se quiser mais velocidade fica limitado por tempo, no máximo míseras 120 horas por mês por R$ 109,90, depois disso a única coisa ilimitada é a sua conta porque cobram R$ 0,05 por minuto extra de conexão. Se fizerem as contas por mês dá mais de R$ 360 de excedente só para navegar 8 horas por dia, mesmo levando-se em conta que de madrugada (0:00 - 8:00) não é cobrado nada, isso se o sistema de bilhetagem da TIM não der pau novamente. Pelo menos não vão mexer no meu plano, mas que já começou a aparece problemas começou. Volta e mais depois de várias horas de conexão simplesmente para de trafegar dados, aí tenho que desconectar e conectar novamente para voltar a navegar. Em uma das vezes em que isso aconteceu, de madrugada diga-se de passagem, nem reconectando três vezes eu consegui navegar. Justamente de madrugada quando a rede fica mais livre foi quando eu tive esse problema.

Bem, voltando ao assunto original, pra quem quiser usar o Sony MD300 em um Linux rodando KDE faça o seguinte como usuário root (ou use o sudo):

  1. Instale o networkmanager-0.8 e o modemmanager-0.4;
  2. Crie o arquivo /etc/udev/rules.d/50-md300modem.rules com o seguinte conteúdo:
    		ACTION!="add", GOTO="3G_End"
    SUBSYSTEM=="usb_device", ATTRS{idProduct}=="d0cf", ATTRS{idVendor}=="0fce", PROGRAM+="md300modem.sh %p"
    SUBSYSTEM=="usb", ATTRS{idProduct}=="d0cf", ATTRS{idVendor}=="0fce", KERNEL=="ttyACM*", SYMLINK+="modem3G-%n"
    LABEL="3G_End"
    
  3. Crie o script /lib/udev/md300modem.sh com o seguinte conteúdo:
    		#!/bin/sh
    echo 3 > /sys/$1/device/bConfigurationValue
    sleep 3
    # habilita/ativa o modem, ou seja, liga o rádio dele e o registra na rede da operadora.
    chat -V -s '' "AT +CFUN=1" 'OK' '' < /dev/ttyACM0 > /dev/ttyACM0
  4. Execute: udevadm control --reload-rules;
  5. Clique no ícone do Plasma NM na "bandeja de sistema" (system tray) -> Manage Connections -> Mobile broadband  -> Adicionar -> GSM Connection e crie uma conexão com os seguintes parâmetros:
    		# Para a TIM
    Number: *99#
    Nome do usuário: tim
    Senha: tim
    APN: tim.br
    
    # Para a Claro
    Number: *99#
    Nome do usuário: claro
    Senha: claro
    APN: bandalarga.claro.com.br

    OBS: Alguns celulares só funcionam se o campo "Type" estiver configurado como "Any", o MD300 suporta qualquer um dos ítens listados lá, mas meu celular Samsung i8910 só funciona se estiver como "Any".

  6. Conecte o modem na porta USB, espere até ele se registrar na rede (demora pelo menos uns 30 segundos);
  7. Na tela inicial do Plasma NM clique no nome da conexão que você criou.

Comigo acontece do modem só conectar uma vez no modo ethernet (modo padrão dele), caso queria conectar novamente eu tenho que removê-lo da porta USB e conectá-lo novamente. Não sei por que isso acontece e pelo que uma pessoa me contou no MD300 dele isso não acontece. Estranho que no modo ppp (usado pelo wvdial e kppp) ele não tem esse problema.

Para facilitar a configuração de redes 3G no Plasma NM resolvi portar o "wizard" de configuração que existe no nm-applet para o KDE, ainda está no começo e só tenho trabalho nos finais de semana com ele, provavelmente só ficará pronto para o release 4.6 do KDE no início do ano que vem. A tela inicial está assim por enquanto:

 

Para implementá-lo estou estudando como funciona a versão do nm-applet e como funciona o sistema configuração de conexões do Plasma NM, leva um bom tempo aprender como os dois funcionam então não esperam nada funcional até setembro pelo menos.

Chatisse da Microsoft

 Não, desta vez a chatisse não é em relação ao Linux, inclusive ela afeta todo mundo do Windows Live Messenger (antigo MSN). Há alguns dias eles fizeram uma atualização no Windows Live e agora toda vez que alguém loga no hotmail a versão web do WLM inicia te logando no WLM, assim como acontece com o Gtalk no Gmail. Diferentemente no Gtalk toda vez que se loga no WLM ele te desloga de outros clientes WLM, no meu caso o Kopete, só que eu quero só ler e-mails, não quero que me logue no Web WLM, mas será que a Microsoft sabe disso? Olhando no Hotmail não existe opção para desabilitar isso, como sempre a Microsoft empurando as coisas "goela à baixo" pra todos os usuários dos programas dela. Só descobri como "marretar" isso no fórum no Windows Live: é só bloquear os cookies que vem da máquina geo.messenger.services.live.com.

No Konqueror (temos que dar uma pouco de crédito a ele hehe) vá em Configurações -> Configurar Konqueror -> Cookies -> Novo -> digitar geo.messenger.services.live.com e clicar em Ok.

No Chrome vá em Opções -> Configurações avançadas -> Configuração de conteúdo -> Exceções -> Adicionar -> digitar geo.messenger.services.live.com e clicar em Ok.

No Firefox vá em Editar -> Preferências -> Privacidade -> Exceções -> digitar geo.messenger.services.live.com -> Bloquear -> Fechar

 

Esses são os navegadores que tenho instalado aqui, em outros muito provavelmente existem opções para bloquear cookies, é só usá-las.

Akademy 2010: Volta para Casa

Depois de 11 dias de viagem pela Europa (um dia e meio quase que só dentro de aviões e aeroportos) estamos de volta. Esse foi meu primeiro Akademy e foi realmente inesquecível, adorei ter ido. Além do monte de fotos teve a tradicional foto em grupo (vamos lá, podem brincar de "Onde está Wally?" comigo hehe) e o "day trip", que foi muito divertido. A viagem não foi só diversão, eu a Amanda tivemos algumas reuniões com o pessoal do KDE da Europa pra decidir algumas formas de promover o KDE pelo mundo, foi muito bom conversar pessoalmente com eles. Também tive uma reunião com os desenvolvedores do Solid, dentre outras coisas decidimos que algumas coisas no Solid serão "deprecated" (obsoletadas) no KDE SC 4.5 para serem removidas talvez no KDE SC 4.6 até o ano que vem. Precisamos de mais gente trabalho no Solid, principalmente no backend de udev, eu já estou trabalho nos backends do Modem Manager (como mantenedor) e no do Network Manager (contribuidor), também vou ajudar no backend no udev porque ele é muito importante para o KDE, mesmo assim precisamos de mais gente pra ajudar a implementá-lo. Também aproveitei e tirei a certificação de Qt da Nokia, que era de graça para quem participasse do Akademy Smile Ano que vem tem Akademy novamente e eu estarei lá Laughing out loud

O meu amigo na foto abaixo é um membro da COSS (Centro para Soluções de Código Aberto) da Finlândia. A COSS ajudou a organizar o Akademy deste ano então meus parabéns para eles porque tudo saiu perfeito, ótima organização.

 

Akademy 2010

Olá pessoal, estamos eu e a Amanda do KDE-MG aqui em Tampere (Finlândia). Para a nossa supresa não está fazendo nem um pingo de frio por aqui (chega a 30C aqui no verão). Outra coisa bem inusitada também é o sol, que se põe por poucas horas,aqui por exemplo são 1:09  e está bem claro lá fora. O Sandro do Live Blue (grupo de KDE da Bahia) até brinca dizendo que acorda de manhã, vai almoçar de manhã, janta de manhã e dorme de manhã pois tem sol praticamente o dia todo, a foto abaixo foi tirada a 22:24 (vinte e duas hora e 24 minutos da noite, meu celular ainda está no fuso horário de Brasília, por isso ele marca 16:24 no EXIF da foto):

 

 

Local do evento:

 

Legal que já conheci vários desenvolvedores do KDE pessoalmente, Lydia, Celeste, Jos, Nuno Pinheiro, logicamente conheci outras pessoas por aqui mas não me lembro dos nomes (foi mal pessoal). Está bem legal o evento e a cidade é bem interessante, várias coisas diferentes do que vemos no Brasil: cidade super limpa, todo mundo atravessa a rua na faixa, ninguém grita na rua pra charmar outra pessoa (só os turistas como nós hehe) e muitas loiras, mas tem morenas por aqui também. O evento está só no início, só na quarta que eu tenho um compromisso marcado com o pessoal do solid, o restante do tempo só assistindo palestras e ajudando alguns amigos. Ainda tem bastante palestras para ver e no meio tempo nós vamos descobrindo como nos divertir na terra do Linus Torvalds Smile

Suporte Completo ao Modem Manager 0.4 no Solid

Hoje terminei de implementar o suporte ao Modem Manager 0.4 no solid. Ainda preciso terminar algumas coisas (adicionar alguns comentários e implementar cache de algumas informações para não ficar acessado o barramento do DBus o tempo todo). Agora eu preciso é que me ajudem com testes, meu modem Sony MD300 suporta menos de 1/3 da especificação, nada das interfaces Location, Cdma, Location, Gsm.SMS, Gsm.Hso e Gsm.Ussd funciona com ele, mesmo assim eu implementei essas interfaces. Quando o trunk abrir para novas implementações semana que vem eu vou fazer commit do patch.

Pra quem gosta de estatística o patch adiciona 128 arquivos ao trunk, modifica outros 23 arquivos, tem 400 KB de tamanho e demorei 8 semanas para chegar nesse ponto.

Três Semanas...

Para o início da viagem para o Akademy 2010, ainda tenho alguns preparativos para fazer e espero que corra tudo bem. Já tem um tempo que não ouço falar do tal vulcão islandês, espero que ele continue calminho até o  meio de julho hehe. Bem, nessa viagem para o Akademy vou conhecer alguns dos desenvolvedores do Plasma NM, tenho trabalho bastante nele e depois que colocá-lo no trunk do svn é bem provável que apareçam bugs que eu ainda não descobri então é melhor terminar a implementação o quanto antes, de preferência antes da viagem.

Nova atualização

Implementei mais algumas interfaces da especificação do ModemManager:

 

 

Ainda tem mais detalhes do modem/conexão para acrescentar na janela, mas estou com falta de tempo para fazer. O patch para o ModemManager mexe em 86 arquivos e esse patch para o Plasma Network Management mexe em outros 28 arquivos, por enquanto estou gerenciando esses arquivos fora do svn do KDE porque o trunk do svn está fechado para novas características (features), então vou ter que fazer isso até o KDE SC 4.5.0 ser liberado (em agosto).

 

A implementação também está mais lenta do que pensava porque o MM faz algumas coisas diferentes do NM e por isso tive que quebrar a cabeça pra resolver alguns problemas que essas diferenças trouxeram. Outro problema que tenho que resolver é o tamanho dessa janela, que fica muito grande quando todos os detalhes são exibidos. Talvez eu acrescente outra aba e mova algumas coisas para lá. Também pretendo implementar a seleção de quais detalhes exibir, mas só quando tiver mais tempo.

Backend do Solid para ModemManager

Bem, depois de muito trabalho neste final de semana eu terminei de alterar o patch que já tinha feito para funcionar como um verdadeiro backend do solid. Mas deu trabalho, muita coisa para mudar de lugar, arquivos para acrescentar, decidir como juntar algumas interfaces do MM em uma classe só pra simplificar o código e... corrigir os bugs. Um em particular me tomou um tempasso. Uma das classes que criei, ModemGsmNetworkInterface, herda da ModemInterface e declarava um d_ptr sendo que não deveria, somente a ModemInterface deveria declarar esse apontador. Por causa desse bug toda vez que se criava um objeto do tipo ModemGsmNetworkInterface e tentava usar um dos métodos pertencente a ele o programa morreria. Essse deu trabalho pra descobrir, depois dele ainda tive que resolver um loop infinito, brigar com os strings dos signals e slots, se você vê muitas mensagens "No such signal" (ou slot) no seu ~/.xsession-errors você sabe do que estou falando. No final quase tudo funcionou, ainda tem um problema de na hora de desconectar o modem da porta USB o programa morrer. Isso é porque um dos objetos se torna inválido e o código ainda não detecta isso. Vou corrigir isso no próximo final de semana, agora eu preciso é de descanso e ainda tenho um monte de coisa para fazer durante essa semana. Nesse ritmo acho que eu termino essa parte do solid até o fim de junho.

Divulgar conteúdo